2013-01-11 131 views
1

我使用Java基準測試(SPECJbb),但發現大頁面(每頁2M)啓用時性能下降。我們的服務器是基於arch的NUMA,擁有80個內核(啓用HT時爲160個邏輯cpu)和260G內存。大頁面性能下降

該基準消耗大約200G內存,所以我在內核大頁面池中分配了200G大。但性能下降了6%~8%。我想我應該有一些性能提升,因爲這個基準測試使用了200G內存。

我的問題是關於在什麼情況下使用大頁面會降低性能? 我們的操作系統是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

嗨,我通過使用root運行我的基準來解決了這個問題。看來JVM使用SYS5風格的API分配巨大的頁面池,這需要root權限。 – Sili