Как установить приоритет дискового ввода-вывода автоматически?

Если я использую какое-либо приложение с интенсивным вводом-выводом (например, Virtualbox, проверку данных Steam или даже dd), моя система перестает отвечать на запросы. Несмотря на то, что все они запускаются с обычным приоритетом, они делают рабочий стол очень вялым и сильно задерживают запуск других приложений.

Я знаю, что могу использовать что-то вроде ionice, например, чтобы изменить приоритет на бездействие, но в случае Virtualbox, который порождает много процессов, это становится трудным.

Могу ли я дать какой-то тип подсказок системе, чтобы при запуске некоторых конкретных приложений они запускались с наименьшим приоритетом ввода-вывода?

8
задан 16 February 2013 в 16:21

2 ответа

Примечание: Это решение только работает с 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 страница справочника, после ввода-вывода, планируя значения класса доступна:

  • 0 ни для одного
  • 1 для в реальном времени
  • 2 для максимальных усилий
  • 3 для неактивного (используемый в примере выше)

Число или имя класса могут использоваться.

Кроме того, -n level опция применима для классов и максимальных усилий в реальном времени, с 0-7 как допустимые данные (приоритетные уровни).

7
ответ дан 16 February 2013 в 16:21

Вы можете использовать команду 'renice', чтобы расставить приоритеты процессов:

renice -<priority> <application's pid>

Возможно, ваш диск слишком сильно крутится, поэтому, когда вы хотите запустить приложение, такое как Virtualbox, оно должно вращаться. прежде чем вы сможете начать работать (это может занять некоторое время).

0
ответ дан 16 February 2013 в 16:21

Другие вопросы по тегам:

Похожие вопросы: