Поиск по сайту:
Богатство не уменьшает жадности (Саллюстий).

Как устранить неполадки с высоким временем ожидания ввода-вывода в Linux

05.05.2024
Как устранить неполадки с высоким временем ожидания ввода-вывода в Linux

Время ожидания ввода-вывода – это показатель, используемый для измерения количества времени, в течение которого центральный процессор ожидает завершения операций дискового ввода-вывода. Большое время ожидания ввода-вывода указывает на простаивающий процессор и невыполненные запросы ввода—вывода – хотя это может и не сделать систему неработоспособной, но ограничит производительность процессора.

Ожидание ввода-вывода процессора означает, что, хотя ни один процесс не находился в работоспособном состоянии, выполнялась по крайней мере одна операция ввода-вывода. Проще говоря, ожидание ввода-вывода – это время, затраченное процессором на ожидание завершения ввода-вывода.

 

Что вызывает высокое время ожидания ввода-вывода?

Ожидание ввода-вывода просто указывает на состояние ЦП или ядер ЦП. Высокое ожидание ввода-вывода означает, что ЦП не выполняет запросы, но необходимо дальнейшее исследование для подтверждения источника и эффекта.

Вот несколько возможных причин высокого времени ожидания ввода-вывода:

  • Узкие места на уровне хранилища, из-за которых диску требуется больше времени для ответа на запросы ввода-вывода
  • Очередь запросов ввода-вывода на уровне хранилища, которые приводят к увеличению задержки
  • Блокируйте устройства (например, физические диски), которые работают слишком медленно или просто достигли точки насыщения
  • Процессы, находящиеся в режиме непрерывного ожидания
  • Процессы, выполняющие интенсивные операции чтения и записи на диск
  • Замена раздела или файла, выполняемая из-за нехватки оперативной памяти в основной или гостевой операционной системе
  • Операции дискового и сетевого ввода-вывода, которые являются наиболее распространенной причиной замедления работы системы
  • Медленный диск или неисправный RAID-массив, который задерживает доступ к памяти для операций чтения и записи

 

Влияет ли ожидание ввода-вывода на производительность вашей системы?

Высокое ожидание ввода-вывода заставляет сервер обрабатывать более высокую пропускную способность для выполнения других вычислений во время ожидания запросов ввода-вывода. Ожидание ввода-вывода – это распространенный показатель для анализа производительности системы. Когда часто возникает длительное ожидание ввода-вывода, это может негативно повлиять на производительность системы, замедляя ее работу или вызывая такие проблемы, как низкая пропускная способность транзакций в базе данных и ухудшение работоспособности приложений и баз данных.

 

Диагностика времени ожидания ввода-вывода в Linux

Две команды, наиболее часто используемые для определения и устранения неполадок времени ожидания ввода-вывода в Linux, – это top и vmstat. Эти команды будут отображать различную статистику на уровне процессора, включая время ожидания ввода-вывода.

Читать  96-ядерный процессор AMD Ryzen Threadripper Pro WX устроил фарш в Cinebench, преодолев барьер в 100 тысяч

 

С помощью команды top

Команда top – самая простая и наиболее широко используемая команда для определения времени ожидания ввода-вывода в Linux. Он отображает динамическое представление системы в режиме реального времени, статистику на уровне процессора и запущенный список процессов, управляемых ядром.

Синтаксис:

top [options]

 

Пример:

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

Рис. 1: Вывод команды top

Рис. 1: Вывод команды top

 

Мы сосредоточимся на строке %Cpu(s). Она отображает, среди других важных статистических данных, время ожидания ввода-вывода. Время ожидания ввода-вывода обозначается меткой wa в строке %Cpu(s) .

wa обозначает процент времени, в течение которого центральный процессор ожидал завершения ввода-вывода. Если вы используете многоядерную процессорную систему, вы можете нажать 1 во время выполнения команды top, чтобы получить разбивку загрузки процессора по ЦП.

 

С помощью команды vmstat

Команда vmstat – это еще один инструмент мониторинга производительности, предоставляемый Linux. Он предоставляет информацию о памяти, процессах, процессоре и многом другом. По умолчанию vmstat отображает статистику с момента последней перезагрузки системы. Он также может показывать статистику в реальном времени, которая обновляется через указанный интервал.

Синтаксис:

vmstat [options][delay [count]]

 

Два параметра, обычно используемые с командой vmstat, следующие:

  • delay: Этот параметр используется для непрерывного обновления отчетов после указанной задержки в секундах.
  • count: Этот параметр используется для определения количества необходимых обновлений. Значение по умолчанию бесконечно.

 

Пример:

Выполнение команды vmstat выдаст вам результат, аналогичный показанному ниже:

Рис. 2: Вывод команды vmstat

Рис. 2: Вывод команды vmstat

 

Выходные данные разделены на четыре раздела; мы сосредоточимся на разделе CPU. Столбцы в этом разделе аналогичны строке % Cpu (ов) команды top. Наряду со временем ожидания ввода-вывода (wa) мы также получаем некоторую дополнительную информацию с помощью команды vmstat, такую как общая свободная память или количество блоков, заменяемых на ввод-вывод и обратно. Например, меньшее количество свободной памяти может привести к увеличению времени ожидания ввода-вывода.

 

Определение процессов, вызывающих большое время ожидания ввода-вывода

Как только вы убедитесь, что имеете дело с большим временем ожидания ввода-вывода, следующим шагом должен стать поиск процессов, ответственных за эти операции ввода-вывода. Одна из самых простых и наиболее часто используемых команд для этого – iotop.

