Iostat linux что это

Команда iostat – анализ обмена данными с дисками

При оценке производительности системы, анализ дисковой подсистемы является не просто важным, но и обязательным этапом в совокупности мероприятий по оптимизации системы в целом. На практике довольно часто случается так, что именно из-за некорректной работы этого программно-аппаратного компонента не удаётся добиться заявленного или приблизиться к потенциальному уровню производительности. Дисковая подсистема — далеко не самый надёжный компонент в высоконагруженной системе и требует довольно тщательного обслуживания. Которое в свою очередь может определяться в результате умелого мониторинга и анализа работы дисков. Да и вообще устройств хранения. Стандартным инструментом, предоставляющим исчерпывающий функционал для задач анализа производительности дисковой подсистемы в Linux является утилита iostat – первоочередное средство для решения подобных задач в системном администрировании.

Установка утилиты iostat

В большинстве дистрибутивов Linux команда iostat недоступна, пока не установлен пакет systat.

Установка в Ubuntu/Debian

Установка в CentOS/RedHat

Синтаксис и основные опции команды iostat

Синтаксис команды iostat предполагает использование трёх основных опций. Среди которых: интервал замера (в секундах), количество отчётов, а также устройство. В общем виде синтаксис следующий:

В качестве параметра device задаётся анализируемое устройство хранения. Параметры интервал и количество_отчётов задают периодичность замеров и количество выводимых отчётов соответственно.

Среди дополнительных опций самыми полезными являются следующие:

Опция Значение
-p Показывает статистику для указанного устройства с детализацией по его разделам.
-s Выводит отчёты в кратком виде.
-x Выводит отчёты в подробном виде.
-t Выводит значение времени, в которое выполнялся/формировался каждый отчёт.

Остальные опции используются довольно редко. Об их назначении можно более подробно узнать из справочного руководства команды iostat: man iostat.

Примеры использования iostat

Если дать команду iostat без аргументов и опций, то по-умолчанию будет выведен стандартный отчёт для всех имеющихся в системе устройств хранения:

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

  • tps – количество операций ввода/вывода в секунду;
  • kB_read/s – количество операций чтения в секунду;
  • kB_wrtn/s – количество операций записи в секунду;
  • kB_read – суммарный объём считанных данных;
  • kB_wrtn – суммарный объём записанных данных.

Следует отметить, что при анализе значений tps, следует учитывать тот факт, что при одном запросе на пересылку данных может одновременно выполняться несколько запросов для ввода/вывода для сразу нескольких секторов. Поэтому данные результаты нужно сопоставлять с характеристиками самого устройства хранения (жёсткого диска) для получения объективной оценки. Ведь количество секторов может быть разным (в зависимости от используемого диска). И даже, если предположить, что обращение всегда происходит сразу ко всем секторам, то значение tps представляется довольно размытым.

Производительность дисковой подсистемы и её оптимизация

Главным параметром, заметно влияющим на производительность дисков является время, затрачиваемое на поиск требуемых блоков данных. Причём частота вращения самих дисков, а также пропускная способность шины данных диска решающей роли в производительности не играют. Хотя и несколько влияют на неё. На практике для поиска информации на диске выполняется от 100 до 300 операций поиска в секунду. Когда обращение происходит сразу к нескольким секторам диска, то скорость пересылки данных может исчисляться сотнями мегабайт в секунду. Однако, если происходит чтение всего с одного сектора после каждой операции поиска данных. То в этом случае может быть задействовано 5% (и менее) от максимально возможной пропускной способности диска.

Чем большие расстояния преодолевает головка жёсткого диска, тем меньше его производительность. Такое случается например, когда происходит одновременное обращение к нескольким файлам, которые расположены на разных разделах одного диска. Это обстоятельство необходимо учитывать при разметке диска и делать это таким образом, чтобы файлы, к которым происходит одновременное обращение, находились в одной файловой системе/разделе.

Читайте также:  Хост процесс windows rundll32 что это как отключить

