Load average, load average… Що це за показник? У цій статті розберемо, чому він важливий і як ним керувати.
Кожного разу, коли виявляється зниження продуктивності системи, перше, що зазвичай робиться для діагностики — це запуск команд top або uptime, щоб зрозуміти навантаження на систему, наприклад:
Останні три числа в цьому виведенні — це 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:
При перевищенні 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.





