nice命令
指定进程运行优先级,优先级的范围为-20到19,优先级的值越低,分配给cpu的时间就越多。默认优先级为0。
输出任务的当前优先级:
$ cat nice-test.sh
echo "my nice is $(nice)"
$ bash nice-test.sh
my nice is 0
以优先级10运行该命令(若想指定负值提升进程优先级,需要用超级用户执行。):
$ nice -n 10 sh nice-test.sh
my nice is 10
补充:renice命令可以修改正在运行任务的优先级。
$ renice [ni] [pid]
ionice命令
用于获取或改变进程I/O调度策略和优先级。
| 策略类型 | 代表数字 | 说明 |
|---|---|---|
| realtime | 1 | 在其他进程没有磁盘I/O时,才进行磁盘I/0。 |
| best-effort | 2 | 缺省策略,可设置优先级值为0到7,数值越小,优先级越高。 |
| idle | 3 | 立即访问磁盘I/O,该策略需谨慎使用。 |
使用best-effort策略,并指定优先级最低:
$ ionice -c 2 -n 7 -p [pid]
$ ionice -c 2 -n 7 [command]
为systemd服务设置进程优先级
参考文档: systemd.exec 中文手册
设置该服务运行优先级为最低:
[Service]
Nice=19
IOSchedulingClass=best-effort
IOSchedulingPriority=7