Положительно сказывается на производительности дисковой подсистемы также и размещение файловых систем (особенно тех, к которым очень часто происходит одновременное обращение) на отдельные физические диски. Это и понятно, ведь каждое устройство управляется и работает независимо друг от друга. Такой подход часто применяют в веб-хостинге, размещая файлы данных и файлы журналов веб-сервера и/или СУБД (системы управления базами данных) таким образом, чтобы они находились на разных дисках.

Также хорошо сказывается на производительности применение виртуальных дисков. Когда в системе работает специальный драйвер. Который ведёт себя как драйвер устройства хранения. Но на самом деле производит чтение/запись непосредственно в память. Конечно, данный способ применим разве что ко всякого рода временным данным. Вроде кешей, буферов демонов и т. д. Однако, если максимально избавить систему от «бремени» обработки временных файлов через диски. То в результате можно получить ощутимый прирост в производительности дисковой подсистемы. И как следствие — всей системы в целом.

Заключение

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

Источник

Нагрузка на диски в Linux

Для измерения текущей нагрузки на диски (что происходит, кто куда копирует и прочее) в Linux можно использовать iotop (и здесь же lsof) и iostat. А для тестирования возможностей дисковой системы fio. Несмотря на то, что первое, о чем можно подумать в плане попугаев — это IOPS или же Мб/сек за чтение или запись, обратите внимание на время ожидания. Примерно как если бы вы стояли в очереди в кассу: вас обслужили бы за 2 минуты, но очередь может быть минут на 30. И со стороны наблюдателя ваш процесс обслуживания будет «висеть». Именно так могут ощущать себя клиенты сервера, если время ожидания будет намного превышать время выполнения конкретной задачи. Поэтому определение длинной очереди и задержек часто бывает более важным, чем знать, что ваш диск «вау, может писать 400 Мбит/с». Нагрузка на диск может оказаться в 4000 Мбит/с в течение длительных периодов времени и все это время клиенты сервера будут недовольны.

Я здесь пишу свой опыт, со своим видением и трактовкой. Пожалуйста, учитывайте это.

IOTOP

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

