taskset [options] mask command [argument...]
taskset [options] -p [mask] pid
| 选项 | 说明 |
|---|---|
-a, --all-tasks |
操作所有任务(线程) |
-p, --pid |
操作已存在的PID |
-c, --cpu-list |
使用CPU编号列表而不是掩码 |
-V, --version |
显示版本信息 |
-h, --help |
显示帮助信息 |
CPU亲和性可以使用两种格式指定:
-c选项,如0,2,4-6# 查看PID为1234的进程的CPU亲和性
taskset -p 1234
# 输出示例:
pid 1234's current affinity mask: 3
输出3(二进制11)表示进程可以运行在CPU0和CPU1上。
# 将PID为1234的进程绑定到CPU0上(掩码0x1)
taskset -p 0x1 1234
# 将PID为1234的进程绑定到CPU0和CPU2上(掩码0x5,二进制101)
taskset -p 0x5 1234
# 使用-c选项和CPU列表格式
taskset -cp 0,2 1234
# 绑定到CPU1到CPU3
taskset -cp 1-3 1234
# 绑定到CPU0, CPU2, CPU4
taskset -cp 0,2,4 1234
# 启动vim并绑定到CPU0
taskset 0x1 vim file.txt
# 启动nginx并绑定到CPU1和CPU2(使用列表格式)
taskset -c 1,2 /usr/sbin/nginx
# 查看系统CPU信息
lscpu
# 或查看/proc/cpuinfo
grep -c processor /proc/cpuinfo
# 假设系统有4个CPU核心
# 掩码0xF(二进制1111)表示所有4个核心
taskset -p 0xF 1234
# 或使用列表格式
taskset -cp 0-3 1234
# 将科学计算程序绑定到特定的CPU核心,避免上下文切换开销
taskset -c 2,3,6,7 ./scientific_app
# 将MySQL服务绑定到特定的CPU核心
taskset -cp 2-5 $(pgrep mysqld)
# 或启动时绑定
taskset -c 2-5 /usr/sbin/mysqld
# 将实时音频处理进程绑定到独立的CPU核心
taskset -c 3 nice -n -20 arecord -f cd -t raw | sox -t raw -r 44100 -s -w -c 2 - -t wav - | lame - audio.mp3
taskset需要root权限或具有CAP_SYS_NICE能力nice/renice - 调整进程优先级chrt - 设置或检索进程的实时属性numactl - 控制NUMA内存策略lscpu - 显示CPU架构信息