1 问题
业务同样的程序跑在TDocker、XEN,占用的内存却相差很大。
TDocker:
XEN:
可以看到,虽然VIRT一样,但是程序占用的物理内存却相差6倍。
2 原因分析
经过各种分析,后来levy同学发现关闭transparent hugepage就解决了这个问题。TDocker使用的CentOS6.5的内核,默认开启了transparent hugepage。
# cat /sys/kernel/mm/redhat_transparent_hugepage/enabled
[always] madvise never
关闭transparent hugepage,
#echo never > /sys/kernel/mm/redhat_transparent_hugepage/enabled
#echo never > /sys/kernel/mm/redhat_transparent_hugepage/defrag
重启业务程序,马上见效: