Розуміння верхньої та середньої завантаженості


12

Я спостерігаю високе середнє навантаження на певній машині (близько 9) у всіх трьох полях навантаження. Я розумію навантаження як кількість процесів у стані "запуску" / в даний час бажаного часу процесора. Чи правильно я міркую, що якщо на моїй машині працює N процесів, це не може спричинити навантаження, що перевищує N?

Також чи враховується навантаження стосовно процесів чи потоків? Іншими словами, чи може багатонитковий процес спричинити навантаження, що перевищує 1?


Зауважте, що (оскільки зазвичай їх планується запланувати дуже скоро), завдання в "безперебійному" стані також вважаються виконаними. Просто деталь, а не те, що змінює ваше запитання.
mattdm

Відповіді:


7

Середнє значення завантаження зазвичай описується як "середня довжина черги виконання". Так мало процесорів або потоків, що споживають процесор, можуть підняти LA вище 1. Немає проблем, якщо LA менше загальної кількості ядер CPU. Але якщо вона стає більшою, ніж кількість процесорів, це означає, що деякі потоки / процеси залишатимуться в черзі, готові до запуску, але чекають вільного процесора.


3

Цифри, які використовуються для обчислення середнього навантаження, - це завдання, що перебувають у пробіжному або безперебійному стані, і обсяг виконаної роботи за часовий відрізок ковзної середньої. Ці завдання можуть бути частиною багатопотокового процесу. Поля нечіткі за часом у зв'язку з вирівнюванням результатів використовуваного алгоритму.

Навантаження 1 дорівнює 100% вартості одного процесора. Якщо у вас було багатопотокове додаток, якому вдалося мати кількість активних потоків, що перевищує кількість доступних процесорів, то ви могли б мати один процес, навантажуючи навантаження вище 1. Це, ймовірно, буде короткочасним сплеском і не відображається в довший перегляд фрагментів часу середнього навантаження.

Крім того, оскільки середнє навантаження розроблялося до того, як існували багатоядерні системи, важливо розділити номери навантажень на загальну кількість наявних ядер. Якщо це тривале навантаження 9 на чотирьохядерній чотирьохядерній системі, то це навантаження 9 з 16 і насправді не проблема.


1
- Я ще не бачив системи, де кілька ядер на сокеті піддаються доступу до простору користувача таким чином, щоб вони виглядали як би то не було, але більше процесорів. Тож вгорі на чотирьохядерній чотириядерній системі видно 16 процесорів. (Тож можна легко побачити, що навантаження на 9 нижче кількості процесорів.)
mattdm

Я розумію, що числа є логарифмічними, тому вони трохи нижче або вище 1. Одна система, яку я маю, бачила, як система повідомляє про це: середнє навантаження: 10,41, 9,57, 9,26. Що?? Чому одна система завантаження звітів для linux: 0,81, 1,57, 0,98, тоді як ця система повідомляє про середнє завантаження: 10,41, 9,57, 9,26? Чи всі Unix не однакові у цьому?
djangofan

3

Дивіться на kernel / sched / loadavg.c, який має тривалий і відмінний коментар на початку, пояснюючи виведення середнього навантаження від експоненціально занепадуючого середнього числа запущених ниток ("черга запуску") плюс кількість безперебійних потоків (очікування на введення / вивід або очікування на замок).

Ось суть коментаря, але його варто прочитати повністю:

 * The global load average is an exponentially decaying average of
 * nr_running + nr_uninterruptible.
 *
 * Once every LOAD_FREQ:
 *     nr_active = 0;
 *     for_each_possible_cpu(cpu)
 *         nr_active += cpu_of(cpu)->nr_running +
 *                      cpu_of(cpu)->nr_uninterruptible;
 *     avenrun[n] = avenrun[0] *
 *                  exp_n + nr_active *
 *                  (1 - exp_n)

Реальне життя робить код дещо складним: лічильники на процесор, нестакісні ядра, центральні процесори, відсутність коду з плаваючою точкою, що вимагає фіксації точки exp (n). Але неважко помітити, що всі вони працюють на шляху до сумлінної реалізації методу, описаного в коментарі.

Ви зауважите, що Linux рахує нитки , а не лише процеси, що відповідає на ваше запитання.


0

3 середніх навантаження - це щось на кшталт логарифмічної функції, що обертається навколо числа 1. Щось подібне до f (x) = eX (e до показника X). Технічно фіксоване представлення функції експоненціального розпаду, що імітує середнє значення. Вони є добавками на один процесор, тому повне навантаження може виглядати як 4,00 у чотирьохядерній системі. Перше число - це середнє значення за останню хвилину, друге - середнє значення за останні п’ять хвилин, а третє - середнє значення за останні 15 хвилин. Я подумав, що тут слід відкинути відповідь, яка згадує про це.


0

Миттєве навантаження: кількість завдань, які виконуються або чекають запуску, або іншим чином, кількість завдань, які бажають виконати

Середня навантаженість: міра вище, але в середньому за експоненціальним рівнем з попередніми зразками тієї ж міри

Обидва ці числа без обмежень і часто набагато більші за N.

Щоб було зрозуміло: кількість навантажень на Linux включає нитки, в цьому немає сумнівів. Ви можете створити довільно велике навантаження за допомогою одного процесу, який створює багато потоків.

Більше про це тут

http://blog.angulosolido.pt/2015/04/linux-load-average-definitive-summary.html

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