Меню Рубрики

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).. Для пользователей в этот момент все выглядело просто – сервер тупит или даже завис.

Заранее проверить производительность дисков можно с помощью 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.

Источник

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

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

FreeBSD

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

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

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

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

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

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. Это поможет понять какие процессы создают набольшую нагрузку на дисковую подсистему.

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

Команда iostat

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

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

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

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

Команда pidstat

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

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

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

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

Источник

Как узнать какой процес или что грузит диск в кластере proxmox?

два обычных компа – по два SATA диска 4ТБ в каждом. два диска в drbd для KVM виртуалок. два других под системы.
Всего 8 виртуалок (sql сервер,файл сервер, два контроллера домена, теримнальный сервер,шлюз в инет,астериск и по мелочи) – 7 на одной ноде и одна на другой. drbd Primary/Primary. Загрузки нет никакой в виртуалках но диск под ними грузится на 50-75% по команде atop видно. Как понять что грузит этот диск ОСь или какой либо процесс.
Что покрутить или только SSD диск спасет ситуацию?

А iotop тут ничем не поможет?

Видно всю нагрузку создает одна машина – где то 4МБ/с при этом atop показывает 33-45% загрузки диска sdb.
НО! Скорость диска – хорошо было видно при инициировании drbd диска была на уровне 50-55МБ/с. Сейчас загрузка от виртуалок меньше в 10 раз, но atop показывает соизмеримые цифры как во время синхронизации drbd.
Получается что виртуалкам сейчас доступно максимум 12МБ, а где остальные 35МБ?

Процессоры отдыхают загрузка 25-30% и оперативка занята на 30%

А если на самой машине запустить?

iotop запускал в хостовой ОС.

Цифры в студию.
cat /proc/drbd
cat /proc/mdadm
dmesg
syslog
и прочие выхлопы всяких *top.

Я имел в виду в госте запустить. Для офтопа тоже есть подобные утилиты. process explorer от русиновича следит за диском.

немного подсократил вывод

dmesg огромный – не добавляется 🙁 может бы ть избранное из него?

а для чего внутри виртуалки (гостя) то запускать?

Чтоб узнать, что грузит. Если в госте всё в порядке, значит сам kvm.

по iotop загрузка от всех kvm виртуалок – 3-7МБайт/с, а по аtop загрузка диска – 50%
. т.е. загрузка создаваемая гостевой ОСью уже сидит в этих цифрах

Это tazhate хотел. Я только про pastebin подсказал.

По поводу iotop в гостях – а вдруг там какой процесс реально много обращается. Так его сразу и вычислишь.

в первом посте – под «загрузки нет никакой» имел ввиду – что при низкой загрузке диска 3-5МБ/с по atop диск загружен на 50%. т.е. кто съел остальные 40-45МБ?

виртуалка которая создает нагрузку иногда это файл сервер – суммарно 3-4 МБ/с, это хорошо видно в хостовой части – загрузка по iotop аналогична. Но больше скорости на файл сервере невозможно достичь, это и есть проблема.

Но больше скорости на файл сервере невозможно достичь.

А какая фс? Посмотри и/о нагрузку.

Как понять что грузит этот диск ОСь или какой либо процесс.

БЛИИН как надоела эта кнопка отмены справа.

короче последовательная чтение/запись одно дело, а рендомное другое. скорость последовательных операций можешь проверить с помощью dd(ну понятное дело на простаивающей системе), если в пределах, привет ssd, хотябы под кэш! sql сервер с прочей лабудой на одном диске очень здоровое решение – запустит бух проводку за квартал и привед аторизация, печать и интернет.

все виртуалки на proxmox переехали с сервера (обычный комп) под Hyper-V в Windows Server 2008, на этом сервере они были тоже виртуалками. Все виртуалки спокойно уживались и файлсервер нормально работал, кстати то что скорость не поднимается выше 3-5 МБ/с и было замечено при переезде – копировании файлов со старого файл сервера. При этом atop на proxmox пишет, что диск сильно занят 50-75%. На старом дисковая подсистема – это два диска в зеркале, программный RAID. Файл сервер только и осталось перенести, но система чувствую не взлетает.

Источник


Adblock
detector