Отримав завдання щодо попередження про можливе перенавантаження сервера одного або декількох процесорів або ядер . У пошуках готових рішень скриптів знайшов повідомлення від Rahul.Patil, допрацював його і отримав наступне рішення:
Про стан навантаження процесорів збирається програмою top з параметром -P, робиться два цикли для заміру навантаження процесорів, параметр -d2 , тому витрачається 2 секунди.
Відфільтровується значення IDLE кожного з процесорів. Результат виводиться одним рядком на кожен з процесорів, цілим числом відсоткового значення простою процесора.
Далі значення порівнюється з пороговим значенням моніторингу простою процесора - змінна "THRESHOLD". Якщо завантаження (простій) процесора нижче порогового значення, то починається підрахування терміну коли процесор знаходиться у критичному стані, зменшенням значення змінної WINDOW[CPU], де CPU номер процесора. Якщо рівень завантаження процесору стане вище порогового значення, то значення змінної WINDOW[CPU] скидається до початкового значення (INITWINDOW), і у випадку нового завантаження відлік починається спочатку.
Коли завантаження одного з процесорів незмінне протягом певного часу (INITWINDOW), то відсилається повідомлення адміністратору системи поштою, про стан певного процесора і перелік 10-ти перших процесів, з найбільшим відскоком завантаження. Потім програма робить паузу на час визначеним значенням змінної WAITMAIL.
Кожен цикл перевірки стану супроводжується паузою визначеним значенням змінної WAIT, повний цикл дорівнює значення змінної WAIT плюс 2 секунди що витрачаються програмою top.
Приклад скрипту з використанням bash shell для 4х процесорної системи.
Про стан навантаження процесорів збирається програмою top з параметром -P, робиться два цикли для заміру навантаження процесорів, параметр -d2 , тому витрачається 2 секунди.
Відфільтровується значення IDLE кожного з процесорів. Результат виводиться одним рядком на кожен з процесорів, цілим числом відсоткового значення простою процесора.
Далі значення порівнюється з пороговим значенням моніторингу простою процесора - змінна "THRESHOLD". Якщо завантаження (простій) процесора нижче порогового значення, то починається підрахування терміну коли процесор знаходиться у критичному стані, зменшенням значення змінної WINDOW[CPU], де CPU номер процесора. Якщо рівень завантаження процесору стане вище порогового значення, то значення змінної WINDOW[CPU] скидається до початкового значення (INITWINDOW), і у випадку нового завантаження відлік починається спочатку.
Коли завантаження одного з процесорів незмінне протягом певного часу (INITWINDOW), то відсилається повідомлення адміністратору системи поштою, про стан певного процесора і перелік 10-ти перших процесів, з найбільшим відскоком завантаження. Потім програма робить паузу на час визначеним значенням змінної WAITMAIL.
Кожен цикл перевірки стану супроводжується паузою визначеним значенням змінної WAIT, повний цикл дорівнює значення змінної WAIT плюс 2 секунди що витрачаються програмою top.
Приклад скрипту з використанням bash shell для 4х процесорної системи.