searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

修改VM的numa大页内存绑定

2023-10-23 01:53:42
116
0

一、问题背景:

       在某厂商5GC上云的过程中,一个厂商客户要求VM使用单numa,但天翼云实际创建的VM却是两numa。如下图所示:

       

      使用两个numa,会导致大页内存在两个numa上平分,而客户的5GC网元仅使用其中的一个numa,进而导致在任一numa上的大页内存不足,5GC业务启动失败。客户要求单numa的大页内存最少8G,但实际却仅占用6G,如下图所示:

     

二、解决办法:

      为了解决numa占用的大页内存不足的问题,有如下三个解决办法 :

      1、方法一:扩大VM内存规格,给VM分配更多的内存,就会有更多的大页内存可以分配,这样,两个numa上的大页内存就会满足客户要求的内存规格。

           该方法存在以下弊端:

            1)需要重新拉起VM,重新在k8s纳管VM,重新部署5GC网元,会消耗较多的人力及时间。

            2)分配的内存远大于客户的要求,会导致资源的浪费。

      2、方法二:修改两个numa上大页内存的占用量。

            大页内存总量是10G,先把一个numa的大页内存改小,比如改成1G,然后再把另一个numa的大页内存改大,可实现两个numa上的大页内存的占用修改,从而满足客户要求的最少8G的内存规格。
 
            echo 1 > /sys/devices/system/node/node0/hugepages/hugepages-1048576kB/nr_hugepages
            echo 8 > /sys/devices/system/node/node1/hugepages/hugepages-1048576kB/nr_hugepages
 
     
     该方法存在以下弊端:
     在实际中发现,VM占用的大页内存会莫名发生变化,如下图所示,大页内存总量此刻为9G,过一段时间后,大页内存总量又会变为8G:
     
     
      上述问题,暂未找到根因。
 
      3.  方法三:通过修改后台VM的占用资源的方式,实现单VM占用单numa,也就意味着所有的大页内存均分配给一个numa使用,从而满足客户的要求。
      
           1)登录VM所在物理机,virsh list --all,找到该VM。
         

           2)备份VM的配置:这里的XXX.xml即为第1步查出的vm id。

         

           3)修改VM的配置:virsh edit <vm-id>

         

                对VM做如下的修改,因为VM占用内存资源量为24G,所以下图会进行相应的修改:

           

         4)重启该VM:

              virsh destroy/start  <vm-id>

             

         5)通过命令cat /sys/devices/system/node/node*/meminfo | fgrep Hug 查看numa绑定的大页内存的情况,可以看到只有一个numa有大页内存。

             

         6)通过命令lscpu查看numa的绑定情况,可以看到只绑定了一个numa,之前为绑定两个numa。

             

      该方法存在以下弊端:

          方法三虽然可以修改VM的numa绑定情况,但没有测试在VM迁移、重建等场景下,是否可以保持numa的绑定情况不变。

      在实际使用中,可以根据场景选择合适的方法。

0条评论
0 / 1000
z****n
8文章数
0粉丝数
z****n
8 文章 | 0 粉丝
原创

修改VM的numa大页内存绑定

2023-10-23 01:53:42
116
0

一、问题背景:

       在某厂商5GC上云的过程中,一个厂商客户要求VM使用单numa,但天翼云实际创建的VM却是两numa。如下图所示:

       

      使用两个numa,会导致大页内存在两个numa上平分,而客户的5GC网元仅使用其中的一个numa,进而导致在任一numa上的大页内存不足,5GC业务启动失败。客户要求单numa的大页内存最少8G,但实际却仅占用6G,如下图所示:

     

二、解决办法:

      为了解决numa占用的大页内存不足的问题,有如下三个解决办法 :

      1、方法一:扩大VM内存规格,给VM分配更多的内存,就会有更多的大页内存可以分配,这样,两个numa上的大页内存就会满足客户要求的内存规格。

           该方法存在以下弊端:

            1)需要重新拉起VM,重新在k8s纳管VM,重新部署5GC网元,会消耗较多的人力及时间。

            2)分配的内存远大于客户的要求,会导致资源的浪费。

      2、方法二:修改两个numa上大页内存的占用量。

            大页内存总量是10G,先把一个numa的大页内存改小,比如改成1G,然后再把另一个numa的大页内存改大,可实现两个numa上的大页内存的占用修改,从而满足客户要求的最少8G的内存规格。
 
            echo 1 > /sys/devices/system/node/node0/hugepages/hugepages-1048576kB/nr_hugepages
            echo 8 > /sys/devices/system/node/node1/hugepages/hugepages-1048576kB/nr_hugepages
 
     
     该方法存在以下弊端:
     在实际中发现,VM占用的大页内存会莫名发生变化,如下图所示,大页内存总量此刻为9G,过一段时间后,大页内存总量又会变为8G:
     
     
      上述问题,暂未找到根因。
 
      3.  方法三:通过修改后台VM的占用资源的方式,实现单VM占用单numa,也就意味着所有的大页内存均分配给一个numa使用,从而满足客户的要求。
      
           1)登录VM所在物理机,virsh list --all,找到该VM。
         

           2)备份VM的配置:这里的XXX.xml即为第1步查出的vm id。

         

           3)修改VM的配置:virsh edit <vm-id>

         

                对VM做如下的修改,因为VM占用内存资源量为24G,所以下图会进行相应的修改:

           

         4)重启该VM:

              virsh destroy/start  <vm-id>

             

         5)通过命令cat /sys/devices/system/node/node*/meminfo | fgrep Hug 查看numa绑定的大页内存的情况,可以看到只有一个numa有大页内存。

             

         6)通过命令lscpu查看numa的绑定情况,可以看到只绑定了一个numa,之前为绑定两个numa。

             

      该方法存在以下弊端:

          方法三虽然可以修改VM的numa绑定情况,但没有测试在VM迁移、重建等场景下,是否可以保持numa的绑定情况不变。

      在实际使用中,可以根据场景选择合适的方法。

文章来自个人专栏
5GC
8 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
0
0