调整进程调度优先级
通过优先级控制进程获取CPU资源的顺序,优先级越高,获得CPU时间越多。
使用 nice
启动新进程
- 作用:启动时设置优先级(范围:
-20
(最高)到19
(最低))。 - 命令示例:
nice -n -5 /path/to/program # 以较高优先级(-5)启动程序 nice -n 10 /path/to/program # 以较低优先级(10)启动程序
使用 renice
修改运行中进程
- 步骤:
- 查找进程PID:
ps -aux | grep 进程名
- 调整优先级(需进程所有者或root权限):
renice -n -5 -p 1234 # 将PID 1234的优先级设为-5
- 查找进程PID:
实时进程优先级(chrt
)
- 适用场景:需要严格调度控制的实时进程(如音视频处理)。
- 命令示例:
chrt -f -p 99 1234 # 将PID 1234设为实时调度策略,优先级99(最高)
-f
:FIFO调度策略(先进先出)。- 优先级范围:
1
(低)到99
(高),需root权限。
限制进程CPU时间
防止进程过度占用CPU资源。
启动时限制(cpulimit
工具)
- 安装:
sudo apt install cpulimit # Debian/Ubuntu sudo yum install cpulimit # CentOS/RHEL
- 使用:
cpulimit -l 30 -p 1234 # 限制PID 1234的CPU使用率不超过30% cpulimit -l 50 -e program # 限制程序"program"的CPU使用率
通过 cgroups
高级限制
- 步骤:
- 创建控制组:
sudo cgcreate -g cpu:/mygroup
- 限制CPU使用率(如20%):
sudo cgset -r cpu.cfs_quota_us=20000 mygroup # 20ms/100ms周期
- 将进程加入控制组:
sudo cgexec -g cpu:mygroup /path/to/program
- 创建控制组:
修改系统时间(影响全局)
⚠️ 需root权限,谨慎操作!影响所有进程和日志。
临时修改
sudo date -s "2025-01-01 12:00:00" # 设置系统时间 sudo hwclock --systohc # 同步到硬件时钟
永久生效(时区配置)
sudo timedatectl set-timezone Asia/Shanghai # 设置时区 sudo timedatectl set-ntp true # 启用NTP自动同步
注意事项
- 权限要求:
nice
/renice
:普通用户只能降低优先级(>0
),提高优先级需root。chrt
和cgroups
操作需root权限。
- 风险提示:
- 不当的实时优先级可能导致系统卡死。
- 修改系统时间可能影响计划任务(cron)和依赖时间的服务。
- 监控工具:
- 使用
top
(按P
按CPU排序)、htop
或pidstat
查看进程优先级和CPU占用。
- 使用
- 优先级调整:用
nice
/renice
(普通进程)或chrt
(实时进程)。 - CPU限制:用
cpulimit
(简单场景)或cgroups
(高级隔离)。 - 系统时间:用
date
和timedatectl
(谨慎操作)。
引用说明:
- Linux
man
手册(命令文档):man nice
,man renice
,man chrt
,man cgroups
- 时间同步标准:NTP (Network Time Protocol)
- 内核调度策略参考:Linux Kernel Documentation – sched-design-CFS.txt
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/4318.html