2012-06-13 2 views
2

클래식 작업자 풀 모델을 기반으로 스칼라 응용 프로그램 서버를 만들려고합니다.Scala : corePool Actor 성능을 최대화하는 크기입니다.

  1. 기계가 쿼드 코어 프로세서
  2. 작업자 배우가 아닌 모든 차단 듣고 네트워크를 차단 I/O에 전념 스케줄러 배우가 있습니다 는 점을 감안.

성능을 최대화하기위한 corePoolSize의 최적 값은 무엇입니까? 작업자 스레드 풀 크기가 프로세서 코어 수와 같을 때 성능이 최대가되는 것이 가장 이상적입니다. 그래서이 경우 가장 좋은 값은 5 (스케줄러의 경우 1, 직원의 경우 4)이거나 또는 값을 4로 설정하고 스케줄러 액터의 스케쥴러 메소드를 오버라이드하여 스레드 풀을 작업자와 공유하지 마십시오.

이 정보가 맞습니까? 어떤 충고라도 받아 들였다. 감사합니다.

답변

6

몇 가지 힌트.

작업자 스레드 풀의 크기가 프로세서 코어 수와 같을 때 성능이 최대가되는 것이 이상적입니다.

아니요. N = number of threadsC = number of CPU cores는, U = target CPU utilization rate는, W/C = Waiting time to Computing time ratio

N = C * U * (1 + W/C) 

(대기 시간을 의미 IO 등) : 여기 당신이 최대 처리량을 얻을 수있는 스레드의 수를 추정 할 수있는 방법입니다.

그러나 위의 수식은 CPU 만 고려하며 CPU 만 관리 할 리소스가 아닙니다. 응답 시간에 대한 조정은 약간 다른 문제 일 수도 있습니다.

진부한 대답은 무엇이 최선의 선택인지보기 위해 테스트해야한다는 것입니다. 아마 위의 공식을 시작점으로 사용할 수 있습니다. 핵심 풀 크기! = 최대 풀 크기입니다.

+0

답변 주셔서 감사합니다. 도움이되었습니다. :) –

관련 문제