Куди мережеве очікування йде вгорі?


9

Якщо вгорі відображаються великі навантаження, і ви не знаєте, чи процес, що викликає це, робить час процесора чи робить мережевий введення-виведення (не локальний введення-вивід), як це можна дізнатись?

На нашому сервері я бачу високі значення для навантаження, але в поєднанні з 60% -70% в режимі очікування та близько 25% користувачів. Мені хотілося б знати, як інтерпретувати такі значення, але в Інтернеті я майже завжди читаю, що ви можете користуватися іостатом, щоб побачити, чи процес перебирає ваші диски. Але я вже точно знаю, що це не так. Проблемний процес також не має проблем із виконанням своєї роботи, але все ж навантаження велика.

Отже, чи є спосіб дізнатися більше, яка частина викликана мережевим очікуванням, а яка - викликана реальним процесорним часом? І яке значення "простоювати" вгорі?

Для наочності: під навантаженням я маю на увазі 3 числа, які означають середні процеси в черзі на ядро. На цій машині є 8 ядер, і кількість доходить до 25, так що це навантаження 2,5 на ядро.


Як ви називаєте "load": використання процесора або 3 "середнє значення завантаження" (видно на uptimeвиході)?
spuk

1
Питання не має сенсу ... очікування мережевого вводу-виводу не використовує жодного часу процесора.
psusi

2
Я люблю утиліту htopзаглядати в процеси. Зокрема, це дозволяє вам вибрати процес, а потім, скориставшись lкомандою, він покаже всі відкриті файли, використовуючи пристрої, lsofвключаючи IPv4та IPv6передаючи потоки тощо. Якщо ви straceвстановили на свій ящик, ви також можете налагодити системний виклик та сигнал. Не зовсім відповідь, але інший інструмент, який я б розглядав для того, що ви намагаєтесь дослідити.
111 ---

Я маю на увазі 3 числа. Як я розумію, їх називають "навантаженням", чи я тут помиляюся? Вони представляють кількість процесів у черзі, які можна виконати, але чи включають вони процеси, які мають мережеве очікування, чи це виключає, чи робить процеси?
січня

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

Відповіді:


3

Якщо вгорі відображаються великі навантаження, і ви не знаєте, чи процес, що викликає це, робить час процесора чи робить мережевий введення-виведення (не локальний введення-вивід), як це можна дізнатись?

Мережевий ввод-вивід не враховується в метриці iowait Linux, якщо тільки він не є частиною транзакції NFS, і в цьому випадку він вважається дисковим входом / виходом.

Отже, чи є спосіб дізнатися більше, яка частина викликана мережевим очікуванням, а яка - викликана реальним процесорним часом?

За межами гіпотетичного очікування NFS жодне значення середнього навантаження не приймається на очікування мережі.

І яке значення "простоювати" вгорі?

Це означає, що відсоток часу, коли процесор не знаходиться в іншому з перерахованих станів (користувач, система, nice, iowait, апаратні переривання, програмні переривання, вкрадені). Сюди входить мережеві очікування. У режимі очікування процесор нічого не робить. Зауважте, що iowait також простоює, оскільки процесор теж нічого не робить.


Дякую за вашу відповідь. Тож у моїй ситуації, коли я бачу високе значення простою (60% - 70%) та нижчий стан користувача (близько 25%) та низький рівень очікування, це може означати, що сервер чекає мережевих ресурсів, якщо я вас правильно зрозумів.
січня

1
Не обов’язково чекати мережевих ресурсів. Це може бути просто CPU досить швидко, щоб виконати все, що потрібно зробити. Високе середнє навантаження, можливо, спричинено дуже великою кількістю потоків, що одночасно конкурують за процесор, але протягом дуже коротких помилкових періодів часу.
jlliagre
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.