Linux调整进程优先级的核心是在CFS公平调度下合理影响CPU时间权重,而非粗暴抢占;通过nice值(-20~19)调节权重,进而改变内核PRI值(PRI≈80+NI),最终影响vruntime增长速率与调度概率。

怎么查看当前进程的优先级信息
运行 ps -l 或 ps -o pid,ppid,ni,pri,comm -u $USER 可看到关键字段:
- PRI:内核调度用的动态优先级值,范围通常是60–99,数值越小,实际调度优先级越高;
- NI(nice值):用户可调的修正值,范围−20到19,默认为0;
- 注意:显示的PRI是“当前生效值”,但它的计算基础是固定基准值80,即 PRI = 80 + NI(例如NI=−5 → PRI=75;NI=10 → PRI=90)。
如何调整正在运行的进程优先级
只能通过修改其nice值实现,不能直接改PRI。常用方式有两种:
- top命令交互式调整:运行 top → 按 r → 输入目标进程PID → 输入新nice值(如−5或10)→ 回车确认;
- renice命令批量/脚本化调整:例如 renice -n -5 1234(将PID为1234的进程nice设为−5);也可按用户或组调整,如 renice -n 10 -u www-data。
启动时就指定优先级(更安全、推荐)
避免运行后干预,用 nice 命令前置启动:
- nice -n -10 ./myapp:以高权重(霸道)启动;
- nice -n 15 python3 script.py:以低权重(谦让)启动,减少对系统响应的影响;
- 注意:普通用户只能调高nice值(即降低优先级,如0→15),要调低nice(提升优先级,如0→−5)需root权限。
关键提醒:别误解“抢占”的后果
强行把某个进程nice设为−20,并不会让它独占CPU,CFS仍会保障其他进程获得最低限度的调度机会;但若该进程持续满负荷计算,其他nice值较高的进程(如shell、GUI响应)可能明显变卡——这不是“抢占成功”,而是权重失衡导致的体验恶化。真正的资源协调,靠的是合理设置nice值,而非极端压榨。


















