5、KVM Huge Page Backed Memory
通过为客户机提供巨页后端内存,减少客户机消耗的内存并提高TLB命中率,从而提升KVM性能。x86 CPU通常使用4K内存页,但也有能力使用更大的内存页,x86_32可以使用4MB内存页,x86_64和x86_32 PAE可以使用2MB内存页。x86使用多级页表结构,一般有三级,页目录表->页表->页,所以通过使用巨页,可以减少页目录表和也表对内存的消耗。当然x86有缺页机制,并不是所有代码、数据页面都会驻留在内存中。
首先挂装hugetlbfs文件系统
#mkdir /hugepages
#mount -t hugetlbfs hugetlbfs /hugepages
然后指定巨页需要的内存页面数
#sysctl vm.nr_hugepages=xxx
客户机的XML配置文件使用巨页来分配内存:
<memoryBacking>
<hugepages/>
</memoryBacking>
或用命令行方式:
qemu-kvm -mem-path /hugepages
让系统开机自动挂载hugetlbfs文件系统,在/etc/fstab中添加
hugetlbfs /hugepages hugetlbfs defaults 0 0
在/etc/sysctl.conf中添加如下参数来持久设定巨页文件系统需要的内存页面数
vm.nr_hugepages=xxx
巨页文件系统需要的页面数可以由客户机需要的内存除以页面大小也就是2M来大体估算。
查看巨页内存信息:cat /proc/meminfo |grep Hug
AnonHugePages: 253120 kB
HugePages_Total: 2000
HugePages_Free: 904
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB