2014-02-17 4 views
0

소개 :-XX : parallelGCThreads = 8은 Amdahl의 법칙과 관련하여 코어 수와 관련이 있습니까?

나는 현재 소프트웨어의 조각 작업을하고 어디 벤치 마크 멀티 스레드 하나에 순차적 프로그램. 내 하드웨어에는 24 개의 코어와 16GB의 RAM이 있습니다. 내 프로그램은 Java로 작성되었지만 플로팅 (plotting)의 필요성 때문에 MATLAB에서 실행되었습니다. MATLAB 개방하면 다음 메시지가 표시된다 :

Picked up JAVA_TOOL:OPTIONS: -XX:parallelGCThreads = 8 - Xmx8g -Dsun.java2d.pmoffscreen = false 

이론 지금 Amdahl's Law 따라 maksimum 성능 증가는 1/(B- (1-B)/P)로 정의 될

여기서 B는 연속 분수이고 P는 프로세서 수입니다. 제 경우 는 제가 parallelGCThreads 알기가 최대이고, 이것은 이제 좀 약 20

이론적 최대 성능 향상을 제공 B = 0.01, (1-B = 0.99) 및 P = 24 것을 가지고 g 용 가능한 가비지 콜렉터 스레드 수. 내 프로그램에 대한 집중적 인 테스트를 한 후에는 최대 비율 증가가 7.5인데 이는 이론적 인 20 점 근처가 아니 었습니다. 그러나 P = 8을 대체하면 이론적으로 7.8 내 프로그램에서 얻은 것과 매우 가깝습니다.

질문

parallelGCThreads 실제로 암달의 법칙은 P = 8이 아닌 P = (24)와 함께 사용해야 있도록 스레드의 양을 제한합니까?

미리 감사드립니다.

답변

1

실제로 parallelGCThreads는 Amdahl의 법칙을 P = 8로 사용하고 P = 24로 사용하지 말아야하는 스레드의 양을 실제로 제한합니까?

아니요. GC 스레드의 수는 "실제"작업을 수행하는 동안 프로그램 성능에 직접적인 영향을 미치지 않습니다. (프로그램이 많은 쓰레기를 생성하지만 프로그램이 복잡해지면 영향을 줄 수 있습니다 ... Amdahl 방정식에서 P을 대체하지 않습니다.)

parallelGCThreads 매개 변수를 조정하여 효과가 있지만, 멀티 스레드 성능에 영향을주는 다른 것 (GC 아님)이 예상보다 느린 속도 증가율을 초래할 수 있습니다. 대부분 응용 프로그램과 관련이 있습니다. 예 : 메모리 대역폭 경합 또는 Java 잠금 경합.

FWIW - 다중 스레드 프로그램이 Amdahl의 법칙에 의해 설정된 이론적 한계에 가까워지는 것은 드문 일입니다.

+0

귀하의 thourough 답변 주셔서 감사합니다, 나는 아주 많이 apreciate. 당신은이 문제와 관련된 모든 것에 거의 대답합니다. Amadahls 비율이 19.5 일 때 7.5의 속도 비율을 얻는 것이 정상입니까? 평소 '용의자'가 내 프로그램 속도를 늦추는 것에 대해 어떻게 생각하십니까? 당신은 그들을 식별하기 위해 무엇을 할 것입니까? – SteewDK