Читать  Вопреки сообщениям, Intel не нашла решения проблемы сбоя Core i9

 

С помощью команды iotop

Команда iotop идентична команде top в том смысле, что она используется для мониторинга использования дискового ввода-вывода вместе со списком запущенных процессов или потоков, ответственных за это. Он основан на Python и требует доступа к ядру для мониторинга процессов, выполняющих ввод-вывод.

Синтаксис:

iotop [options]

 

Пример:

Выполнение команды iotop выдаст вам результат, аналогичный показанному ниже:

Рис. 3: Вывод команды iotop

Рис. 3: Вывод команды iotop

 

Первая строка содержит общую пропускную способность диска для чтения и записи. В следующей строке отображается фактическая пропускная способность операций чтения и записи, выполняемых процессами или потоками, выполняющими ввод-вывод в данный момент. В следующем разделе отображается список запущенных процессов с данными об их текущем использовании дискового ввода-вывода. Наиболее важным столбцом здесь является столбец ввода-вывода, который отображает процент времени, в течение которого процесс выполнял операции ввода-вывода, по отношению к общему времени обработки. Этот конкретный список процессов отсортирован в этом столбце в обратном порядке.

Одним из наиболее часто используемых параметров этой команды является -o или -only. Запуск вместе с командой (iotop -o), это сужает результаты до запущенного списка процессов, которые фактически выполняют ввод-вывод.

 

Идентификация дисков, на которые записывается ввод-вывод

Команды top и vmstat сообщают нам о времени ожидания ввода-вывода, а iotop команда помогает нам идентифицировать процессы, выполняющие операции ввода-вывода. Еще один важный фактор, который следует учитывать, – это то, какие диски используются в этих операциях. Команда iostat предоставляет эту информацию.

 

С помощью команды iostat

Команда iostat отображает статистику ввода/вывода системы. Она генерирует отчеты на уровне устройства, отслеживая активный период времени в зависимости от средней скорости передачи. И, подобно командам top и vmstat , iostat также отображает статистику процессора.

Синтаксис:

iostat [option] [interval] [count]

 

Параметры интервала и количества здесь аналогичны параметрам команды vmstat, и они используются для отображения обновлений в реальном времени бесконечно или только для определенных значений.

 

Пример:

Выполнение команды iostat выдаст вам результат, аналогичный показанному ниже:

Рис. 4: Вывод команды iostat

Рис. 4: Вывод команды iostat

 

В первой строке выше показана средняя статистика процессора, включая время ожидания ввода-вывода. Оно представляет собой то же значение, что и у wa в командах top и vmstat. В следующих разделах приведены следующие данные для всех устройств и разделов:

  • Device: Название раздела или устройства
  • tps: передача данных в секунду. У перегруженного или занятого процессора скорость передачи данных всегда будет выше.
  • Blk_read/s (kB_read/s): количество блоков данных, считываемых с устройства в секунду
  • Blk_wrtn/s (kB_wrtn/s): Количество блоков данных, записываемых на устройство в секунду
  • Blk_read (kB_read): общее количество блоков, прочитанных с этого устройства с момента последней перезагрузки
  • Blk_wrtn (kB_wrtn): общее количество блоков, записанных на это устройство с момента последней перезагрузки
Читать  Оптимизация SQL Server для обеспечения высокой доступности

 

Исправление высокого времени ожидания ввода-вывода в Linux

После того, как мы определили процессы, вызывающие большое время ожидания ввода-вывода, и задействованные диски, мы можем применить несколько исправлений. Это некоторые из наиболее распространенных методов минимизации большого времени ожидания ввода-вывода.:

  • Уменьшите частоту операций чтения и записи с диска за счет сокращения операций ввода-вывода, таких как запросы к базе данных.
  • Убедитесь, что операционная система обновлена до последней версии со всеми установленными исправлениями, чтобы сократить время ожидания ввода-вывода, вызванное ошибками в ОС.
  • Обновите жесткий диск и оперативную память на сервере и установите диски с более высокой частотой вращения или SSD с высокой производительностью ввода-вывода.
  • Если пользовательское время процессора слишком велико, попробуйте завершить процесс или процессы, наносящие ущерб.
  • Проверьте использование подкачки — высокое использование подкачки означает, что в системе фактически не хватает оперативной памяти. В этом случае увеличение объема оперативной памяти может сократить время ожидания ввода-вывода.
  • Проверьте, нет ли потенциальной утечки памяти — некоторые приложения могут потреблять память, не освобождая ее после использования. Это может привести к утечке памяти и, в конечном итоге, к большому времени ожидания ввода-вывода.

 

Заключение

При устранении неполадок с высокой задержкой ввода-вывода в Linux важно в качестве первого шага понять первопричину. Затем команды top и vmstat могут помочь диагностировать высокое время ожидания ввода-вывода, в то время как iotop и iostat могут помочь в устранении неполадок, определяя процессы и диски, вызывающие высокое время ожидания ввода-вывода. Мы узнали, что существует несколько способов справиться с большим временем ожидания ввода-вывода в зависимости от его причины. Сосредоточьтесь на минимизации времени ожидания ввода–вывода – чем меньше время ожидания ввода-вывода, тем лучше будет работать ваша система.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (1 оценок, среднее: 5,00 из 5)
Загрузка...
Поделиться в соц. сетях:


0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

**ссылки nofollow

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

Это может быть вам интересно


Рекомендуемое
Пользователь на форумах Chiphell протестировал несколько процессоров Intel Core i9…

Спасибо!

Теперь редакторы в курсе.