Answers:
您想要的完整命令是:
chrt -b 0 nice -n 19 ionice -c 2 -n 7 [command]
chrt
开头的命令会将内容切换到批处理调度类,这相当于将nice值加0.5。ionice的-n选项是realtime(-c 1
)和best-effort(-c 2
)选项的简单优先级,较低的值与较高的值一样具有较高的优先级(但范围为0-7)。然而,ionice命令不是严格必需的,因为I / O调度类和优先级是由从CPU调度参数导出缺省,和nice -n 19
暗示ionice -c 2 -n 7
。
但是,通过将CPU和I / O调度类都设置为空闲,可以获得绝对的最小资源使用。在这两种情况下,“空闲”调度程序实际上都不是空闲的调度程序,您仍然可以使用资源,只是所有内容都将具有更高的优先级。
对于CPU调度类,这也使用chrt
命令,尽管不需要nice
(必须0
在空闲调度类中将优先级设置为),如下所示:
chrt -i 0 {command or PID}
nice
Linux上的命令镜像了SVR4版本,这意味着它不能更改调度类,只能更改值(该值在Linux上的行为与传统UNIX有所不同,但这有点麻烦)。由于原来的替代调度类是所述POSIX.1E实时SCHED_RR
和SCHED_FIFO
,该命令结束了一套调度类被调用chrt
。该-i
选项指定使用SCHED_IDLE
调度类
对于I / O调度类,请使用ionice
。确切的命令如下所示:
ionice -c 3 {command or PID}
该-c
选项指定要使用的调度类,3是空闲类的编号。请注意,根据使用的是哪个块I / O调度程序,这实际上可能不会有任何影响。特别是,noop
I / O调度程序根本不支持优先级或调度类,而且我敢肯定,deadline
调度程序(既是传统的调度程序,又是blk-mq调度程序)都不支持。
如果要以编程方式执行此操作(对于您自己的程序,还是要为其他进程进行调整),请查看手册页中的sched_setscheduler
和ioprio_set
系统调用(尽管如果您也想要更多的背景知识,那么两者都值得一读)。