Для быстрого сравнительного теста, как можно сочетать nice и ionice с максимальным эффектом, то есть, чтобы команда использовала как можно меньше ресурсов (без полного холостого хода)?
(Я думаю, что это что-то вроде `nice -n 19 ionice -c 2 [команда], но не уверен насчет" -n "ionice (параметр classdata), страница руководства загадочна в отношении ее актуальности.)
performance
nice
ionice
mahemoff
источник
источник
Ответы:
Полная команда, которую вы хотите:
Команда
chrt
в начале переключит вещи в класс пакетного планирования, что эквивалентно добавлению 0.5 к значению nice. Опция -n для ionice является простым приоритетом для опций realtime (-c 1
) и best-Усилия (-c 2
), причем более низкие значения имеют более высокий приоритет, как и хорошие значения (но в диапазоне 0-7). Однако команда ionice не является строго необходимой, поскольку класс и приоритет планирования ввода-вывода по умолчанию определяются из параметров планирования ЦП иnice -n 19
подразумеваютionice -c 2 -n 7
.Однако вы можете получить абсолютное минимальное использование ресурсов, установив классы планирования ЦП и В / В в состояние ожидания. В обоих случаях «незанятые» планировщики на самом деле не являются незанятыми, и вы все равно сможете использовать ресурсы, просто все будет иметь более высокий приоритет.
Для класса планирования ЦП это также использует
chrt
команду, хотя и без необходимостиnice
(приоритет должен быть установлен0
в классе планирования ожидания), и выглядит следующим образом:Команда
nice
в Linux отражает версию SVR4, что означает, что она не может изменить класс планирования, только хорошее значение (которое также ведет себя иначе в Linux, чем в классической UNIX, но это немного OT). Поскольку исходные альтернативные классы планирования были в реальном времени POSIX.1ESCHED_RR
иSCHED_FIFO
, в итоге, была вызвана команда для установки классов планированияchrt
. В-i
параметр указывает , использоватьSCHED_IDLE
класс планированияДля класса планирования ввода / вывода вы используете
ionice
. Точная команда выглядит так:В
-c
опции определяет , что планирование класс использования, а 3 это число для праздного класса. Обратите внимание, что в зависимости от того, какой блок ввода-вывода используется планировщик, это может на самом деле не влиять ни на что. В частности,noop
планировщик ввода-вывода вообще не поддерживает приоритеты или классы планирования, и я почти уверен, чтоdeadline
планировщики (как устаревшие, так и blk-mq) тоже не поддерживают.Если вы хотите сделать это программно, либо для своей собственной программы, либо для настройки других процессов, посмотрите справочные страницы для системных вызовов
sched_setscheduler
иioprio_set
системных вызовов (хотя оба они заслуживают чтения, если вы просто хотите иметь больше информации).источник
Предполагая, что вы не хотите, чтобы эта команда полностью ожидала завершения других, поэтому, чтобы потенциально не страдать от нехватки ресурсов , строка будет выглядеть так:
As ionice будет установлен пропорционально на современные ядра Linux.
Кстати
chrt -b0
, не имеет ничего общего с любезностью, но с тем, как часто процессор будет переходить от одного процесса к другому. Эта строка увеличивает время, необходимое пакетным программам для более эффективного использования кэшей, но для других команд это бесполезно. Как видно здесь .источник