Sal*_*lem 8 disk process-priority
如果我使用一些 IO 密集型应用程序(如 Virtualbox、Steam 数据验证甚至dd),我的系统几乎没有响应。尽管都以正常优先级启动,但它们使桌面非常缓慢并延迟了其他应用程序的启动。
我知道我可以使用诸如ionice将优先级更改为空闲之类的方法,但是在产生许多进程的 Virtualbox 的情况下,这变得很困难。
我可以给系统一些类型的提示,以便在启动某些特定应用程序时它们以最低 IO 优先级启动吗?
注意:此方法只与CFQ调度工作,为解释在这里。您应该通过发布来检查使用的是哪个
cat /sys/block/sda/queue/scheduler
Run Code Online (Sandbox Code Playgroud)
并在必要时更改它。
如果我理解正确,您希望ionice每次启动命令时都应用一些设置。你可以这样做:
echo 'ionice -c 3 /usr/bin/VirtualBox "$@"' > VirtualBox
chmod a+x VirtualBox
sudo mv VirtualBox /usr/local/bin/
Run Code Online (Sandbox Code Playgroud)
第一个命令创建一个VirtualBox以单引号文本作为内容的文件。这应该有程序的完整路径,因为如果只指定VirtualBox它可以将其解释为我们刚刚创建的文件并创建一个“循环”。
第二个命令使其可执行,第三个命令将这个新文件移动到“系统”bin 文件夹前面的文件夹中/usr/bin,因此我们的新文件将被执行而不是原始文件。“$@”部分包含调用命令的所有参数,因此它们被转发到真正的 VirtualBox 命令。
根据对这个超级用户问题的回答(“是”),子进程是否继承了父进程的 ionice 优先级?如何检查正在运行的进程的 IO 优先级?,ionice对父进程来说应该就够了,像这样:
ionice -c 3 VirtualBox
Run Code Online (Sandbox Code Playgroud)
从ionice 手册页,可以使用以下 I/O 调度类值:
可以使用数字或类名。
此外,-n level选项适用于实时和尽力而为的类,0-7 作为有效数据(优先级)。