Прочитал интересную статью про Linux IOWait в блоге компании Percona. У автора оказались подозрительно русские имя и фамилия — P…

Прочитал интересную статью про Linux IOWait в блоге компании Percona. У автора оказались подозрительно русские имя и фамилия — Peter Zaitsev. Навёл справки. Оказалось, что это Пётр Зайцев — сооснователь компании Percona. Я и не знал, что эта компания основана русскими, хотя пользуюсь её бесплатными продуктами много лет.

⇨ Understanding Linux IOWait ()

Сделал короткую выжимку из статьи, чтобы передать суть. Информация показалась полезной и новой для меня. Вначале пример от автора, как можно жёстко нагрузить дисковую подсистему:

# sysbench —threads=8 —time=0 —max-requests=0 fileio —file-num=1 —file-total-size=10G —file-io-mode=sync —file-extra-flags=direct —file-test-mode=rndrd run

Используется утилита sysbench. Я, кстати, писал про неё (https://t.me/srv_admin/1118). У неё есть встроенные тесты для СУБД. Приведённая выше команда жёстко нагрузит метрику cpu iowait. Проверить можно через vmstat (https://t.me/srv_admin/3317), колонка wa.

Пробуем дальше нагружать систему нагрузкой на процессор, не прерывая прошлый тест:

# sysbench —threads=8 —time=0 cpu run

Снова смотрим на vmstat и видим, что нагрузка IOWait куда-то пропала. Как так? Первый тест продолжает нагружать диски, но мы уже этого не видим в привычной метрике.

Смысл тут вот в чём. Когда мы долго ждём ответа от дисков, процессор простаивает. Растёт метрика cpu idle. Простой процессора из-за ожидания I/O засчитывается в метрику IOWait. Но как только мы нагружаем процессор другой работой, метрика idle падает, а за ней и IOWait. Это особенность подсчёта этих метрик.

Теперь вместо первого теста в 8 потоков, запустим только один на виртуалке с 4-мя ядрами:

# sysbench —threads=1 —time=0 —max-requests=0 fileio —file-num=1 —file-total-size=10G —file-io-mode=sync —file-extra-flags=direct —file-test-mode=rndrd run

Несмотря на то, что этот тест тоже полностью нагрузит дисковую подсистему, мы увидим IOWait в районе 20-25%. А на виртуальных машинах с большим числом ядер (32-64) цифра будет настолько незначительна, что мы можем вообще не заметить её. Но при этом дисковая подсистема будет полностью загружена.

Таким образом, высокая метрика IOWait показывает, что процессор ожидает операции I/O. Но при этом низкий показатель не гарантирует, что у вас не загружены диски. Надо уточнять.

Как же узнать, что у нас есть проблемы с нагрузкой по I/O? Можно посмотреть на столбец b в vmstat. Он показывает количество процессов, которые заблокированы в ожидании I/O для завершения. Соседний столбец r покажет суммарное число запущенных процессов.

В продукте Percona Monitoring and Management (https://t.me/srv_admin/2440) есть плагин (https://www.percona.com/blog/capturing-per-process-metrics-with-percona-monitoring-and-management-pmm/), который в том числе показывает статистику по процессам. Там будут видны процессы, ожидающие I/O. Указанный мониторинг бесплатен, это open source.

❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.

#linux #perfomance

https://t.me/srv_admin | Авторская информация о системном администрировании

https://www.percona.com/blog/understanding-linux-iowait/

Добавить комментарий

You might like

© 2024 DIGITNOTES - WordPress Theme by WPEnjoy