Ubuntu taskset命令详解(手把手教你设置CPU亲和性)

来源:这里教程网 时间:2026-03-28 13:42:24 作者:

在多核处理器系统中,合理分配进程到特定的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进程绑定CPUtaskset使用教程,它们将帮助你在搜索引擎中快速找到相关资源。

现在,就去你的Ubuntu终端试试吧!

相关推荐

热文推荐