在 Linux 中,进程优先级主要通过 nice 值 和 调度策略/优先级(RT priority) 来控制。下面按常见场景给你一个清晰说明。
-20(最高优先级)到 19(最低优先级)nice -n 10 command
示例:
nice -n -5 ./my_program
renicerenice -n 10 -p PID
示例:
renice -n -10 -p 1234
toptoprps -eo pid,ni,comm
或:
top
适用于 实时任务(音频、工业控制等)
| 调度策略 | 说明 |
|---|---|
| SCHED_OTHER | 普通进程(默认) |
| SCHED_FIFO | 实时 FIFO |
| SCHED_RR | 实时轮转 |
chrt -p PID
chrt -f -p 50 command
说明:
-f:SCHED_FIFO-r:SCHED_RR-p 50:实时优先级(1–99,越大越高)chrt -p -f 50 PID
| 操作 | 普通用户 | root |
|---|---|---|
| 提高 nice(负值) | ❌ | ✅ |
| 降低 nice(正值) | ✅ | ✅ |
| 设置实时优先级 | ❌ | ✅ |
#include <sys/time.h>
#include <sys/resource.h>
setpriority(PRIO_PROCESS, 0, 10);
实时调度:
#include <sched.h>
struct sched_param param = { .sched_priority = 50 };
sched_setscheduler(0, SCHED_FIFO, ¶m);
✅ 普通程序调优先级 → 用 nice / renice
✅ 实时程序 → 用 chrt
✅ 优先级越高 → nice 越小 / RT priority 越大
✅ 生产环境慎用负值 / 实时优先级
如果你愿意,可以告诉我:
我可以给你更精确的配置建议。