Время ожидания ввода-вывода — это показатель, используемый для измерения количества времени, в течение которого центральный процессор ожидает завершения операций дискового ввода-вывода. Большое время ожидания ввода-вывода указывает на простаивающий процессор и невыполненные запросы ввода—вывода — хотя это может и не сделать систему неработоспособной, но ограничит производительность процессора.
Ожидание ввода-вывода процессора означает, что, хотя ни один процесс не находился в работоспособном состоянии, выполнялась по крайней мере одна операция ввода-вывода. Проще говоря, ожидание ввода-вывода — это время, затраченное процессором на ожидание завершения ввода-вывода.
Ожидание ввода-вывода просто указывает на состояние ЦП или ядер ЦП. Высокое ожидание ввода-вывода означает, что ЦП не выполняет запросы, но необходимо дальнейшее исследование для подтверждения источника и эффекта.
Вот несколько возможных причин высокого времени ожидания ввода-вывода:
Высокое ожидание ввода-вывода заставляет сервер обрабатывать более высокую пропускную способность для выполнения других вычислений во время ожидания запросов ввода-вывода. Ожидание ввода-вывода — это распространенный показатель для анализа производительности системы. Когда часто возникает длительное ожидание ввода-вывода, это может негативно повлиять на производительность системы, замедляя ее работу или вызывая такие проблемы, как низкая пропускная способность транзакций в базе данных и ухудшение работоспособности приложений и баз данных.
Две команды, наиболее часто используемые для определения и устранения неполадок времени ожидания ввода-вывода в Linux, — это top и vmstat. Эти команды будут отображать различную статистику на уровне процессора, включая время ожидания ввода-вывода.
Команда top — самая простая и наиболее широко используемая команда для определения времени ожидания ввода-вывода в Linux. Он отображает динамическое представление системы в режиме реального времени, статистику на уровне процессора и запущенный список процессов, управляемых ядром.
Синтаксис:
top [options]
Пример:
При выполнении команды top отобразится результат, аналогичный показанному ниже:
Мы сосредоточимся на строке %Cpu(s). Она отображает, среди других важных статистических данных, время ожидания ввода-вывода. Время ожидания ввода-вывода обозначается меткой wa в строке %Cpu(s) .
wa обозначает процент времени, в течение которого центральный процессор ожидал завершения ввода-вывода. Если вы используете многоядерную процессорную систему, вы можете нажать 1 во время выполнения команды top, чтобы получить разбивку загрузки процессора по ЦП.
Команда vmstat — это еще один инструмент мониторинга производительности, предоставляемый Linux. Он предоставляет информацию о памяти, процессах, процессоре и многом другом. По умолчанию vmstat отображает статистику с момента последней перезагрузки системы. Он также может показывать статистику в реальном времени, которая обновляется через указанный интервал.
Синтаксис:
vmstat [options][delay [count]]
Два параметра, обычно используемые с командой vmstat, следующие:
Пример:
Выполнение команды vmstat выдаст вам результат, аналогичный показанному ниже:
Выходные данные разделены на четыре раздела; мы сосредоточимся на разделе CPU. Столбцы в этом разделе аналогичны строке % Cpu (ов) команды top. Наряду со временем ожидания ввода-вывода (wa) мы также получаем некоторую дополнительную информацию с помощью команды vmstat, такую как общая свободная память или количество блоков, заменяемых на ввод-вывод и обратно. Например, меньшее количество свободной памяти может привести к увеличению времени ожидания ввода-вывода.
Как только вы убедитесь, что имеете дело с большим временем ожидания ввода-вывода, следующим шагом должен стать поиск процессов, ответственных за эти операции ввода-вывода. Одна из самых простых и наиболее часто используемых команд для этого — iotop.
Команда iotop идентична команде top в том смысле, что она используется для мониторинга использования дискового ввода-вывода вместе со списком запущенных процессов или потоков, ответственных за это. Он основан на Python и требует доступа к ядру для мониторинга процессов, выполняющих ввод-вывод.
Синтаксис:
iotop [options]
Пример:
Выполнение команды iotop выдаст вам результат, аналогичный показанному ниже:
Первая строка содержит общую пропускную способность диска для чтения и записи. В следующей строке отображается фактическая пропускная способность операций чтения и записи, выполняемых процессами или потоками, выполняющими ввод-вывод в данный момент. В следующем разделе отображается список запущенных процессов с данными об их текущем использовании дискового ввода-вывода. Наиболее важным столбцом здесь является столбец ввода-вывода, который отображает процент времени, в течение которого процесс выполнял операции ввода-вывода, по отношению к общему времени обработки. Этот конкретный список процессов отсортирован в этом столбце в обратном порядке.
Одним из наиболее часто используемых параметров этой команды является -o или -only. Запуск вместе с командой (iotop -o), это сужает результаты до запущенного списка процессов, которые фактически выполняют ввод-вывод.
Команды top и vmstat сообщают нам о времени ожидания ввода-вывода, а iotop команда помогает нам идентифицировать процессы, выполняющие операции ввода-вывода. Еще один важный фактор, который следует учитывать, — это то, какие диски используются в этих операциях. Команда iostat предоставляет эту информацию.
Команда iostat отображает статистику ввода/вывода системы. Она генерирует отчеты на уровне устройства, отслеживая активный период времени в зависимости от средней скорости передачи. И, подобно командам top и vmstat , iostat также отображает статистику процессора.
Синтаксис:
iostat [option] [interval] [count]
Параметры интервала и количества здесь аналогичны параметрам команды vmstat, и они используются для отображения обновлений в реальном времени бесконечно или только для определенных значений.
Пример:
Выполнение команды iostat выдаст вам результат, аналогичный показанному ниже:
В первой строке выше показана средняя статистика процессора, включая время ожидания ввода-вывода. Оно представляет собой то же значение, что и у wa в командах top и vmstat. В следующих разделах приведены следующие данные для всех устройств и разделов:
После того, как мы определили процессы, вызывающие большое время ожидания ввода-вывода, и задействованные диски, мы можем применить несколько исправлений. Это некоторые из наиболее распространенных методов минимизации большого времени ожидания ввода-вывода.:
При устранении неполадок с высокой задержкой ввода-вывода в Linux важно в качестве первого шага понять первопричину. Затем команды top и vmstat могут помочь диагностировать высокое время ожидания ввода-вывода, в то время как iotop и iostat могут помочь в устранении неполадок, определяя процессы и диски, вызывающие высокое время ожидания ввода-вывода. Мы узнали, что существует несколько способов справиться с большим временем ожидания ввода-вывода в зависимости от его причины. Сосредоточьтесь на минимизации времени ожидания ввода–вывода — чем меньше время ожидания ввода-вывода, тем лучше будет работать ваша система.