NUMA的诞生是为了解决SMP架构下不断增多的CPU Core导致的性能问题,NUMA调整了CPU和内存的布局和访问关系。将CPU划分到多个Node节点上,每个Node都有自己独立的内存空间。各个node之间通过高速互联通讯。
CPU访问不同类型节点的内存是不相同的,访问本地节点的速度最快,访问远端节点的速度最慢,即访问速度与节点的距离有关,距离越远访问速度越慢,即非一致。在NUMA系统中,当linux内核收到内存分配请求时,它会优先从发出请求的CPU本地或邻近的内存node中寻找空闲内存,这种方式称为local allocation。
当网卡PCIe EP、内存、TX&RX CPU 不在同一个Numa上,如果存在数据拷贝,那么就会跨node去访问内存,对于CPU的消耗是比在本node上的消耗多的多的。因此,我们可以尽量使CPU,内存,以及TX&RX CPU均处在一个node上。
1. numa查看
查看网卡处在哪个node的方法如下,如果是-1,表示该主机只有一个node。
cat /sys/bus/pci/devices/0000\:01\:00.0/numa_node
查看node上的cpu以及相应的内存
查看伙伴系统内存