Linux调整进程CPU调度优先级的核心是操作nice值(-20至19),其决定内核动态优先级PRI=80+NI;普通用户只能设0–19,root可设-20–19;通过nice、renice或top交互式调整,但负值需特权且非实时进程。

Linux 中调整进程 CPU 调度优先级,核心是操作 nice 值(范围 -20 到 19),它直接影响内核调度器使用的动态优先级(PRI)。值越小,进程越容易被 CPU 选中执行;值越大,越靠后调度。
查看当前进程的优先级信息
用以下命令观察关键字段:
ps -eo pid,ppid,ni,pri,comm --sort=-pri | head -10
或更简洁地:
ps -l
重点关注两列:
- NI:当前 nice 值(用户可调)
-
PRI:内核实际使用的优先级(普通进程默认基线为 80,计算公式为
PRI = 80 + NI)
注意:
PRI是只读显示值,不能直接改;你真正能设的是NI。
启动新进程时指定优先级
用 nice 命令:
nice -n -5 ./myapp # 以更高优先级启动(需 root 权限设负值) nice -n 10 python3 script.py # 以较低优先级运行
- 普通用户只能设
0–19(即降低优先级) - root 用户可设
-20–19
修改正在运行的进程优先级
用 renice 命令:
renice -n -10 -p 1234 # 给 PID 1234 的进程提权(root 才能设负值) renice -n 5 -u www-data # 把所有 www-data 用户的进程 nice 值统一加 5 renice -n 3 -g 5678 # 对进程组 5678 内所有进程生效
-
-n后跟的是 增量值(不是目标值),但多数场景下等效于设置目标 nice 值(因初始值通常已知且固定为 80±基础) - 普通用户只能对自己拥有的进程执行
renice,且只能增大 nice 值(即0–19)
交互式实时调整(适合调试)
运行 top,然后:
- 按
r→ 输入目标 PID → 输入新 nice 值 - 或按
f添加NI列,再按</>键微调(部分 top 版本支持)
注意事项
- nice 值不是“绝对优先级”,而是调度器公平性策略中的权重因子;现代 CFS 调度器(Linux 2.6.23+)采用“乘法效应”,使 -20 和 +19 的实际调度差距远大于线性想象
- 负 nice 值(如 -20)不等于实时进程;实时进程需用
chrt设置SCHED_FIFO或SCHED_RR策略,且需CAP_SYS_NICE权限 - 过高优先级可能挤占系统关键任务(如 sshd、kthreadd),导致响应迟滞甚至假死,慎用
不复杂但容易忽略。


