Здесь видно, что в данный момент mc что-то пишет (а в это время в другом окне я в самом деле копировал кучу файлов на usb-диск в Midnight Commander (он же mc).

Понять, что коипрует mc в данный момент можно узнать командой:

IOSTAT

Пример вывода iostat на незагруженной в данный момент старенькой системе из двух SATA HDD в soft raid 1 (зеркало) mdadm:

Команда выглядела так:

-x — расширенная статистика

-t — выводить время для каждой порции замеров

-m — результаты в Мбайт

5 — интервал замеров 5 секунд.

Если нужны не история, а динамика процесса, попробуйте так:

watch iostat -x -t -m 1 2

В этом выводе r/s и w/s это отправленные к устройству запросы на выполнение (IOPS, которые хотелось бы, чтобы устройство выполнило).

await — время, включающее ожидание выполнения запроса (как если бы вы встали в очередь в кассу и ждали бы, пока вас обслужат).

svctm — время, реально затраченное на выполнение запроса (время «на самой кассе»).

Для обычных SATA дисков нагрузка IOPS где-то до 100-130 вполне выполнимая. В момент проведения замеров запрошенная нагрузка была 40 IOPS, поэтому запрос практически в очереди и не стоял, его обслужили почти сразу (на «кассе» никого не было). Поэтому await практически равен svctm.

Другое дело, когда нагрузка на диск вырастает:

Читайте также:  Удаленное управление до загрузки windows

%iowait — простой процессора (время в процентах) от или процессоров, в то время пока обрабатывались запросы. Т.е. в среднем процессор отдыхал почти 50% времени.

%user — загруженность процессора пользовательскими приложениями. По этому параметру видно, например, что в данный период процессор был почти не занят. Это важно, т.к. может помочь отсечь подозрения в тормозах из-за процессора.

Замер сделан во время переноса большого количества писем из одной папки IMAP в другую. Особо обратите внимание на await и svctm. Налицо длинная очередь (отношение await к svctm). Дисковая система (или чипсет, или медленный контроллер SATA, или. ) не справляется с запрошенной нагрузкой (w/s).. Для пользователей в этот момент все выглядело просто — сервер тупит или даже завис.

Заранее проверить производительность дисков можно с помощью fio. Также можно примерно оценить на одной машине производительность дисков и понимать, какой уровень «в среднем по больнице» вы можете ожидать. Это, конечно же, не правильно, но оценить все же поможет. Глубже анализировать результаты, а, главное, методики тестов мне пока трудно.

# yum install fio

# apt-get install fio

В общем виде запуск выглядит так:

Файл your.cfg (название произвольное) может быть примерно таким (пример рабочего конфига для теста на чтение):

Буферизацию не используем (buffered=0), чтение не последовательное (rw=randread).

Во время выполнения этого теста (а выполняться тест может доооолго, надоест — Ctrl+C, результаты все равно будут) можно запустить iostat и посмотреть, что происходит:

Обратите внимание на отношение await к svctm: await/svctm = 32,11..11, т.е. можно считать 32. Это и есть iodepth из конфига your.cfg. Теперь проще понять смысл iodepth — мы указываем, насколько хотим в тесте имитировать длинную очередь заданий.

Я не стал ждать два дня, Ctrl+C и вот результат:

Получили 109 iops, что в принципе нормально, диск обычный, SATA.

Источник

Команда iostat в Linux с примерами

Команда iostat в Linux используется для мониторинга системной статистики ввода-вывода для устройств и разделов. Он контролирует ввод / вывод системы, наблюдая за временем, в течение которого устройства активны, относительно их средней скорости передачи. Производственные отчеты iostat могут использоваться для изменения конфигурации системы, чтобы повысить баланс ввода / вывода между физическими дисками. iostat входит в пакет sysstat . Если у вас его нет, вам нужно сначала установить.

Команда для установки на разных дистрибутивах:

  • На RedHat / CentOS / Fedora
  • В Debian / Ubuntu / Linux Mint

Примечание: 10 команд Linux iostat для составления статистики процессора и ввода-вывода перечислены ниже:

  • iostat: получить отчет и статистику.
  • iostat -x: показать более подробную статистическую информацию.
  • iostat -c: показать только статистику процессора.
  • iostat -d: показать только отчет об устройстве.
  • iostat -xd: Показать расширенную статистику ввода / вывода только для устройства.
  • iostat -k: захват статистики в килобайтах или мегабайтах.
  • iostat -k 2 3: Показать статистику процессора и устройства с задержкой.
  • iostat -j ID mmcbkl0 sda6 -x -m 2 2: Показать статистику постоянных имен устройств.
  • iostat -p: Показать статистику для блочных устройств.
  • iostat -N: Показать статистическую информацию lvm2.

1) Команда iostat: команда iostat в linux используется для получения отчета и статистики.

Синтаксис:

Пример: вот пример.

Первый раздел содержит отчет о процессоре:

  • % user: показывает процент использования ЦП при выполнении на уровне пользователя.
  • % nice: показывает процент использования ЦП, произошедшего при выполнении на уровне пользователя с хорошим приоритетом.
  • % system: показывает процент использования ЦП, произошедшего при выполнении на уровне системы (ядра).
  • % iowait: показывает процент времени, в течение которого ЦП или ЦП находились в режиме ожидания, в течение которого система имела невыполненный запрос дискового ввода-вывода.
  • % steal: показывает процент времени, затраченного на принудительное ожидание виртуальным процессором или процессорами, пока гипервизор обслуживал другой виртуальный процессор.
  • % незанятости: показывает процент времени, в течение которого ЦП или ЦП находились в состоянии простоя, и система не имела невыполненного запроса дискового ввода-вывода.

Второй раздел вывода содержит отчет об использовании устройства:

  • Устройство: имя устройства / раздела указано в каталоге / dev .
  • tps: количество передач в секунду, которые были выданы устройству. Более высокое значение tps означает, что процессор загружен.
  • Blk_read / s: показывает количество данных, считанных с устройства, выраженное в количестве блоков (килобайт, мегабайт) в секунду.
  • Blk_wrtn / s: объем данных, записываемых на устройство, выраженный в количестве блоков (килобайт, мегабайт) в секунду.
  • Blk_read: показывает общее количество прочитанных блоков.
  • Blk_wrtn: показывает общее количество записанных блоков.
