Linux 命令速查
系统管理 man chrt

chrt

查看或修改进程的调度策略与实时优先级

返回

补充说明

chrt 属于 util-linux,可把进程切换到 SCHED_FIFO、SCHED_RR、SCHED_OTHER、SCHED_BATCH、SCHED_IDLE、SCHED_DEADLINE 等调度策略,并设置优先级。实时策略适合低延迟任务,但设置过高可能饿死普通进程,甚至让系统失去响应。

设置实时优先级通常需要 root 或 CAP_SYS_NICE。更稳妥的做法是通过 systemd 单元的 CPUSchedulingPolicy=、CPUSchedulingPriority= 持久配置,而不是临时对运行中进程反复调整。

语法

chrt [选项] 优先级 命令 [参数...]
chrt -p [选项] 优先级 PID

选项

  • -p, --pid:操作已存在的进程
  • -m, --max:显示该策略的优先级范围
  • -a, --all-tasks:作用于进程的所有线程
  • -o, --other:SCHED_OTHER(默认分时策略)
  • -f, --fifo:SCHED_FIFO(先入先出实时)
  • -r, --rr:SCHED_RR(时间片轮转实时)
  • -b, --batch:SCHED_BATCH(批处理)
  • -i, --idle:SCHED_IDLE(最低优先级)
  • -d, --deadline:SCHED_DEADLINE

实例

# 查看进程当前的调度策略与优先级
chrt -p 1234

# 查看 SCHED_FIFO 的优先级范围
chrt -m -f

# 以 SCHED_FIFO 优先级 50 启动程序
sudo chrt -f 50 ./realtime_app

# 把正在运行的进程改为 SCHED_RR 优先级 20
sudo chrt -p -r 20 1234

# 修改进程内所有线程
sudo chrt -a -p -f 10 1234

# 恢复为普通分时调度
sudo chrt -p -o 0 1234

实时优先级数值越大越高;修改前先确认程序确实需要硬实时,否则优先排查锁竞争与 I/O 抖动。

参考链接