虚拟化场景下如何开启并配置大页内存
问题现象描述
测试场景:虚拟机上部署MariaDB,远端压力服务器上部署Sysbench。
通过使用Sysbench对MariaDB进行1比1混合读写操作,测试分为8/16/32/64/128/256/512线程。服务上虚拟出两台4C24G虚拟机,虚拟化平台为KVM,两台虚拟机位于不同的片上,两个虚拟机使用不同网卡,Sysbench部署在一台远端服务器上,通过网线直连服务器上两块网卡。测试连线图如下:
关键过程、根本原因分析
虚拟机在hostos上是一个进程,4C24G规格表示虚拟机进程运行需要24G内存,使用大页内存可以减少内存页和管理虚拟地址,减少内存页面的换入换出,提高内存的整体性能。NFV商用场景下,通常也是会开启大页内存。
结论、解决方案及效果
虚拟机需要大量的内存,开启大页内存可以提高TLB命中率,从而提高系统性能。
- 查看OS使用的大页内存。
cat /proc/meminfo |grep Huge
- 在虚拟机xml中增加如下配置以开启大页内存。
<memoryBacking> <hugepages/> </memoryBacking> <numatune> <memory mode='strict' nodeset='2'/> </numatune>
其中,nodeset='2'表示使用NUMA节点2的内存。
- 在Host OS中配置大页内存。
echo 56 > /sys/devices/system/node/node2/hugepages/hugepages-524288kB/nr_hugepages
其中,56表示大页的数量。请确保大页数*512MB大于虚拟机内存,以确保虚拟机可以启动。
父主题: 其他