温馨提示×

Linux进程优先级怎么调

小樊
46
2026-07-21 20:09:43
栏目: 智能运维

在 Linux 中,进程优先级主要通过 nice 值实时优先级 来调节。下面按常见场景系统说明。


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

1️⃣ 基本概念

  • nice 值范围-2019
    • 越小 → 优先级越高(越“不 nice”)
    • 越大 → 优先级越低
  • 默认 nice 值:0
  • 只有 root 才能设置为负值

nice 值影响的是 CPU 调度权重,不是绝对顺序。


2️⃣ 启动时设置 nice

nice -n 10 command

示例:

nice -n -5 ./app

3️⃣ 调整已运行进程(renice)

renice -n 10 -p PID

示例:

renice -n -10 -p 1234

查看 PID:

ps -ef | grep app

4️⃣ 查看 nice 值

ps -l

或:

top

字段说明:

  • NI:nice 值
  • PR:内核优先级(PR = 20 + NI)

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

⚠️ 慎用,可能导致系统卡死

1️⃣ 实时优先级范围

  • 1 ~ 99
  • 值越大,优先级越高

2️⃣ 使用 chrt 设置实时优先级

查看当前调度策略

chrt -p PID

设置为实时调度(RR)

chrt -r -p 50 PID

启动时设置

chrt -r 50 command

3️⃣ 常见调度策略

策略 说明
SCHED_OTHER 普通进程(默认)
SCHED_FIFO 实时,先到先服务
SCHED_RR 实时,时间片轮转

三、CPU 亲和性(绑定 CPU)

虽然不是“优先级”,但常一起用。

taskset -c 0,1 command

或:

taskset -pc 0,1 PID

四、systemd 服务设置优先级

[Service]
Nice=-10
CPUSchedulingPolicy=rr
CPUSchedulingPriority=50

五、常见建议

✅ 普通程序:用 nice
✅ 后台任务:适当提高 nice(如 10)
✅ 实时任务:用 chrt,但要小心
❌ 不要随意给普通进程设置 -20


六、总结速查表

需求 命令
启动设置优先级 nice -n N cmd
修改运行中进程 renice -n N -p PID
实时优先级 chrt -r -p N PID
查看优先级 ps -l / top
绑定 CPU taskset

如果你有具体场景(比如 数据库、实时音视频、容器、服务器卡顿),可以告诉我,我可以给你更精确的调优方案。

0