温馨提示×

linux进程优先级怎么设

小樊
33
2026-08-20 12:47:32
栏目: 智能运维

在 Linux 中,进程优先级主要通过 nice 值调度策略/优先级(RT priority) 来控制。下面按常见场景给你一个清晰说明。


一、普通进程优先级(nice 值)

1️⃣ nice 值是什么?

  • nice 值范围-20(最高优先级)到 19(最低优先级)
  • 默认 nice 值:0
  • nice 越小,优先级越高
  • 只有 root 才能设置负值(提高优先级)

2️⃣ 启动进程时设置 nice

nice -n 10 command

示例:

nice -n -5 ./my_program

3️⃣ 修改已运行进程的 nice 值

方法一:renice

renice -n 10 -p PID

示例:

renice -n -10 -p 1234

方法二:top

  1. 运行 top
  2. r
  3. 输入 PID
  4. 输入 nice 值

4️⃣ 查看 nice 值

ps -eo pid,ni,comm

或:

top

二、实时进程优先级(Real-Time Priority)

适用于 实时任务(音频、工业控制等)

1️⃣ 调度策略

调度策略 说明
SCHED_OTHER 普通进程(默认)
SCHED_FIFO 实时 FIFO
SCHED_RR 实时轮转

2️⃣ 设置实时优先级(chrt)

查看当前调度策略

chrt -p PID

启动时设置

chrt -f -p 50 command

说明:

  • -f:SCHED_FIFO
  • -r:SCHED_RR
  • -p 50:实时优先级(1–99,越大越高)

修改已运行进程

chrt -p -f 50 PID

三、普通用户 vs root 权限

操作 普通用户 root
提高 nice(负值)
降低 nice(正值)
设置实时优先级

四、C / C++ 程序中设置(可选)

#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, &param);

五、简单总结

普通程序调优先级 → 用 nice / renice
实时程序 → 用 chrt
优先级越高 → nice 越小 / RT priority 越大
生产环境慎用负值 / 实时优先级


如果你愿意,可以告诉我:

  • 服务器 / 桌面 / 嵌入式
  • CPU 密集型 / IO 密集型
  • 想优化 某个具体程序

我可以给你更精确的配置建议。

0