作者回复: Java因为跑在JVM里面,除非去修改JVM,否则程序员/运维能够控制的比较有限。但还是可以看情况尽量使用大页面。JVM的启动有一些大页面相关的参数。
作者回复: 如果程序一定要大页面,的确会造成浪费。
如果让操作系统去管理,比如用THP,那么浪费的不会太大。THP会根据情况自适应。
作者回复: Facebook把一些相关技术开源了,你可以参考下,包括HFsort和Bolt。 https://github.com/facebook/hhvm/tree/master/hphp/tools/hfsort; https://github.com/facebookincubator/BOLT
作者回复: 可以在程序里面调用,比如mmap。参考http://man7.org/linux/man-pages/man2/mmap.2.html
作者回复: iTLB的数据肯定不对(load 不可能小于miss);应该是系统(CPU)的问题。
查了一下,好像有些CPU(包括Broad well)的iTLB-loads 被错误的映射到 ITLB_MISSES.STLB_HIT; iTLB-load-misses映射到ITLB_MISSES.MISS_CAUSES_A_WALK。