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. Также можно примерно оценить на одной машине производительность дисков и понимать, какой уровень «в среднем по больнице» вы можете ожидать. Это, конечно же, не правильно, но оценить все же поможет. Глубже анализировать результаты, а, главное, методики тестов мне пока трудно.

Читайте также:  Как работает диспетчер процессов windows

# 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.

Источник

Кто загружает винт?

Есть достаточно нагруженный веб-сервер, дистрибутив Slackware, ядро Linux 2.4.36.3. Судя по atop, загрузка диска критическая. Причем, операций записи часто больше, чем чтения. Типичная картина такая (строка из atop): DSK | sda | busy 49% | read 39/s | write 49/s | avio 5 ms | Периодически появляется пик на запись, например write 234/s. Методом пристального вглядывания определить процесс(ы), который много пишет на диск не получается. Как бы это еще узнать? Для ядра 2.6 есть патчи под atop http://www.atcomputing.nl/Tools/atop/kernpatch.html но у нас ядро 2.4.

Re: Кто загружает винт?

Re: Кто загружает винт?

там список из 27 тысяч открытых файлов: lsof /dev/sda4 | wc -l 27848

Re: Кто загружает винт?

8000 с 10ю пользователями , экспорт домашек nfs. Может сравнение и не то , не знаю , как у вас используется сервер.

Re: Кто загружает винт?

ежели это хостинг, то практически 100% гарантия что это mysql. как вариант можно ему увеличить буферы, чтоб он более интенсивно юзал оперативу. хотя это пальцем в небо догадка.

Re: Кто загружает винт?

Подтверждаю , Оракл с мускул у меня отдирают треть.

Re: Кто загружает винт?

> практически 100% гарантия что это mysql

Это может быть всё что угодно. Юзеры файлы заливают/сливают, какая-нить статистика логи обрабатывает, в своп всё ушло итп. Ну и мускул тоже может быть.

Re: Кто загружает винт?

кстати про своп. оператива свободная присутствует? 😉

Re: Кто загружает винт?

В том то и дело, что грузить винт может кто угодно. И я тоже ставлю на мускуль. Но вопрос был в другом — есть ли возможность узнать это точно?

Re: Кто загружает винт?

т.е. более конкретно — есть ли возможность средствами ОС определить либо процесс, который пишет на диск, либо файл в который идет запись?

Re: Кто загружает винт?

окромя lsof, и грепанья по нему наверное никак.

Источник

Как узнать какой процес или что грузит диск в кластере 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 огромный — не добавляется 🙁 может бы ть избранное из него?

Читайте также:  Windows 10 при закрытии крышки выключается как сделать

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

Чтоб узнать, что грузит. Если в госте всё в порядке, значит сам 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. Файл сервер только и осталось перенести, но система чувствую не взлетает.

Источник

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

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

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

Читайте также:  Все кодеки для windows 10 64 bit

Источник

Выявляем процессы с дисковой активностью в Linux

TL;DR: статья рассказывает об удобном, быстром и надежном способе определения Linux-программ, записывающих данные на диск, что помогает в выявлении большой или аномально частой нагрузки на дисковую подсистему, а также позволяет оценить накладные расходы файловой системы. Это особенно актуально для SSD в ПК, EMMC и Flash-памяти в одноплатных компьютерах.
В ходе написания статьи обнаружилось, что запись нескольких килобайт данных на файловую систему BTRFS приводит к записи 3 мегабайт реальных данных на диск.

Введение

После 7 месяцев использования нового SSD я решил проверить количество записанных данных, как их сообщает сам диск через SMART.
19.7 ТБ.
Всего за 7 месяцев я использовал 13% от гарантированного количества записанных данных, притом, что он настроен в соответствии с рекомендациями по выравниваю разделов и настройке ФС, swap у меня почти не используется, диски виртуальных машин размещены на HDD!
Это аномально большая цифра, такими темпами гарантийный TBW будет превышен раньше достижения 5-летнего срока гарантии диска. Да и не может мой компьютер писать по 93 гигабайта в сутки! Нужно проверить, сколько данных пишется на диск за 10 минут…

Total:
Writes Queued: 24,712, 2,237MiB
Writes Completed: 25,507, 2,237MiB
Write Merges: 58, 5,472KiB

Определение количества записанных данных на дисковое устройство

Мой SSD хранит количество записанных данных в параметре 241 Total_LBAs_Written, в логических блоках (LBA), а не в байтах. Размер логического блока в моём случае — 512 байт (его можно увидеть в выводе smartctl, в Sector Size). Чтобы получить байты, нужно умножить значение параметра на 512.

Программа skdump на моём SSD пытается интерпретировать значение Total_LBAs_Written как-то по-своему, из-за чего выводит 1296217.695 TB , что, очевидно, некорректно.

Чтобы узнать количество записываемой информации на уровне устройства, воспользуемся программой btrace из состава пакета blktrace . Она показывает как общую статистику за всё время работы программы, так и отдельные процессы и потоки (в т.ч. ядра), которые выполняли запись.

Запустите следующую команду, чтобы собрать информацию за 10 минут, где /dev/sdb — ваш диск:

btrace позволяет наглядно посмотреть реальное количество записанных данных, но понять, какие именно программы совершают запись, из её вывода сложно.

Определение программ, производящих запись на накопитель

Программа iotop покажет процессы, пишущие на диск, и размер записанных данных.
Наиболее удобный вывод обеспечивают следующие параметры:

В глаза бросается Firefox, записавший 283 мегабайта за несколько минут работы iotop.

Определение файлов, в которые производится запись

Информация о процессе, насилующим диск — хорошо, а пути, по которым производится запись — еще лучше.

Воспользуемся программой fatrace , которая отслеживает изменения файловой системы.

Fatrace не умеет показывать количество записанных данных вследствие использования довольно простого отслеживания факта обращения к файлам через inotify.

Из вывода видно, как хабр сохраняет мою статью в local storage браузера, пока я её пишу, а также расширение Group Speed Dial, которое, как удалось обнаружить именно с помощью fatrace, читает свои данные каждые 30 секунд. Именно читает, а не записывает: CW перед файлом говорит о том, что файл открывается на чтение и запись, с одновременным созданием файла, если он отсутствует (вызывается openat с флагом O_RDWR|O_CREAT), но не говорит, что в файл действительно писалась какая-либо информация.

На всякий случай, чтобы удостовериться в этом, воспользуемся strace, с фильтром на файловые системные вызовы:

Нет ни одного вызова write() , что говорит об отсутствии записи в файл.

Определение накладных расходов файловой системы

Большая разница в показаниях iotop и btrace натолкнула на мысль протестировать файловую систему путем ручной записи данных в файл и отслеживания показаний btrace.

Если полностью исключить запись на диск, загрузившись в emergency-режим systemd, и записать вручную пару байт данных в существующий файл, btrace на SSD с btrfs сообщает о записи 3 мегабайт реальных данных. Свежесозданная файловая система флешке размером в 8 ГБ записывает минимум 264 КиБ при записи одного байта.
Для сравнения, запись пары байт в файл на ext4 оканчивается записью 24 килобайтов данных на диск.

В 2017 году Jayashree Mohan, Rohan Kadekodi и Vijay Chidambaram провели исследование усиления записи разных файловых систем, их результаты для btrfs и ext4 на при записи 4 КБ соотносятся с моими.

Источник

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