Яка найкраща команда Unix може бути?


9

Для швидкого тесту на бенчмаркінг, як можна об'єднати nice та ionice до максимального ефекту, тобто для команди використовувати якомога менше ресурсів (без простою)?

(Я думаю, це щось на кшталт `приємно -n 19 ionice -c 2 [команда], але не впевнений у" -n "ionice (параметр classdata).


3
плюс 1 для розумного заголовка питання, але це також добре питання загалом.
Лізардкс

Відповіді:


10

Повна потрібна команда:

chrt -b 0 nice -n 19 ionice -c 2 -n 7 [command]

chrtКоманда на початку буде перемикатися речі класу пакетного планування, що еквівалентно додаванню 0,5 до гарної вартості. Варіант -n для ionice - це простий пріоритет для варіантів реального часу ( -c 1) та найкращих зусиль ( -c 2), при цьому нижчі значення мають вищий пріоритет, як і приємні значення (але в діапазоні 0-7). Однак команда ionice не є суворо необхідною, оскільки клас планування вводу / виводу та пріоритет за замовчуванням виходять із параметрів планування процесора, і це nice -n 19означає ionice -c 2 -n 7.

Однак ви можете отримати абсолютне мінімальне використання ресурсів, встановивши класи і графік процесора, і введення / виводу в режимі очікування. В обох випадках "простої" планувальники - це насправді непрацюючі планувальники, і ви все одно зможете використовувати ресурси, це просто те, що все матиме більш високий пріоритет.

Для класу планування процесора, він також використовує chrtкоманду, хоча і не потребує nice(пріоритет повинен бути встановлений 0у класі простою планування), і виглядає так:

chrt -i 0 {command or PID}

niceКоманда на Linux дзеркалах версії SVR4, що означає , що він не може змінити клас планування, тільки хороше значення (яке також веде себе по- різному на Linux , ніж класичний UNIX, але це трохи OT). Оскільки вихідними альтернативними класами планування були POSIX.1E в реальному часі, SCHED_RRі SCHED_FIFOкоманда встановити класи планування в кінцевому підсумку викликалася chrt. У -iпараметр вказує , використовувати SCHED_IDLEклас планування

Для класу планування вводу / виводу ви використовуєте ionice. Точна команда виглядає так:

ionice -c 3 {command or PID}

В -cопції визначає , що планування клас використання, а 3 це число для дозвільного класу. Зауважте, що залежно від того, який планувальник блоків вводу-виводу використовується, це може насправді нічого не впливати. Зокрема, noopпланувальник вводу-виводу взагалі не підтримує пріоритетів або класів планування, і я впевнений, що deadlineпланувальники (і застарілий, і blk-mq) теж не мають.

Якщо ви хочете робити це програмно, або для власної програми, або для налаштування речей для інших процесів, ознайомтеся із довідковими сторінками для sched_setschedulerта ioprio_setсистемних викликів (хоча обидва варто прочитати, якщо ви просто хочете отримати більше фону).


0

Якщо припустити, що ви не хочете, щоб ця команда повністю чекала, коли інші закінчать, щоб не зазнати голодного ресурсу , рядок буде таким:

nice -n19 [command]

Оскільки ionice буде встановлений пропорційно на сучасних Linux ядрах.

До речі, chrt -b0це не має нічого спільного з приємністю, але з тим, як часто процесор перескакує з одного процесу на інший. Цей рядок збільшує цей час для пакетних програм, щоб краще використовувати кеші, але для інших команд він марний. Як видно тут .

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.