linux服务器numactl + taskset缓解“一核有难,N核围观”

本文介绍如何利用numactl和taskset工具调整Linux系统的CPU资源分配,解决‘一核跑满,N核围观’的问题。通过具体命令示例,展示了如何将程序绑定到特定CPU核心上运行,提高程序执行效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

linux服务器numactl + taskset缓解“一核有难,N核围观”


前言

今天用htop查看cpu,看到“一核跑满,N核围观”。又不想写多线程代码,故出此下策。

一、numactl

numactl是手工调优numa的工具。NUMA(Non-Uniform Memory Access)字面直译为“非一致性内存访问”,是一种CPU的管理模式,可以通过node配置CPU的多core。

numactl --hardware # 查看CPU的node情况
numactl --cpubind=0 --membind=0 python a.py # 在cpu的第一个node上执行
numactl --cpubind=1 --membind=1 python b.py # 在cpu的第二个node上执行

这个命令可以指定不同的cpu node执行不同的任务,但根据Node->Socket->Core->Processor的顺序,我们还是不能操作同一个node下的不同core。

不相关知识:socket是物理概念,指的是主板上CPU插槽;node是逻辑概念,对应于socket。core是物理概念,一个独立的硬件执行单元,对应于物理CPU;thread = 逻辑CPU = Processor,thread是逻辑CPU,也就是Processor。

二、taskset

在Linux上,可以通过 taskset命令修改进程的“CPU亲和力”.
对运行中的进程,可以用下面的命令,把CPU core#1 #2 #3分配给PID为2345的进程:
taskset -cp 1,2,3 2345
2、指定进程在某个cpu上运行:
taskset -c 1 python c.py

总结:numactl + taskset

numactl + taskset一起用可以把程序分配到每个核,emmm,不过有可能不用numactl也可以。。。样例代码:
CUDA_VISIBLE_DEVICES=0 numactl --cpubind=0 --membind=0 taskset -c 14 python c.py

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值