在多核处理器系统中,合理分配进程到特定的CPU核心上运行,可以显著提升系统性能、降低缓存失效,并减少上下文切换开销。在Ubuntu或其它Linux发行版中,taskset 命令就是用来设置或查看进程的CPU亲和性(CPU affinity)的利器。
本文将从零开始,详细讲解如何使用 taskset 命令,即使你是Linux小白,也能轻松掌握!
什么是CPU亲和性?
CPU亲和性是指操作系统调度器将某个进程(或线程)限制在指定的一个或多个CPU核心上运行的能力。通过绑定进程到特定核心,可以:
提高缓存命中率(因为数据更可能保留在该核心的缓存中)
安装与基本语法
taskset是
util-linux软件包的一部分,在大多数Ubuntu系统中默认已安装。如果没有,可通过以下命令安装:
sudo apt updatesudo apt install util-linux
基本语法如下:
# 查看进程的CPU亲和性taskset -p <PID># 启动新进程并绑定到指定CPUtaskset -c <cpu-list> <command># 修改已有进程的CPU亲和性taskset -cp <cpu-list> <PID>
实战示例
1. 查看当前shell进程的CPU亲和性
taskset -p $$
输出可能类似:
pid 1234's current affinity mask: f。这里的
f是十六进制,表示可以使用前4个CPU核心(二进制为1111)。
2. 启动一个程序并绑定到CPU 0和2
taskset -c 0,2 stress --cpu 1
这会启动
stress工具(需先安装:
sudo apt install stress),并强制它只在CPU 0和2上运行。
3. 修改正在运行的进程的CPU亲和性
假设你有一个PID为5678的进程,想让它只在CPU 1上运行:
taskset -cp 1 5678
成功后会显示:
pid 5678's current affinity list: 1。
注意事项
使用-c参数时,CPU编号从0开始(如4核CPU编号为0,1,2,3) 权限问题:修改其他用户的进程需要root权限 并非所有程序都适合绑定CPU,错误绑定可能导致性能下降 临时绑定不会持久化,重启进程后需重新设置
总结
通过本教程,你应该已经掌握了在Ubuntu系统中使用 taskset命令 来设置 CPU亲和性 的基本方法。无论是优化高性能计算任务,还是调试多线程程序,这项技能都非常实用。
记住关键词:Ubuntu taskset命令、CPU亲和性设置、Linux进程绑定CPU 和 taskset使用教程,它们将帮助你在搜索引擎中快速找到相关资源。
现在,就去你的Ubuntu终端试试吧!
