温馨提示:本文翻译自stackoverflow.com,查看原文请点击:centos - Hugepagesize is not increasing to 1G in VM
centos dpdk esxi operating-system huge-pages

centos - VM中的Hugepagesize不会增加到1G

发布于 2020-05-24 10:30:35

我在ESXi Sever中使用CentOS VM。我想将Hugepagesize增加到1G。

我点击了以下链接:http : //dpdk-guide.gitlab.io/dpdk-guide/setup/hugepages.html

我执行了小脚本来检查是否支持1 GB:

[root@localhost ~]# if grep pdpe1gb /proc/cpuinfo >/dev/null 2>&1; then echo "1GB supported."; fi
1GB supported.
[root@localhost ~]# 
  1. 我在/ etc / default / grub中添加了default_hugepagesz = 1GB hugepagesz = 1G hugepages = 4。
  2. grub2-mkconfig -o /启动/grub2/grub.cfg
  3. 重新启动虚拟机。

但是我仍然可以看到2048 KB(2MB)的Hugepagesize。

[root@localhost ~]# cat /proc/meminfo | grep -i huge
AnonHugePages:      8192 kB
HugePages_Total:    1024
HugePages_Free:     1024
HugePages_Rsvd:        0
HugePages_Surp:        0
**Hugepagesize:       2048 kB**
[root@localhost ~]# 

以下是虚拟机的详细信息:

[root@localhost ~]# uname -a
Linux localhost.localdomain 3.10.0-514.10.2.el7.x86_64 #1 SMP Fri Mar 3 00:04:05 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
[root@localhost ~]#

[root@localhost ~]# cat /proc/cpuinfo  | grep -i flags
flags       : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts nopl xtopology tsc_reliable nonstop_tsc aperfmperf pni pclmulqdq vmx ssse3 cx16 pcid sse4_1 sse4_2 x2apic popcnt aes xsave avx hypervisor lahf_lm ida arat epb pln pts dtherm tpr_shadow vnmi ept vpid
flags       : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts nopl xtopology tsc_reliable nonstop_tsc aperfmperf pni pclmulqdq vmx ssse3 cx16 pcid sse4_1 sse4_2 x2apic popcnt aes xsave avx hypervisor lahf_lm ida arat epb pln pts dtherm tpr_shadow vnmi ept vpid
[root@localhost ~]# 

为VM分配了8GB的内存和2个CPU。

查看更多

提问者
mbhole
被浏览
3
osgx 2017-06-13 07:36

1GB大页面支持和来宾操作系统支持/启用的CPU标志不足以使1GB大页面在虚拟环境中工作。

在PMD(在PAE和x86_64之前为2MB或4 MB)和PUD级别(1 GB)上都具有大页面的想法是创建从对齐的大尺寸虚拟区域到物理内存的大区域的映射(据我所知,也应该对齐)。通过虚拟化管理程序的附加虚拟化级别,现在有三个(或四个)内存级别:来宾OS中的应用程序虚拟内存,来宾OS认为某些物理内存(这是由虚拟化解决方案管理的内存:ESXi,Xen,KVM ,....),以及实际的物理内存。可以合理地假设,大页面的想法在所有三个级别上都应具有相同大小的大区域(使用更少的TLB未命中,使用更少的页面表结构来描述大量内存-grep“需要大于4KB页面”DickSites的“数据中心计算机:CPU设计中的现代挑战”,Google,2015年2月)。

因此,要在Guest OS中使用某个级别的大页面,您的物理内存(在您的Host OS中)和虚拟化解决方案中应该已经具有相同大小的大页面。当主机OS和虚拟化软件无法使用时,您无法有效地利用Guest内部的巨大页面(类似qemu或bochs可能会模拟它们,但是速度会非常缓慢。)并且当您同时需要2 MB和1 GB的大页面时:CPU,主机操作系统,虚拟系统和来宾操作系统都应支持它们(并且主机系统应具有足够的对齐连续物理内存以分配1 GB页面,您可能无法将此页面拆分为NUMA中的多个套接字。

不知道ESXi,但是有一些链接

程序8.2。引导时分配1 GB的大页面

  1. 要在启动时分配不同大小的大页面,请使用以下命令,指定大页面的数量。本示例分配4个1 GB的大页面和1024 2 MB的大页面:' default_hugepagesz=1G hugepagesz=1G hugepages=4 hugepagesz=2M hugepages=1024'更改此命令行以指定要在启动时分配的不同数量的大页面。

注意在启动时首次分配1 GB的大页面时,还必须完成以下两个步骤。

  1. 在主机上挂载2 MB和1 GB的大页面:

    #mkdir / dev / hugepages1G#mount -t hugetlbfs -o pagesize = 1G无/ dev / hugepages1G#mkdir / dev / hugepages2M#mount -t hugetlbfs -o pagesize = 2M无/ dev / hugepages2M

  2. 重新启动libvirtd以在来宾系统上使用1 GB的大页面:

    #服务重启libvirtd

现在可供来宾使用1 GB的大页面。

通过增加页面大小,可以减少页面表并减少对TLB缓存的压力。... vm.nr_hugepages = 256...重新启动系统(注意:这是关于主机和主机OS的物理重新启动)...设置Libvirt使用大型页面KVM_HUGEPAGES=1...设置来宾使用大型页面

缺乏对大页面的虚拟机管理程序支持:最后,虚拟机管理程序供应商可能需要几个生产周期才能完全采用大页面。例如,VMware的ESX服务器当前不支持虚拟机管理程序中的1GB大页面,即使x86-64系统上的来宾可以使用它们。

我们发现大页面与跨架构(例如ARM,x86-64)和基于容器的技术的一系列虚拟机管理程序(例如ESX,KVM)的轻量级内存管理相冲突。

VMware ESX Server 3.5和VMware ESX Server 3i v3.5为虚拟环境引入了2MB大页面支持。在早期版本的ESX Server中,使用小页面模拟来宾操作系统大页面。这意味着,即使来宾操作系统使用的是大页面,也无法获得减少TLB丢失的性能优势。ESX Server 3.5和ESX Server 3i v3.5中增强的大页面支持使PAE模式下的32位虚拟机和64位虚拟机能够使用大页面。