2013-01-11 3 views
1

Java 벤치 마크 (SPECJbb)로 재생했지만 큰 페이지 (2M 당 페이지 당) 사용으로 성능 저하가 발생했습니다. 우리 서버는 NUMA 아치 기반이며, 80 코어 (HT가 가능할 때 160 논리 CPU)와 260G 메모리를 가지고 있습니다.대형 페이지에서의 성능 저하

벤치 마크는 약 200G 메모리를 소비하므로 커널 대형 페이지 풀에서 200G를 크게 할당했습니다. 그러나 성능은 6%~8%입니다. 나는이 벤치 마크가 200G 메모리를 사용했기 때문에 약간의 성능 향상을 가져야한다고 생각한다.

제 질문은 어떤 상황에서 큰 페이지를 사용하면 성능이 저하됩니까? 우리의 OS는 RHEL6.3입니다. H otSpot JDK 1.6.381.6.37을 시도했는데,이 두 가지 버전 모두 그런 저하를 발견했습니다. 감사.

답변

1

대형 페이지는 대개 최대 5 % 성능 향상을 가져와야합니다.

당신은 큰 페이지가 제대로 할당되었는지 확인해야합니다 :

  • cat /proc/meminfo을보고 실제 대형 페이지 할당 크기
  • 당신의 힙이 얼마나 큰 확인? -XX:+UseLargePages 옵션을 사용하셨습니까? JVM이 큰 페이지를 사용하여 문제가 발생하면 JVM 출력 로그에 경고가 표시됩니다. LargePages + NUMA 아키텍처에 문제가있을 수 있습니다.

또한 문제가있을 수 있습니다. 각 코어에 대해 얼마나 많은 메모리가 있습니까? 참조 :

+1

답장을 보내 주셔서 감사합니다. 이 페이지 http://linux-hacks.blogspot.com/2009/06/using-large-pages.html도 확인했습니다. 저자는 "일부 디버깅 후에는 응용 프로그램이 할당 된 큰 페이지를 사용할 수 없다는 것이 밝혀졌습니다. (이상한 환경 덕분에 ;-))." 나는 그와 같은 증상을 가지고있는 것 같지만 그는 블로그에 진짜 이유를 설명하지 않았다. – Sili

+0

예, 언급했던 링크입니다. JVM이 제공하는 거대한 페이지로 시작할 수 있습니까? JVM 옵션은 무엇입니까? 그리고 오류 메시지가 있습니까? 'HugePages_Free' 숫자는 힙 크기만큼 줄여야합니다. –

+1

안녕하세요, 루트를 사용하여 벤치 마크를 실행하여이 문제를 해결했습니다. JVM은 SYS5 스타일 API를 사용하여 루트 권한이 필요한 거대한 페이지 풀을 할당하는 것으로 보입니다. – Sili