mah*_*off 9 performance ionice nice
对于快速的基准测试,如何将 nice 和 ionice 结合到最大效果,即让命令使用尽可能少的资源(完全不空闲)?
(我认为它类似于 `nice -n 19 ionice -c 2 [command],但不确定 ionice 的“-n”(classdata 参数),手册页对其相关性含糊不清。)
Aus*_*arn 10
你想要的完整命令是:
chrt -b 0 nice -n 19 ionice -c 2 -n 7 [command]
Run Code Online (Sandbox Code Playgroud)
chrt
开头的命令会切换到批处理调度类,相当于nice值加0.5。ionice 的 -n 选项是实时 ( -c 1
) 和尽力而为 ( -c 2
) 选项的简单优先级,与 nice 值一样,较低的值具有较高的优先级(但在 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}
Run Code Online (Sandbox Code Playgroud)
nice
Linux 上的命令镜像 SVR4 版本,这意味着它不能更改调度类,只有很好的值(这在 Linux 上的行为也与经典 UNIX 不同,但这有点过时)。由于最初的替代调度类是 POSIX.1E realtimeSCHED_RR
和SCHED_FIFO
,因此设置调度类的命令最终被调用chrt
。该-i
选项指定使用SCHED_IDLE
调度类
对于 I/O 调度类,您使用ionice
. 确切的命令如下所示:
ionice -c 3 {command or PID}
Run Code Online (Sandbox Code Playgroud)
该-c
选项指定要使用的调度类,3 是空闲类的编号。请注意,根据正在使用的块 I/O 调度程序,这实际上可能不会产生任何影响。特别是,noop
I/O 调度器根本不支持优先级或调度类,而且我很确定deadline
调度器(传统调度器和 blk-mq调度器)也不支持。
如果您想以编程方式执行此操作,无论是为您自己的程序,还是为其他进程调整内容,请查看系统调用sched_setscheduler
和ioprio_set
系统调用的手册页(尽管如果您只想了解更多背景知识,两者都值得一读)。
归档时间: |
|
查看次数: |
692 次 |
最近记录: |