openstack-NUMA排错记录

生成环境中有使用到numa 技术, 但是对numa 知道也是一知半解。如果有理解错误请大家指正啊。

什么是numa ?

非统一内存访问(NUMA)

内存访问时间取决于处理器的内存位置。 在NUMA下,处理器访问它自己的本地存储器的速度比非本地存储器(存储器的地方到另一个处理器之间共享的处理器或存储器)快一些。

因为同一时间只能有一个处理器访问计算机的存储器,所以在一个系统中可能存在多个处理器在等待访问存储器 ,随着CPU核心数的增加,这样的架构难免遇到问题,比如对总线的带宽带来挑战、访问同一块内存的冲突问题 ,延申出来得解决方法:NUMA 

numa 注意得问题: 

  • 默认情况下,内核不会将内存页面从一个 NUMA Node 迁移到另外一个 NUMA Node;

问题得描述: 

 用户在openstakc  在用一个大的flavor 在指定得compute 节点启虚机失败提示Insufficient compute resources: Requested instance NUMA topology cannot fit the given host NUMA topology 报错 ,检查compute 节点资源充足但是无法创建虚机

排查问题记录: 

1.  检查了创建虚机得flavor 调用资源是有多少,检查compute 节点得资源是否满足

检查虚机使用得flavor

nova flavor show  test-yk-113

+----------------------------+---------------------------------------------------------------+
| Property | Value |
+----------------------------+---------------------------------------------------------------+
| OS-FLV-DISABLED:disabled | False |
| OS-FLV-EXT-DATA:ephemeral | 0 |
| disk | 20 |
| extra_specs | {"hw:cpu_policy": "dedicated", "hw:mem_page_size": "1048576"} |
| id | 1998 |
| name | test-yk-113 |
| os-flavor-access:is_public | True |
| ram | 20480 |
| rxtx_factor | 1.0 |
| swap | |
| vcpus | 20 |
+----------------------------+---------------------------------------------------------------+

检查compute 节点资源  (没有报错compute 资源截图,为了查看用了一台初始得环境得节点) 

nova hypervisor-show    conpute节点

hypervisor_type | QEMU |
| hypervisor_version | 2011001 |
| id | 43 |
| local_gb | 6532 |
| local_gb_used | 0 |
| memory_mb | 515075 |
| memory_mb_used | 0 |
| running_vms | 0 |
| service_disabled_reason | None |
| service_host | ca-compute-0-9.internal.ca.fuel |
| service_id | 121 |
| state | up |
| status | enabled |
| vcpus | 68 |
| vcpus_used | 0 |
+---------------------------+------------------------------------------+

2.  compute 检查资源充足,但是看到我们flavor 使用得HugePages 检查一下我们大页内存

如果配置了大页内存,检查物理节点上的剩余大页内存是否满足需求,我们flavor 的内存应该是小于HugePages_Free:     20  。 这里的应该是20G

cat /sys/devices/system/node/node*/meminfo | fgrep Huge


Node 0 AnonHugePages: 0 kB
Node 0 HugePages_Total: 50
Node 0 HugePages_Free: 20
Node 0 HugePages_Surp: 0
Node 1 AnonHugePages: 0 kB
Node 1 HugePages_Total: 50
Node 1 HugePages_Free: 14
Node 1 HugePages_Surp: 0


HugePages_Total表示目前总共有多少个大页,
HugePages_Free表示程序运行起来之后还剩余多少个大页,
HugePages_Rsvd表示系统当前总共保留的HugePages数目,更具体点就是指程序已经向系统申请,
但是由于程序还没有实质的HugePages读写操作,因此系统尚未实际分配给程序的HugePages数目。
Hugepagesize表示每个大页的大小,在此为1GB。

3. 修改flavor 大小创建虚机验证

修改flavor 大小小于20G

+----------------------------+---------------------------------------------------------------+
| Property | Value |
+----------------------------+---------------------------------------------------------------+
| OS-FLV-DISABLED:disabled | False |
| OS-FLV-EXT-DATA:ephemeral | 0 |
| disk | 20 |
| extra_specs | {"hw:cpu_policy": "dedicated", "hw:mem_page_size": "1048576"} |
| id | 1998 |
| name | test-yk-113 |
| os-flavor-access:is_public | True |
| ram | 18432 |
| rxtx_factor | 1.0 |
| swap | |
| vcpus | 20 |
+----------------------------+---------------------------------------------------------------+

创建虚机检查(创建虚机命令可以查看openstack 创建实例得随笔)

nova list| grep  test-yk

| 9e201369-12ee-4f65-b656-c1210c786f34 | test-yk                  | ACTIVE  | -          | Running     | test=100.100.0.33  

nova show test-yk | grep  flavor

| flavor                               | test-yk-113 (1998)

原文地址:https://www.cnblogs.com/yk0625/p/14037259.html