
Если я использую какое-нибудь приложение с интенсивным вводом-выводом (например, Virtualbox, Steam data verification или даже dd
), моя система становится почти неотзывчивой. Несмотря на то, что все они запущены с нормальным приоритетом, они делают рабочий стол очень вялым и сильно задерживают запуск других приложений.
Я знаю, что можно использовать что-то вроде ionice
изменения приоритета, например, на режим ожидания, но в случае Virtualbox, который порождает много процессов, это становится затруднительным.
Могу ли я дать системе какие-то подсказки, чтобы при запуске определенных приложений они запускались с наименьшим приоритетом ввода-вывода?
решение1
Примечание: это решение работает только с планировщиком cfq, как объясненоздесь. Вы должны проверить, какой из них используется, выпустив
cat /sys/block/sda/queue/scheduler
иизменятьэто если необходимо.
Если я правильно понял, вы хотите, чтобы некоторые ionice
настройки применялись каждый раз при запуске команды. Это можно сделать так:
echo 'ionice -c 3 /usr/bin/VirtualBox "$@"' > VirtualBox
chmod a+x VirtualBox
sudo mv VirtualBox /usr/local/bin/
Первая команда создает файл VirtualBox
с текстом в одинарных кавычках в качестве его содержимого. Он должен иметь полный путь к программе, потому что если указать только его, VirtualBox
он может интерпретировать его как файл, который мы только что создали, и создать «цикл».
Вторая команда делает его исполняемым, а третья перемещает этот новый файл в папку, которая находится перед папкой bin "system" /usr/bin
, так что наш новый файл будет выполнен вместо оригинального. Часть "$@" содержит все аргументы, с которыми была вызвана команда, поэтому они перенаправляются в настоящую команду VirtualBox.
Согласно ответу («да») на этот вопрос СуперпользователяНаследуют ли дочерние процессы приоритеты ionice от своих родителей? Как проверить приоритет ввода-вывода запущенного процесса?, этого должно быть достаточно для ionice
родительского процесса, например:
ionice -c 3 VirtualBox
Отionice
страница руководствадоступны следующие значения классов планирования ввода-вывода:
- 0 для ничего
- 1 для реального времени
- 2 за наилучшие усилия
- 3 для простоя (используется в примере выше)
Можно использовать номер или имя класса.
Кроме того, -n level
опция применима для классов реального времени и наилучшего усилия, при этом допустимыми данными (уровнями приоритета) являются 0–7.
решение2
Для расстановки приоритетов процессов можно использовать команду «renice»:
renice -<priority> <application's pid>
Также возможно, что ваш диск слишком сильно замедляется, поэтому, когда вы хотите запустить приложение, например Virtualbox, он должен раскрутиться, прежде чем вы сможете приступить к работе (это может занять некоторое время).