一、问题背景:
在某厂商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上大页内存的占用量。
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的绑定情况不变。
在实际使用中,可以根据场景选择合适的方法。