如何增强虚拟机功能 (虚拟机1个cpu2核怎么提升到8核)

第一章 大页内存与小页内存

1.1 小页内存

在Linux系统中,默认情况下,内存管理器将物理内存划分为小页(4KB)或大页(2MB或1GB)的大小。Linux内核会根据需要分配和释放内存,以确保系统的稳定性和性能。

在默认情况下,Linux系统会使用小页内存。小页内存管理器能够更好地处理内存碎片,但是在处理大量内存时,可能会导致性能下降。

1.2 大页内存

大页内存是一种更高效的内存分配方式,它将物理内存划分为更大的内存页,通常是2MB或1GB。相比之下,小页内存通常是4KB。

大页内存可以提高系统的性能,因为它减少了内存管理器的负担。大页内存还可以减少缺页中断的数量,从而提高系统的响应速度。

但是,使用大页内存需要更多的物理内存,并且在处理小量的内存时可能会浪费内存。此外,大页内存的分配和释放需要更长的时间,因为它们的大小更大。

1.3 举个栗子

举个例子,假设系统需要为一个应用程序分配1GB内存,如果使用小页内存,系统将需要分配262144个4KB页。在这种情况下,内存管理器将需要处理262144个页表,这会导致CPU的负载增加,并且可能会导致较高的延迟。

相比之下,使用大页内存可以减少系统的页表数量,从而降低内存管理器的负担。例如,如果使用2MB的大页内存,系统将只需要分配512个页表,这将显著减少CPU的负载和响应时间。

另外,小页内存还可能会导致内存碎片问题。当系统分配和释放大量小页内存时,可能会产生很多碎片,这会使内存管理器更难以找到连续的可用内存块,从而降低性能。

因此,在大量使用内存时,使用大页内存可以提高系统的性能和响应速度。

第二章 如何配置虚拟机使用大页内存

2.1 Fusionsphere OpenStack中配置

