使用内存大页的好处是能保证虚拟机的所有内存在Host上始终以大页形式存在,并且保证物理连续,可以有效的减少TLB Miss,显著提升内存访问密集型业务的性能。在虚拟机使用内存大页的场景下,通过关闭透明大页,可以减少Host侧的开销,使得虚拟机可以获得更稳定的性能。
1
|
cat /sys/devices/system/node/node*/meminfo | grep HugePages_Total |
如果HugePages信息显示为0,说明此时系统没有配置内存大页。
编辑“/boot/efi/EFI/centos/grub.cfg”,添加内容参考如下:
1
|
default_hugepagesz=512M hugepagesz=512M hugepages=300 |
参数含义如下:
如下所示:
不同OS对于内存大页的单位设置不一样,本指导中CentOS 7.6设置为512MB。虚拟化场景,配置内存大页时,至少要预留总内存的15%给Host。用户可据自身业务需求及环境上内存配置计算大页。
1
|
cat /proc/sys/vm/nr_hugepages
|
1
|
openstack flavor set FLAVOR-NAME --property hw:mem_page_size=large |
之后使用该flavor创建虚拟机。
flavor配置可以根据业务实际场景配置,mem_page_size选项参考含义如下:
在计算节点上编辑xml文件,查询实例方法参考虚拟机绑核,配置文件参考如下:
1 2 3 4 5 6 7 8 9 |
<domain type = 'KVM'> ... <memoryBacking> <hugepages> <page size='524288' unit='KiB' nodeset='0'/> </hugepages> </memoryBacking> ... </domain> |
1
|
echo never > /sys/kernel/mm/transparent_hugepage/enabled |
若需要开启,则执行:
1
|
echo always > /sys/kernel/mm/transparent_hugepage/enabled |
适合虚拟数量较少的场景。若虚拟机数量较多,可直接使用小页内存。
大页内存可以分配给虚拟机内存,但虚拟机不一定会使用。如果虚拟机未开启使用大页内存,则会将其识别为小页。