美文网首页
如何提升虚拟机性能?除了绑核还有它可以!

如何提升虚拟机性能?除了绑核还有它可以!

作者: 运维少年 | 来源:发表于2023-07-06 12:09 被阅读0次

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

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

    在这个示例中,输出中包含“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. 配置主机使用大页内存:运行以下命令以启用大页内存:
    echo 1 > /sys/kernel/mm/transparent_hugepage/enabled
    echo always > /sys/kernel/mm/transparent_hugepage/defrag

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

    1. 配置KVM虚拟机使用大页内存:在创建虚拟机时,使用以下命令配置虚拟机使用大页内存:
    virt-install --name myvm --ram 4096 --memorybacking hugepages=yes --vcpus 2 --cdrom /path/to/iso --disk path=/var/lib/libvirt/images/myvm.img,size=20 --network default --graphics vnc

    这将创建一个名为“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文件的示例,其中包含配置大页内存的代码:

    <domain type='kvm'>
      <name>myvm</name>
      <memory unit='KiB'>4194304</memory>
      <vcpu placement='static'>2</vcpu>
      <os>
        <type arch='x86_64' machine='pc-i440fx-2.10'>hvm</type>
        <boot dev='hd'/>
      </os>
      <devices>
        <disk type='file' device='disk'>
          <driver name='qemu' type='qcow2'/>
          <source file='/var/lib/libvirt/images/myvm.img'/>
          <target dev='vda' bus='virtio'/>
        </disk>
        <interface type='network'>
          <mac address='52:54:00:2a:2c:6e'/>
          <source network='default'/>
          <model type='virtio'/>
        </interface>
      </devices>
      <memoryBacking>
        <hugepages/>
      </memoryBacking>
    </domain>

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

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

    2.3 Nova创建虚拟机时配置

    nova boot --flavor <flavor_id> --image <image_id> --nic net-id=<network_id> --availability-zone <availability_zone> --key-name <key_name> --config-drive true --block-device-mapping vda=<volume_id>:::0 --hints large_page=true <vm_name>

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


    第三章 总结

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

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

    本文使用 文章同步助手 同步

    相关文章

    • NUMA 配置

      CPU绑核策略对Libvirt驱动而言,虚拟机的vCPU可以绑定到主机的物理CPU上(pCPU)。这些配置可以改善...

    • Ubuntu基本配置

      Ubuntu卡顿常规解决办法 右键虚拟机,点击设置,可以更改内存和CPU核数大小来提升运行速度,如下(处理器核数建...

    • 关于CPU的浮点运算能力计算

      学了IT那么久,只知道CPU主频不断的提升,核数也越来越多,但是如何理论上计算出不同代CPU性能的提升,还真...

    • kubeadm高可用kubernetes部署

      kubeadm1.19高可用kubernetes部署 预准备 3台2核2G服务器(虚拟机),电脑性能好推荐虚拟机省...

    • pod绑核规则

      pod绑核是按照container来绑定的,如果一个pod有多个container对于不同的container会区...

    • 除了看书,还有什么方式可以提升自己

      “活到老,学到老”这是一句至理名言,但对于大多数离开校园工作的人来说,要做到这一点是不太容易的。 然而这个飞速发展...

    • 除了阅读之外还有什么可以提升自己

      陷入了一个怪圈,由于认可阅读是件好事——有所收获也能触动灵魂,所以对这件事就尤其在意,于是在没有进行这项活动的时候...

    • Android性能优化-网络操作的性能

      Effective Prefetching 关于提升网络操作的性能,除了避免频繁的网络同步操作之外,还可以使用捆绑...

    • Vagrant(3)常用命令

      vagrant除了可以通过配置文件配置虚拟机外, 命令行也是它的一个优势, 它可以通过不同的命令对虚拟机进行操作,...

    • nova 虚拟机超分的注意点

      加入一台物理机有32核cpu,超分比例1.5,那么一个虚拟机最大只能分配到32核虚拟机cpu,当然这个机器上还可以...

    网友评论

        本文标题:如何提升虚拟机性能?除了绑核还有它可以!

        本文链接:https://www.haomeiwen.com/subject/ybzuydtx.html