Меню

Чем загружен диск linux

Нагрузка на диски в 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.

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

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

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

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

Читайте также:  Как узнать свою версию directx windows 10

Заранее проверить производительность дисков можно с помощью 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 позволяет проанализировать загруженность системы. Она выводит основные параметры ввода и вывода данных на диск, скорость записи и чтения данных, а также количество записанных или прочитанных данных. Кроме того, утилита выводит параметры загруженности процессора. Её можно использовать для оптимизации работы системы.

В этой статье мы рассмотрим как пользоваться iostat и что означают основные колонки в её выводе.

Описание iostat Linux

Синтаксис iostat очень простой. Вам достаточно выполнить:

$ iostat опции устройство интервал

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

  • — отобразить только информацию об использовании процессора;
  • -d — отобразить только информацию об использовании устройств;
  • -h — выводить данные в отчёте в удобном для чтения формате;
  • -k — выводить статистику в килобайтах;
  • -m — выводить статистику в мегабайтах;
  • -o JSON — выводить статистику в формате JSON;
  • -p — вывести статистику по устройству и всех его разделам;
  • -x — вывести расширенную статистику;
  • -y — отображать статистику с момента запуска утилиты, а не системы;
  • -z — спрятать информацию о дисках, у которых нет активности.

Использование iostat в Linux

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

В первой части отчёта находится информация о загруженности процессора. Тут есть такие колонки:

  • %user — процент использования процессора программами, запущенными на уровне пользователя;
  • %nice — процент использования процессора программами запущенными тоже в пространстве пользователя, но только с изменённым приоритетом;
  • %system — процент использования процессора ядром;
  • %iowait — процент времени затраченного на ожидание завершения операций ввода/вывода;
  • %steal — процент простоя виртуального процессора, пока гипервизор отдаёт мощность другому виртуальному процессору;
  • %idle — процент времени пока процессор не занят ничем.
Читайте также:  Как найти разделы linux

Если значение параметра %iowait слишком большое, то это может означать, что у вас проблема с производительностью диска и слишком много времени тратится на ожидание завершения ввода/вывода. Для устройств ввода/вывода тоже отображается ряд колонок с информацией. Разберемся что они означают:

  • tps — означает количество запросов на чтение или запись к устройству в секунду;
  • KB_read/s, MB_read/s — количество килобайт или мегабайт, прочитанных с устройства за секунду;
  • KB_wrtn/s, MB_wrtn/s — количество килобайт или мегабайт записанных на устройство в секунду;
  • KB_dscd/s, MB_dscd/s — скорость освобождения блоков данных на устройстве, килобайт или мегабайт в секунду;
  • KB_read, MB_read — общее количество прочитанных данных с диска с момента загрузки системы;
  • KB_wrtn, MB_wrtn — количество записанных данных с момента загрузки системы;
  • KB_dscd, MB_dscd — количество освобождённых блоков на диске в результате выполнения операции trim в килобайтах или мегабайтах.

С чтением и записью, я думаю, что всё понятно. Освобождение блоков с данными с помощью операции trim или discard актуально для SSD дисков. Этой операцией файловая система сообщает какие блоки больше хранить физически не нужно и можно использовать для других целей. Утилита отображает с какой скоростью эти блоки освобождаются, а также сколько блоков или мегабайт данных было освобождено. Рассмотрим ещё несколько примеров. Для просмотра данных в удобном формате выполните:

Чтобы посмотреть данные по нужному устройству просто укажите это устройство:

sudo iostat /dev/nvme0n1

Можно посмотреть статистику по каждому разделу устройства, тогда надо воспользоваться опцией -p:

sudo iostat -p /dev/nvme0n1

Чтобы утилита автоматически обновляла данные каждую секунду просто добавьте интервал. Например:

sudo iostat -p /dev/nvme0n1 1

Если вы не хотите чтобы утилита суммировала все данные с момента запуска операционной системы, то можно использовать опцию -y. Но работает она только если задан интервал:

