文档
注册
评分
提单
论坛
小智

NUMA优化,减少跨NUMA访问内存

原理

通过鲲鹏处理器NUMA简介章节可以看到不同NUMA内的CPU core访问同一个位置的内存,性能不同。内存访问延时从高到低为:跨CPU > 跨NUMA不跨CPU > NUMA内。

因此在应用程序运行时要尽可能的避免跨NUMA访问内存,我们可以通过设置线程的CPU亲和性来实现。

修改方式

  • 网络可以通过如下方式绑定运行的CPU core,其中$cpuNumber是core的编号,从0开始;$irq为网卡队列中断号。
    echo $cpuNumber > /proc/irq/$irq/smp_affinity_list
  • 通过numactl启动程序,如下面的启动命令表示启动test程序,只能在CPU core 28到core31运行(-C控制)。
    numactl -C 28-31 ./test
  • 在C/C++代码中通过sched_setaffinity函数来设置线程亲和性。
  • 很多开源软件已经支持在自带的配置文件中修改线程的亲和性,例如Nginx可以修改nginx.conf文件中的worker_cpu_affinity参数来设置Nginx线程亲和性。
搜索结果
找到“0”个结果

当前产品无相关内容

未找到相关内容,请尝试其他搜索词