1、如果想在Fusionsphere中使用大页内存,需要在CPS中进行配置(https://方向代理地址:8890)2、选择“配置 > 内核参数”,在配置内核参数页面开启自动大页内存并设置大页内存的大小即可(一般会设置为1024M即1G),开启后需要重启主机生效。

如何增强虚拟机功能,如何提升虚拟机的可用空间

重启后可查看内核参数主机组的生效情况,也可以登陆某台主机,使用以下方式查看:

查看 /proc/meminfo 文件:

cat/proc/meminfo

  • ​在输出中查找“HugePages_Total”和“Hugepagesize”字段。如果这些字段存在,则表示系统开启了大页内存,并且“Hugepagesize”字段将显示大页的大小。
  • 例如,以下是包含“HugePages_Total”和“Hugepagesize”字段的示例输出:

MemTotal:131881008kB
MemFree:115646736kB
MemAvailable:124197000kB
Buffers:32000kB
Cached:8918052kB
SwapCached:0kB
Active:9229648kB
Inactive:4845996kB
Active(anon):4443312kB
Inactive(anon):1104812kB
Active(file):4786336kB
Inactive(file):3741184kB
Unevictable:0kB
Mlocked:0kB
SwapTotal:8388604kB
SwapFree:8388604kB
Dirty:496kB
Writeback:0kB
AnonPages:5395160kB
Mapped:1392456kB
Shmem:1182520kB
KReclaimable:1077360kB
Slab:1306016kB
SReclaimable:1077360kB
SUnreclaim:228656kB
KernelStack:19296kB
PageTables:47668kB
NFS_Unstable:0kB
Bounce:0kB
WritebackTmp:0kB
CommitLimit:74977308kB
Committed_AS:10219164kB
VmallocTotal:34359738367kB
VmallocUsed:726788kB
VmallocChunk:34358939728kB
HardwareCorrupted:0kB
AnonHugePages:2064384kB
ShmemHugePages:0kB
ShmemPmdMapped:0kB
HugePages_Total:1024
HugePages_Free:1024
HugePages_Rsvd:0
HugePages_Surp:0
Hugepagesize:2048kB
DirectMap4k:4112384kB
DirectMap2M:131072000kB
DirectMap1G:0kB

在这个示例中,输出中包含“HugePages_Total”和“Hugepagesize”字段,表示系统开启了大页内存,大页大小为2048KB。

如果“HugePages_Total”字段为0,则表示系统未开启大页内存。

总之,要查看系统是否开启了大页内存以及大页大小,可以查看 /proc/meminfo 文件并查找“HugePages_Total”和“Hugepagesize”字段。如果这些字段存在,则表示系统开启了大页内存,并且“Hugepagesize”字段将显示大页的大小。

3、创建规格时,设置对应的大页内存大小即可。

如何增强虚拟机功能,如何提升虚拟机的可用空间

2.2 KVM虚拟机配置

要配置KVM虚拟机使用大页内存,需要执行以下步骤:

  1. 确认主机支持大页内存:运行以下命令检查主机是否支持大页内存:
grep-E'(vmx|svm)'/proc/cpuinfo

如果输出中包含“vmx”或“svm”,则表示主机支持大页内存。

  1. 配置主机使用大页内存:运行以下命令以启用大页内存:
echo1>/sys/kernel/mm/transparent_hugepage/enabled
echoalways>/sys/kernel/mm/transparent_hugepage/defrag

这将启用大页内存并启用自动碎片整理。

  1. 配置KVM虚拟机使用大页内存:在创建虚拟机时,使用以下命令配置虚拟机使用大页内存:
virt-install--namemyvm--ram4096--memorybackinghugepages=yes--vcpus2--cdrom/path/to/iso--diskpath=/var/lib/libvirt/images/myvm.img,size=20--networkdefault--graphicsvnc

这将创建一个名为“myvm”的虚拟机,该虚拟机使用4GB RAM,2个CPU,20GB磁盘空间和默认网络,同时启用大页内存。

对于已存在的虚拟机,可以修改其xml文件使其使用大页内存。要在XML文件中配置KVM虚拟机使用大页内存,需要将以下配置添加到XML文件中:

<memoryBacking>
<hugepages/>
</memoryBacking>

具体来说,可以使用以下步骤在XML文件中配置大页内存:

  1. 打开XML文件并定位到 <memory> 元素。
  2. 在元素内部添加以下代码:
<memoryBacking>
<hugepages/>
</memoryBacking>

  1. 保存XML文件并使用 virsh define 命令重新定义虚拟机。

例如,以下是一个XML文件的示例,其中包含配置大页内存的代码:

<domaintype='kvm'>
<name>myvm</name>
<memoryunit='KiB'>4194304</memory>
<vcpuplacement='static'>2</vcpu>
<os>
<typearch='x86_64'machine='pc-i440fx-2.10'>hvm</type>
<bootdev='hd'/>
</os>
<devices>
<disktype='file'device='disk'>
<drivername='qemu'type='qcow2'/>
<sourcefile='/var/lib/libvirt/images/myvm.img'/>
<targetdev='vda'bus='virtio'/>
</disk>
<interfacetype='network'>
<macaddress='52:54:00:2a:2c:6e'/>
<sourcenetwork='default'/>
<modeltype='virtio'/>
</interface>
</devices>
<memoryBacking>
<hugepages/>
</memoryBacking>
</domain>

在这个示例中, <memoryBacking> 元素包含 <hugepages/> 元素,表示该虚拟机将使用大页内存。

总之,要在XML文件中配置KVM虚拟机使用大页内存,只需要在 <memoryBacking> 元素中添加 <hugepages/> 元素即可。

2.3 Nova创建虚拟机时配置

novaboot--flavor<flavor_id>--image<image_id>--nicnet-id=<network_id>--availability-zone<availability_zone>--key-name<key_name>--config-drivetrue--block-device-mappingvda=<volume_id>:::0--hintslarge_page=true<vm_name>

其中, --hints large_page=true 参数启用大页内存。

第三章 总结

使用大页内存可以提高系统的性能,但需要更多的物理内存。要配置KVM虚拟机使用大页内存,需要在主机上启用大页内存,并在创建虚拟机时启用大页内存。

如果您喜欢我的文章,欢迎关注我的同名公众号哦~