關于CentOS 6下Hadoop占用系統態CPU高的處理辦法
一次不經意發現Hadoop的系統態CPU使用率很高,然后百度一下居然是個已知問題。
RHEL6優化了內存申請的效率,而且在某些場景下對KVM的性能有明顯提升:http://www.linux-kvm.org/wiki/images/9/9e/2010-forum-thp.pdf。
而Hadoop是個高密集型內存運算系統,這個改動似乎給它帶來了副作用。理論上運算型Java程序應該更多的使用用戶態CPU才對,Cloudera官方也推薦關閉THP。于是參考一些文章作了調整:
- # for hadoop , disable thp
- echo never > /sys/kernel/mm/redhat_transparent_hugepage/enabled
- echo never > /sys/kernel/mm/redhat_transparent_hugepage/defrag
作用非常明顯:
效果很明顯,大概12:05分的時候操作的,系統態占用基本消失了。文件Cache使用上升、機器負載下降。
除了手動修改運行時參數之外,還可以修改 /etc/grub.conf 里內核的啟動參數,追加“transparent_hugepage=never”(此選項只對 /sys/kernel/mm/redhat_transparent_hugepage/enabled 有效)。
原本 transparent_hugepage 功能是在內核2.6.38之后才引入的,紅帽在RHEL6就將此功能合并進來、詳細還有待進一步了解。
via : http://hi.baidu.com/higkoo/item/eb5e69c17c6b300a0ad93a00