[原] 细说 NUMA

详说 NUMA

标签(空格分隔): Cloud2.0


测试条件

两台机器:
CPU:
Intel(R) Xeon(R) CPU E5-2620 v3 @ 2.40GHz X 24
Intel(R) Xeon(R) CPU E5-2680 v2 @ 2.80GHz X 40

背景知识

![300px-NUMA.svg.png-10.1kB][1]

简要的说一下NUMA架构,更多的资料请google,本文只针对NUMA做一些特定点的测试,论证网上很多关于NUMA的流言蜚语.

测试过程

  • NUMA 结构下,某个CPU SOCKET NODE 无内存的情况下,会使用交换分区还是使用其他 NODE 的内存 ?
    NUMA 信息如下, 看到 node 0 和 node 1 的内存都还剩下42G 左右,那在 cpu0 上占用64G 的内存,剩下的22G会不会使用到交换分区,还是使用 node 1 的内存呢?
root@ip-10-21-184-4:/home/zhangbo3# numactl --hardware
available: 2 nodes (0-1)
node 0 cpus: 0 1 2 3 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29
node 0 size: 64141 MB
node 0 free: 42625 MB
node 1 cpus: 10 11 12 13 14 15 16 17 18 19 30 31 32 33 34 35 36 37 38 39
node 1 size: 64509 MB
node 1 free: 43405 MB
node distances:
node   0   1 
  0:  10  20 
  1:  20  10 

使用 stress 将某个 CPU 的内存沾满,总共 64G

root@ip-10-21-184-4:/home/zhangbo3# stress -m 1 --vm-bytes 64G --vm-keep
stress: info: [23651] dispatching hogs: 0 cpu, 0 io, 1 vm, 0 hdd

查看内存使用情况

root@ip-10-21-184-4:/home/zhangbo3# numastat -p 23652

Per-node process memory usage (in MBs) for PID 23652 (stress)
                           Node 0          Node 1           Total
                  --------------- --------------- ---------------
Huge                         0.00            0.00            0.00
Heap                         0.00            0.00            0.00
Stack                        0.00            0.01            0.01
Private                  44313.61        21222.64        65536.25
----------------  --------------- --------------- ---------------
Total                    44313.61        21222.66        65536.27

统计结果发现并没有使用交换分区,而是使用到了 Node1 的内存,系统并没有那么傻,有内存不用而使用交换分区.

是否是因为numa balancing参数导致?
我们关闭 numa balancing 再测试一次
echo 0 > /proc/sys/kernel/numa_balancing

root@ip-10-21-184-4:/home/zhangbo3# numastat -p 24003

Per-node process memory usage (in MBs) for PID 24003 (stress)
                           Node 0          Node 1           Total
                  --------------- --------------- ---------------
Huge                         0.00            0.00            0.00
Heap                         0.00            0.00            0.00
Stack                        0.00            0.01            0.01
Private                  44318.18        21218.07        65536.25
----------------  --------------- --------------- ---------------
Total                    44318.18        21218.08        65536.26

结果仍然是一样。

  • NUMA 结构下,跨 NODE 访问和 NODE 本地访问的效率差别是多少?

打开NUMA
cpu 与 mem 不在同一个 node 情况下,写内存速度

root@ip-10-21-184-4:/home/zhangbo3# numactl --cpubind=0 --membind=0 dd if=/dev/zero of=/dev/shm/local bs=20M count=1024
1024+0 records in
1024+0 records out
21474836480 bytes (21 GB) copied, 9.14673 s, 2.3 GB/s

cpu 与 mem 在同一个 node 情况下,读内存速度

root@ip-10-21-184-4:/home/zhangbo3# numactl --cpubind=0 --membind=0 dd of=/dev/null if=/dev/shm/local bs=20M count=1024
1024+0 records in
1024+0 records out
21474836480 bytes (21 GB) copied, 5.22966 s, 4.1 GB/s

cpu 与 mem 不在同一个 node 情况下,写内存速度

numactl --cpubind=0 --membind=1 dd if=/dev/zero of=/dev/shm/remote bs=20M count=1024
1024+0 records in
1024+0 records out
21474836480 bytes (21 GB) copied, 12.2229 s, 1.8 GB/s

cpu 与 mem 不在同一个 socket 情况下,读内存速度

root@ip-10-21-184-4:/home/zhangbo3# numactl --cpubind=0 --membind=1 dd of=/dev/null if=/dev/shm/B bs=20M count=1024
1024+0 records in
1024+0 records out
21474836480 bytes (21 GB) copied, 7.31183 s, 2.9 GB/s

关闭NUMA

写效率

numactl --cpubind=0 --membind=0 dd if=/dev/zero of=/dev/shm/1 bs=20MB count=1024
1024+0 records in
1024+0 records out
20480000000 bytes (20 GB) copied, 10.8606 s, 1.9 GB/s

读效率

root@ip-10-21-184-243:/home/zhangbo3# numactl --cpubind=0 --membind=0 dd of=/dev/null if=/dev/shm/A bs=20MB count=1024
1024+0 records in
1024+0 records out
20480000000 bytes (20 GB) copied, 5.41376 s, 3.8 GB/s

以上测试只作为一个基准测试,并不代表真实的内存访问或写入速率.

结论

  1. NUMA 架构情况下,并不会导致到某个node内存不够的情况下,使用到交换分区而不使用其他内存的数据,可能这跟node1 上的内存比较充裕有关,但是node1上内存不够的情况下,大家都使用交换分区,并没有什么不妥。
  2. 大多数情况下,还是建议打开NUMA,特别是在CPU核数比较多的情况下,local memory access 还是快很多,毕竟大部分情况下不会出现remote memory access。
    [1]: http://static.zybuluo.com/mr8/kuz5e78l2cc8nvw5j2rqr59s/300px-NUMA.svg.png
posted @ 2016-05-16 10:02  _Boz  阅读(1702)  评论(0编辑  收藏  举报
4AI?Z:cp1z?_RJQle1]Gs;P!T)RHroW|