0%

如何调整进程在CPU上的亲和性与优先级

应用层CPU亲和性控制

taskset使用介绍

1. 什么是taskset?

taskset是一个Linux系统命令行工具,主要用于管理进程与CPU核心之间的关系(CPU亲和性),可以指定进程在特定CPU核心上运行。

2. 为什么要用taskset?

  • 提升性能

    • 减少进程在不同核心间切换开销
    • 提高缓存命中率
    • 适用于计算密集型任务(如视频编码、科学计算)
  • 隔离资源

    • 保护重要进程不受干扰
    • 限制问题进程的影响范围

3. 使用方法

查看进程CPU亲和性

1
2
3
taskset -p [进程PID]
# 示例
taskset -p 1234 # 1234为进程ID

备注:输出结果会显示该进程当前绑定的CPU核心情况,格式类似“pid 1234’s current affinity mask: f”,这里的“f”是一个十六进制数,每一位对应一个CPU核心,1表示绑定,0表示未绑定。

设置进程CPU亲和性

1
2
3
4
5
6
7
8
9
# 新进程绑定
taskset -c [核心编号列表] [命令]
# 示例
taskset -c 0,1 ./video_encoder &

# 已运行进程绑定
taskset -cp [核心编号] [PID]
# 示例
taskset -cp 2 1234

备注:其中“-p”选项用于修改已有进程的CPU亲和性。

4. 注意事项

  • 需要root权限(使用sudo)
  • 核心编号需符合系统实际CPU核心数
  • 避免过度使用,防止系统负载不均衡