Що таке Load Average?

10 Травня, 2025

Що таке Load Average?

Load average, load average… Що це за показник? У цій статті розберемо, чому він важливий і як ним керувати.

Кожного разу, коли виявляється зниження продуктивності системи, перше, що зазвичай робиться для діагностики — це запуск команд top або uptime, щоб зрозуміти навантаження на систему, наприклад:

bash
$ uptime
01:43:15 up 3 days, 22:17, 1 user, load average: 0.51, 0.72, 0.86

Останні три числа в цьому виведенні — це Load Average за останню 1 хвилину, 5 хвилин та 15 хвилин.

Щоб краще розібратися в темі, також перегляньте Архівація даних | Перенесення Windows на інший диск або комп’ютер, Як оформити текст, щоб його було зручно читати? та Що таке позиціонування бренду і як його застосовувати на практиці.

Хтось вважає, що load average — це завантаження CPU за одиницю часу, наприклад, середнє завантаження: 0,51, 0,72, 0,86 означає, що завантаження CPU складає 51% за останню 1 хвилину. Але це не так. Середнє завантаження відноситься до середньої кількості процесів, що перебувають у запущеному та безперервному стані в одиницю часу, тобто до середньої кількості активних процесів, що не пов’язано безпосередньо з використанням CPU.

Runnable state (запусковий стан)

Процес у статусі runnable відноситься до процесу, який використовує CPU або очікує на CPU, тобто процес у стані R (виконується або готовий до виконання). Такий процес буде видимий у виведенні команди ps.

Uninterruptible State (непереривний стан)

Непереривний процес — це процес, що знаходиться в ядрі. Найпоширеніший випадок — це очікування відповіді вводу-виводу апаратного пристрою, статус D (Disk Sleep), який є у виведенні команди ps. Наприклад, коли процес читає та записує дані на диск для забезпечення узгодженості даних, він не може бути перерваний іншими процесами чи перериваннями до отримання відповіді з диска. У цей час процес перебуває в непереривному стані.

Отже, непереривний стан є захисним механізмом для системи при роботі з апаратними пристроями. Виходить, що середнє завантаження насправді є середнім числом активних процесів. Таким чином, в ідеалі на кожному ядрі процесора повинен бути запущений один процес, щоб кожне ядро було повністю завантажено. Але як пояснити значення load average рівне 2?

  • У системі з 2 CPU значення load average рівне 2 означає, що всі CPU повністю зайняті;

  • У системі з 4 CPU load average рівне 2 означає, що 50% CPU простоюють;

  • У системі з 1 CPU load average рівне 2 означає, що CPU перевантажено, і половина процесів не може конкурувати за процесори потужності.

Повернемося до першого прикладу. Як же пов’язане load average з навантаженням на систему?
Відомо, що ідеальне значення load average повинно дорівнювати кількості процесорів. Таким чином, при оцінці навантаження на систему перше, що потрібно знати — це кількість CPU в системі, яке можна отримати за допомогою команди top або з /proc/cpuinfo:

bash
$ grep 'model name' /proc/cpuinfo | wc -l
2
$ top (then press 1)
2$ nproc
2

При перевищенні load average кількості CPU, система перевантажена. Але виникає інше питання, у load average є три значення, на яке з них орієнтуватися? Середнє значення трьох різних часових інтервалів надає джерело даних для аналізу тенденції завантаження системи, що дозволяє повніше зрозуміти поточну ситуацію з навантаженням.

  • Якщо значення за 1 хвилину, 5 хвилин і 15 хвилин однакові, це означає, що завантаження системи стабільне.

  • Якщо значення за 1 хвилину набагато менше значення за 15 хвилин, це означає, що за останню хвилину навантаження на систему знизилось, але в останні 15 хвилин було велике навантаження.

  • Якщо значення за 1 хвилину набагато більше значення за 15 хвилин, це означає, що навантаження збільшується.

  • Як тільки 1-хвилинне середнє навантаження наближається до числа CPU або перевищує його, це означає, що в системі виникла перевантаження. У цей час необхідно проаналізувати та з’ясувати, в чому причина проблеми, і знайти способи оптимізації системи.

Тепер давайте розглянемо інший приклад. Припустимо, load average рівне 1,73, 0,60, 7,98 на одноядерній системі, що означає, що за останню хвилину система перевантажена на 73%, а за 15 хвилин — на 698%, завантаження системи зменшується.

Коли середнє навантаження на 70% перевищує кількість CPU, потрібно проаналізувати та усунути проблему високого навантаження. Якщо навантаження занадто високе, це може призвести до повільної реакції процесу, що вплине на нормальну роботу служби.

У реальному світі поняття load average і завантаження процесора часто не пов’язані. Розберемося. Можна задатися питанням: оскільки load average відображає кількість активних процесів, якщо значення load average високе, чи не означає це, що й завантаження CPU високе?

Load average відноситься до числа процесів, що знаходяться в стані готовності до виконання та в стані безперебійної роботи в одиницю часу. Таким чином, цей показник включає не тільки процеси, що використовують CPU, але й процеси, що очікують на CPU та вводу-виводу.

Використання CPU є статистикою завантаженості CPU за одиницю часу і не обов’язково відповідає середньому навантаженню. Наприклад:

  • Процеси з інтенсивним використанням CPU, що використовують багато процесорного часу, приведуть до збільшення середнього навантаження, і зараз вони збігаються;

  • Процеси з інтенсивним вводу-виводу, що чекають вводу-виводу, також призведуть до збільшення середнього навантаження, але завантаження CPU не обов’язково буде високим;

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

Якщо ви збираєте значення load average у вашу систему моніторингу, ви можете оперативно зрозуміти поточний стан і, що найважливіше, тренд по продуктивності.

Дякуємо за увагу!

Якщо вам потрібна допомога з моніторингом, ми надаємо консультації та виконуємо повноцінні проекти з впровадження систем моніторингу, наприклад, Zabbix.