sudo iostat -y -p /dev/nvme0n1 1

Выводы

В этой статье была рассмотрена команда iostat Linux. Она позволяет понять почему зависает ваша система и действительно ли причина этому — жёсткий диск. Мы рассмотрели далеко не все опции утилиты и далеко не все колонки из возможного её вывода. Более подробную информацию вы можете найти выполнив:

Самая свежая и достоверная информация, как правило, заполняется разработчиками и находится на man — страницах.

Источник

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

Иногда бывают ситуации, когда в top’e вроде бы всё нормально, но сервер всё равно тормозит. Тогда нужно обратить внимание на нагрузки дисковой подсистемы. В статье мы рассмотрим варианты для Unix систем: FreBSD, OpenBSD, Linux, Solaris.

Читайте также:  Обновление windows после которого слетает активация

FreeBSD

Во FreeBSD есть штатная утилита gstat, при запуске которой без параметров мы увидим текущую нагрузку на диски.

Как видно из примера, очень большая нагрузка на диск ad4.

Так же можно смотреть и через iostat (пример из другой ОС):

А ещё можно использовать команду systat -iostat:

А что-бы определить процесс, который нагружает диски, выполним такую команду:

#top -m io -o total

OpenBSD

Для OpenBSD есть штатная утилита iostat, которая показывает нагрузку на диски+CPU usage. При обычном запуске она показывает не больше 4 дисков, но если нужно больше, то указываем все нужные диски.

Linux

Для Linux есть аналог утилиты gstat — iostat. В Debian/Ubuntu она находится в пакете sysstat.

Здесь мы поставили автообновление каждую секунду. Хочу обратить внимание на то, что первые пару выводов во внимание не брать, так как в первом выводе отображается информация из кеша, а не реальные показатели. Как видим, диски здесь не нагружены

Для определения процесса, который нагружает диски, есть утилита iotop, правда её нужно ставить отдельно.

Solaris

Для solaris существует 3 метода: zpool iostat, утилита iostat, fsstat. Единственный недостаток, это то, что мы не сможем отображать статистику отдельно по каждой из zfs, а только можем отдельно по каждому диску:

Здесь как и в случае с Linux не учитываем первый вывод. Как видим, диски простаивают (значение столбца %b — busy).

Общую картину можно так же посмотреть через fsstat:

Очень удобно просматривать информацию по конкретной zfs:

Смотрим нагрузку на диски : 5 комментариев

Программа ‘gstat’ на данный момент не установлена. Вы можете установить ее, напечатав:
apt-get install ganglia-monitor

Это не тот gstat, которым смотрят диски — просто названия одинаковые.

FreeBSD
top -m io -o total

ога ))
по моему то чё он предлагает имеет отношение к sql

если zfs на фре то «zpool iostat -vl 1» надо юзать без l
zpool iostat -v 1

Источник

Чем загружен диск linux

Статистику по операциям ввода-вывода для дисков можно посмотреть при помощи команд iostat и pidstat. Это поможет понять какие процессы создают набольшую нагрузку на диск в Linux.

Для работы с этими утилитами придется установить дополнительные пакеты. Инструкция по установка:
1) Debian\Ubuntu:

Команда iostat

Просмотр общей статистики ввода-вывода по дискам можно осуществить командой:

Пример вывода команды:

Важными столбцами являются:

  • r/s Число операций чтения с диска в секунду
  • w/s Число операций записи на диск в секунду
  • rkB/s Число прочитанных килобайт за секунду
  • wkB/s Число записанных килобайт за секунду

Команда pidstat

Просмотр статистики в разрезе процессов можно посмотреть в интерактивном режиме при помощи команды:

Пример вывода команды:

Важными столбцами являются:

  • UID Идентификатор пользователя, от имени которого работает процесс
  • PID Идентификатор процесса
  • kB_rd/s Скорость в килобайтах в секунду, с которой процесс читает с диска
  • kB_wr/s Скорость в килобайтах в секунду, с которой процесс записывает на диск

Источник

Adblock
detector