Если я использую какое-либо приложение с интенсивным вводом-выводом (например, Virtualbox, проверку данных Steam или даже dd
), моя система перестает отвечать на запросы. Несмотря на то, что все они запускаются с обычным приоритетом, они делают рабочий стол очень вялым и сильно задерживают запуск других приложений.
Я знаю, что могу использовать что-то вроде ionice
, например, чтобы изменить приоритет на бездействие, но в случае Virtualbox, который порождает много процессов, это становится трудным.
Могу ли я дать какой-то тип подсказок системе, чтобы при запуске некоторых конкретных приложений они запускались с наименьшим приоритетом ввода-вывода?
Примечание: Это решение только работает с 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
это может интерпретировать его как файл, который мы просто создали, и создайте "цикл".
Вторая команда делает это исполняемым файлом, и треть перемещает этот новый файл в папку, которая является перед "системной" папкой мусорного ведра /usr/bin
, таким образом, наш новый файл выполняется вместо оригинала. "$" часть содержит все аргументы, с которыми была вызвана команда, таким образом, они передаются реальной команде VirtualBox.
Согласно ответу ("да") к этому вопросу о Суперпользователе Делают дочерние процессы наследовались, ионизируют приоритеты от их родителей? Как Вы проверяете приоритет IO рабочего процесса?, это должно быть достаточно к ionice
родительский процесс, как это:
ionice -c 3 VirtualBox
От ionice
страница справочника, после ввода-вывода, планируя значения класса доступна:
Число или имя класса могут использоваться.
Кроме того, -n level
опция применима для классов и максимальных усилий в реальном времени, с 0-7 как допустимые данные (приоритетные уровни).
Вы можете использовать команду 'renice', чтобы расставить приоритеты процессов:
renice -<priority> <application's pid>
Возможно, ваш диск слишком сильно крутится, поэтому, когда вы хотите запустить приложение, такое как Virtualbox, оно должно вращаться. прежде чем вы сможете начать работать (это может занять некоторое время).