当前位置:首页>Linux>linux中的绑核问题

linux中的绑核问题

  • 2026-09-08 22:58:44
linux中的绑核问题
在前面梳理NUMA相关内容时,才发现numactl这个工具,除了可以管理numa之外,还有一个意想不到的用途,那就是绑核。
严格来说,绑核这个特性,相较于本地部署,在云平台中则更为常见。毕竟,对于一些重要程度比较高的应用,将其与一个或者多个cpu核心绑定,从而不受云平台资源弹性伸缩的影响,其收益还是很明显的。
这里,还要用到另外一条命令:numastat:
[root@loaclhost ~]# numastat                           node0numa_hit                  560480numa_miss                      0numa_foreign                   0interleave_hit             53866local_node                560480other_node                     0
说明:
  • numa_hit:打算在该节点上分配内存,最后从这个节点分配的次数。
  • numa_miss:打算在该节点分配内存,最后却从其他节点分配的次数。
  • numa_foreign:打算在其他节点分配内存,最后却从这个节点分配的次数。
  • interleave_hit:采用interleave策略最后从本节点分配。
  • local_node:该节点上的进程在该节点上分配的次数。
  • other_node:其他节点进程在该节点上分配的次数。
由于我这里只有一个CPU,因此输出结果只有一列。如果是4个:
上述几个指标当中,如果发现numa_miss比较高,就说明某个进程和其他numa节点更亲和。这样,就可以把指定的进程绑定到指定的CPU上,从而提高内存命中率。
使用numactl将指定程序绑定到指定的core上:
[root@loaclhost ~]# numactl -C 0-4 /home/dmdba/dmdbms/bin/DmServiceDMSERVERlibnuma: Warning: cpu argument 4 out of range<0-4> is invalid[root@loaclhost ~]# numactl -C 0 /home/dmdba/dmdbms/bin/DmServiceDMSERVER restartStopping DmServiceDMSERVER:                                [ OK ]Starting DmServiceDMSERVER: 上一次登录: 二 3月 28 09:24:33 CST 2026 pts/0 上                                                           [ OK ]
也可以使用taskset,将其绑定到一个core上执行:
[root@loaclhost ~]# taskset -c 0 /home/dmdba/dmdbms/bin/DmServiceDMSERVER restart
参考文档:
  • https://cloud.tencent.com/developer/article/1850622

最新文章

随机文章