温馨提示×

ubuntu进程优先级如何调

小樊
44
2026-10-12 15:49:31
栏目: 智能运维

在 Ubuntu(Linux)中,进程优先级主要通过 nice 值 和 renice 命令 来调整,也可以使用 chrt 设置实时调度策略。下面按常见场景说明。


一、理解进程优先级

1. nice 值(最常用)

  • nice 值范围:-20(最高优先级)~ 19(最低优先级)
  • 默认 nice 值:0
  • 普通用户:
    • 只能 调低优先级(增大 nice 值)
    • 不能减小 nice 值(提高优先级)
  • root 用户可任意调整

二、启动进程时设置优先级

使用 nice 命令

nice -n 10 ./my_program

表示以 nice=10 启动(低优先级)

提高优先级(需 root):

sudo nice -n -5 ./my_program

三、调整已运行进程的优先级

使用 renice

renice -n 10 -p 1234

将 PID 为 1234 的进程 nice 值改为 10

提高优先级(需 root):

sudo renice -n -5 -p 1234

按用户批量调整:

renice -n 5 -u username

四、查看进程优先级

使用 ps

ps -eo pid,ni,pri,comm
  • NI:nice 值
  • PRI:内核优先级(PRI = 20 + NI)

使用 top / htop

  • top 中看 NI 和 PR 列
  • htop 更直观,可直接 F7 / F8 调整(需权限)

五、实时进程优先级(高级)

使用 chrt

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

查看:

chrt -p 1234

设置为 SCHED_FIFO(实时):

sudo chrt -f 50 1234

常见策略:

  • SCHED_OTHER(默认)
  • SCHED_FIFO
  • SCHED_RR

⚠️ 实时优先级使用不当可能导致系统卡死


六、systemd 服务设置优先级

如果是系统服务:

[Service]
Nice=-5
# 或
CPUSchedulingPolicy=rr
CPUSchedulingPriority=50

然后:

sudo systemctl daemon-reload
sudo systemctl restart my_service

七、常见误区

  • nice 只影响 CPU 调度,不影响 I/O、内存
  • 优先级 ≠ 性能保证
  • 普通用户不能提高优先级

如果你有具体场景(比如:

  • 某个程序太占 CPU
  • 想让某服务优先运行
  • Docker / 容器优先级

可以告诉我,我可以给你更精确的建议。

0 踩