Читайте также:  Как перенести лицензионный windows

iostat использует файлы, указанные ниже, для создания отчетов:

  • /proc/stat Содержит системную статистику.
  • /proc/uptime Содержит время работы системы.
  • /proc/diskstats Содержит статистику дисков.
  • /sys Содержит статистику по блочным устройствам.
  • /proc/self/mountstats Содержит статистику для сетевых файловых систем.
  • /dev/disk Содержит постоянные имена устройств.

2) Команда iostat -x: эта команда отображает более подробную статистическую информацию. В результате команда iostat выдает отчет об использовании устройств ввода-вывода. Таким образом, можно расширить статистический результат для глубокой диагностики с помощью опции -x .

Синтаксис:

Пример:

  • avg-cpu: Он сообщает нам информацию о блоке процессора.
  • Devide: он сообщает нам информацию о блоке устройства. Чтобы быть уверенным, что вы находитесь на хорошем устройстве.
  • % util : говорит нам о том, сколько времени устройство хранения выполняло выдающуюся работу (было занято).
  • svctm : указывает, насколько быстро ваша подсистема ввода-вывода отвечает на запросы в целом, когда занята. На самом деле, чем меньше вы загружаете свою систему, тем выше svctm.
  • await : указывает на скорость выполнения запросов. Это просто среднее.
  • avgqu-sz : сообщает, сколько запросов в очереди. Низкий = либо ваша система не будет загружена, либо имеет сериализованный ввод-вывод и не может правильно использовать базовое хранилище. Высокий = ваш программный стек достаточно масштабируем, чтобы быть загруженным должным образом в основе ввода / вывода.
  • avgrq-sz : это просто средний размер запроса, который может указывать на тип рабочей нагрузки.
  • wsec / s & rsec / s : он сообщает нам количество читаемых и записываемых секторов в секунду. Разделите на 2048, и вы получите мегабайт в секунду.
  • r / s & w / s : он сообщает нам запросы на чтение и запись в секунду. Эти цифры являются показателями емкости ввода / вывода, хотя, конечно, в зависимости от того, какое давление оказывается на подсистему ввода / вывода (размер очереди!), Они могут варьироваться.
  • rrqm / s & wrqm / s : сообщает, сколько запросов было объединено на уровне блоков.

3) Команда iostat -c: эта команда показывает только статистику процессора. Можно показать статистическую информацию и отчет нашего процессора с параметром -c .

Синтаксис:

Пример:

4) Команда iostat -d: эта команда отображает только отчет об устройстве. Отображать статус использования устройства можно только с помощью опции -d . Будет собираться список информации для каждого подключенного устройства.

Синтаксис:

Пример:

5) Команда iostat -xd: эта команда показывает нам расширенную статистику ввода-вывода только для устройства. Мы можем отображать расширенную статистику с одной стороны, а с другой стороны мы можем отображать расширенную статистику. Это означает, что мы можем отображать расширенную статистику только для устройств с помощью опции -xd как -xd ниже:

Синтаксис:

Пример:

6) Команда iostat -k: эта команда записывает статистику в килобайтах или мегабайтах. По умолчанию iostat измеряет систему ввода-вывода в байтах. Чтобы было проще читать, мы можем преобразовать iostat, чтобы он отображал отчеты в килобайтах или мегабайтах.

Синтаксис:

Пример:

7) Команда iostat -m: используется для создания отчета с мегабайтами.

Синтаксис:

Пример:

8) Команда iostat -k 2 3: эта команда отображает статистику процессора и устройства с задержкой. То же самое с vmstat, поскольку инструмент статистики — лучший способ использовать его с параметром задержки. С задержкой, мы можем видеть, какова тенденция. Вот несколько примеров запуска iostat с задержкой.

Синтаксис:

Пример:

9) Команда iostat -c 2 2: Показать отчет только о процессоре с интервалом в 2 секунды и 2 раза.

Синтаксис:

Пример:

10) iostat -d sda7 sda6 2 2 Команда: Показать отчеты только для устройств sda6 и sda7 с интервалом в 2 секунды и 2 раза.

Источник

Оцените статью