VM中的大页面大小未增加到1G

问题描述 投票:-1回答:2

我正在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 /boot/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。

centos operating-system esxi dpdk huge-pages
2个回答
1
投票

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

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

因此,要在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 none / dev / hugepages2M

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

    #服务重启libvirtd

现在可以为访客提供1 GB的大页面。

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

:最后,虚拟机管理程序供应商可能需要几个生产周期才能完全采用大页面。例如,VMware的ESX服务器当前在虚拟机管理程序中不支持1GB大页面,即使x86-64系统上的访客可以使用它们。
  • 来自VMWare的旧pdf:“大页面性能。ESXServer 3.5和ESX Server 3i v3.5”。https://www.vmware.com/content/dam/digitalmarketing/vmware/en/pdf/techpaper/large_pg_performance.pdf---仅列出2MB的大页面受支持]
  • 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位虚拟机以利用大型页。


0
投票

将主机cpu传递到VM对我有用,这会给VM pdpe1gb cpu标志。

© www.soinside.com 2019 - 2024. All rights reserved.