Описание iostat linux

19.5. Утилита vmstat

Для получения статистики использования ресурсов центрального процессора, устройств хранения данных и памяти в однострочном формате в составе дистрибутивов имеется утилита . В примере ниже показан вывод утилиты vmstat, обновляющей значения параметров 100 раз в течение каждых двух секунд (или до момента нажатия сочетания клавиш Ctrl-C). В столбце r приводится количество процессов, ожидающих доступности ресурсов центрального процессора, а количество процессов в неактивном состоянии приводится в столбце b. Объем станиц памяти в пространстве подкачки остается неизменным и равным 144 килобайтам, объем свободной оперативной памяти резко снизился с 16.7 МБ до 12.9 МБ. Для получения информации об остальных данных, выводимых утилитой vmstat, следует обратиться к странице руководства man vmstat.

$ vmstat 2 100
procs ----------memory--------- --swap-- ---io--- --system-- ---cpu----
r  b  swpd   free   buff  cache  si  so  bi   bo   in    cs us sy id wa
0  0   144  16708  58212 111612   0   0   3    4   75    62  0  1 99  0
0  0   144  16708  58212 111612   0   0   0    0  976    22  0  0 100 0
0  0   144  16708  58212 111612   0   0   0    0  958    14  0  1 99  0
1  0   144  16528  58212 111612   0   0   0   18 1432  7417  1 32 66  0
1  0   144  16468  58212 111612   0   0   0    0 2910 20048  4 95  1  0
1  0   144  16408  58212 111612   0   0   0    0 3210 19509  4 97  0  0
1  0   144  15568  58816 111612   0   0 300 1632 2423 10189  2 62  0 36
0  1   144  13648  60324 111612   0   0 754    0 1910  2843  1 27  0 72
0  0   144  12928  60948 111612   0   0 312  418 1346  1258  0 14 57 29
0  0   144  12928  60948 111612   0   0   0    0  977    19  0  0 100 0
0  0   144  12988  60948 111612   0   0   0    0  977    15  0  0 100 0
0  0   144  12988  60948 111612   0   0   0    0  978    18  0  0 100 0

$

4 iostat Examples

Continuous execution of iostat with specific interval

Execute iostat continuously at specific interval, and up to N times

$ iostat interval count

Execute iostat every 10 seconds for 5 times.

$ iostat 10 5 
Linux 2.6.31-17-generic (sathiya-laptop) 	05/25/10 	_i686_	(1 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
          24.24    1.51    7.49    4.97    0.00   61.79

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
sda              14.06       249.94       121.22    1337998     648912
sr0               0.01         0.23         0.00       1248          0

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
          13.13    0.00    6.21    0.60    0.00   80.06

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
sda               2.51         4.01        28.86         40        288
sr0               0.00         0.00         0.00          0          0

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
          11.11    0.00    5.71    0.00    0.00   83.18

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
sda               0.30         0.00         3.20          0         32
sr0               0.00         0.00         0.00          0          0

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
          11.61    0.00    6.51    0.40    0.00   81.48

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
sda               4.10         0.00        68.87          0        688
sr0               0.00         0.00         0.00          0          0

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
          15.03    0.00    5.91    0.20    0.00   78.86

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
sda               1.50         0.00        30.46          0        304
sr0               0.00         0.00         0.00          0          0

View only the device report

View only the device report only once.

$ iostat -d   
Linux 2.6.31-17-generic (sathiya-laptop) 	05/25/10 	_i686_	(1 CPU)

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
sda              12.17       207.67       108.62    1352766     707584
sr0               0.00         0.19         0.00       1248          0

View the device report continuously for every 2 seconds, for 5 times.

$ iostat -d 2 5
Linux 2.6.31-17-generic (sathiya-laptop) 	05/25/10 	_i686_	(1 CPU)

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
sda              11.12       186.33       100.49    1358494     732640
sr0               0.00         0.17         0.00       1248          0

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
sda               2.00       108.00         0.00        216          0
sr0               0.00         0.00         0.00          0          0

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
sda               5.00         0.00        96.00          0        192
sr0               0.00         0.00         0.00          0          0

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
sda               1.01         0.00         8.04          0         16
sr0               0.00         0.00         0.00          0          0

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
sda               0.00         0.00         0.00          0          0
sr0               0.00         0.00         0.00          0          0

View device statistics for particular devices

When you have multiple devices, and wanted information only about certain devices then you can do that with -p option.

$ iostat -p sda
Linux 2.6.31-17-generic (sathiya-laptop) 	05/25/10 	_i686_	(1 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
          23.71    0.91    8.63    3.20    0.00   63.55

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
sda               9.72       154.75        90.78    1375518     806888
sda1              0.00         0.11         0.00        946          0
sda2              0.00         0.00         0.00         14          0
sda3              4.74       115.66        30.38    1028073     270024
sda4              0.01         0.17         0.00       1522          0
sda5              4.96        38.75        60.40     344427     536864

For viewing multiple devices statistics, you can use

$ iostat -p sda, sdb

View extended statistics report

You can view extended statistics report using -x option.

$ iostat -x sda
Linux 2.6.31-17-generic (sathiya-laptop) 	05/25/10 	_i686_	(1 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
          23.20    0.73    8.62    2.75    0.00   64.70

Device:         rrqm/s   wrqm/s     r/s     w/s   rsec/s   wsec/s avgrq-sz avgqu-sz   await  svctm  %util
sda               3.65     7.00    4.99    3.64   131.34    85.14    25.10     0.35   40.25   4.55   3.93

№ 17: Nagios – мониторинг сервера и сети

– популярное open source приложение, предназначенное для мониторинга компьютерных систем и сетей. Вы можете легко следить за всеми своими хостами, сетевым оборудованием и сервисами. Приложение может посылать предупреждающее сообщение, когда что-то идет не так, как надо, а затем – еще одно, когда ситуация исправляется. Имеется приложение
— «Fully Automated Nagios» («Полностью автоматизированный Nagios»). Назначение FAN – обеспечить установку Nagios, в том числе и инструментария, предоставляемого сообществом Nagios. FAN распространяется в виде CD образа в стандартном формате ISO, что упрощает установку сервера Nagios.
Вдобавок на дистрибутиве имеется масса инструментальных средств, повышающих практическую отдачу от использования Nagios.

FIO

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

CentOS:

# yum install fio

Ubuntu:

# apt-get install fio

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

# fio your.cfg

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


blocksize=4k
filename=/dev/sda
rw=randread
direct=1
buffered=0
ioengine=libaio
iodepth=32

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

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

10/02/2015 04:17:37 PM
avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.60    0.00    1.70    4.01    0.00   93.69

Device:         rrqm/s   wrqm/s     r/s     w/s    rMB/s    wMB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sda               0.00     2.80  110.20    1.00     0.43     0.01     8.19    32.23  289.11  289.45  251.20   8.99 100.00
sdb               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00    0.00    0.00   0.00   0.00
sdc               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00    0.00    0.00   0.00   0.00

Обратите внимание на отношение await к svctm: await/svctm = 32,11..11, т.е. можно считать 32

Это и есть iodepth из конфига your.cfg. Теперь проще понять смысл iodepth — мы указываем, насколько хотим в тесте имитировать длинную очередь заданий.

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

readtest: (g=0): rw=randread, bs=4K-4K/4K-4K/4K-4K, ioengine=libaio, iodepth=32
fio-2.1.3
Starting 1 process
^Cbs: 1 (f=1):   [439KB/0KB/0KB /s] [109/0/0 iops] 
fio: terminating on signal 2

readtest: (groupid=0, jobs=1): err= 0: pid=4307: Fri Oct  2 17:15:17 2015
  read : io=1920.9MB, bw=448449B/s, iops=109, runt=4491370msec
    slat (usec): min=5, max=599, avg=49.93, stdev= 8.69
    clat (msec): min=10, max=1445, avg=292.21, stdev=208.52
     lat (msec): min=10, max=1445, avg=292.26, stdev=208.52
    clat percentiles (msec):
     |  1.00th=,  5.00th=, 10.00th=, 20.00th=,
     | 30.00th=, 40.00th=, 50.00th=, 60.00th=,
     | 70.00th=, 80.00th=, 90.00th=, 95.00th=,
     | 99.00th=, 99.50th=, 99.90th=, 99.95th=,
     | 99.99th=
    bw (KB  /s): min=  242, max=  527, per=100.00%, avg=438.05, stdev=25.81
    lat (msec) : 20=0.01%, 50=5.48%, 100=14.13%, 250=32.05%, 500=30.56%
    lat (msec) : 750=14.65%, 1000=2.93%, 2000=0.21%
  cpu          : usr=0.54%, sys=1.14%, ctx=501271, majf=0, minf=59
  IO depths    : 1=0.1%, 2=0.1%, 4=0.1%, 8=0.1%, 16=0.1%, 32=100.0%, >=64=0.0%
     submit    : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
     complete  : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.1%, 64=0.0%, >=64=0.0%
     issued    : total=r=491736/w=0/d=0, short=r=0/w=0/d=0

Run status group 0 (all jobs):
   READ: io=1920.9MB, aggrb=437KB/s, minb=437KB/s, maxb=437KB/s, mint=4491370msec, maxt=4491370msec

Disk stats (read/write):
  sda: ios=491810/3605, merge=257/4862, ticks=143668620/1157164, in_queue=144830660, util=100.00%

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

Авторизуйтесь для добавления комментариев!

14. Monitorix – Мониторинг системы и сети

Monitorix – это бесплатная, не требовательная к ресурсам утилита, которая предназначена для контроля за системой и сетевыми ресурсами в серверах Linux/Unix настолько, насколько это возможно. Она имеет встроенный HTTP веб-сервер, которые регулярно собирает системную и сетевую информацию и отображает её в графиках. Программа следит за нагрузкой на систему и использованием ресурсов, распределением памяти, здоровьем диска, системными сервисами, сетевыми портами, почтовой статистикой (Sendmail, Postfix, Dovecot и пр.), MySQL статистикой и многим другим. Программа предназначена для контроля общей производительности системы и помогает в обнаружении сбоев, узких мест, аномальной активности и т.д.

ENVIRONMENT

iostat

POSIXLY_CORRECT

When this variable is set, transfer rates are shown in 512-byte blocks instead
of the default 1K blocks.

S_COLORS

When this variable is set, display statistics in color on the terminal.
Possible values for this variable are
never,

always

or
auto

(the latter is the default).

Note: On Debian sysstems the colors are displayed by default when output is connected
to the terminal, even if this variable is not set (i.e. unset variable is treated as
if it were set to
auto).

Please note that the color (being red, yellow, or some other color) used to display a value
is not indicative of any kind of issue simply because of the color. It only indicates different
ranges of values.

S_COLORS_SGR

Specify the colors and other attributes used to display statistics on the terminal.
Its value is a colon-separated list of capabilities that defaults to
H=31;1:I=32;22:M=35;1:N=34;1:Z=34;22.

Supported capabilities are:

H=

SGR (Select Graphic Rendition) substring for percentage values greater than or equal to 75%.

I=

SGR substring for device names.

M=

SGR substring for percentage values in the range from 50% to 75%.

N=

SGR substring for non-zero statistics values.

Z=
SGR substring for zero values.
S_TIME_FORMAT

If this variable exists and its value is
ISO

then the current locale will be ignored when printing the date in the report
header. The
iostat

command will use the ISO 8601 format (YYYY-MM-DD) instead.
The timestamp displayed with option -t will also be compliant with ISO 8601
format.

I. Обзор

1.1 Процессорное время

индикатор процессора смысл
user Время пользовательского режима
nice Время пользовательского режима (низкий приоритет, хороший> 0)
system Время ядра
idle свободное время
iowait Время ожидания ввода / вывода
irq Жесткое прерывание
softirq Мягкое прерывание

Время iowait является ненадежным значением по следующим причинам:

  • ЦП не ожидает завершения выполнения ввода-вывода, а iowait — это время ожидания завершения ввода-вывода. Когда ЦП переходит в состояние ожидания, он может запланировать выполнение другой задачи, поэтому время вычисления iowait слишком мало;
  • Многоядерный процессор, вычисление iowait не относится к определенному ядру, поэтому очень сложно вычислить iowait каждого процессора;

Релевантная информация:http://man7.org/linux/man-pages/man5/proc.5.html

What is iostat?

Iostat command reports CPU and I/O statistics. iostat command is used during performance analysis to narrow down the problematic areas in the system.

Sample output of iostat command and its explanation:

$ iostat
Linux 2.6.31-17-generic (sathiya-laptop) 	05/25/10 	_i686_	(1 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
          25.99    0.78    7.43   12.77    0.00   53.03

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
sda              27.40       797.19       201.27     800902     202208
sr0               0.03         1.24         0.00       1248          0

The first line displays general information — Linux kernel version, hostname etc.,

Next two lines displays CPU statistics, in which the first 3 column displays average CPU usage. The 4th column displays the percentage of time the CPU were idle and waited for I/O response. 5th column displays percentage of waiting time of virtual CPU. 6th column displays the percentage of time the CPU is idle.

Remaining line displays the device utilization report. First line in that is headers, such as number of Transfer per second, number of blocks read per second, blocks write per second, total block reads, total block writes.

19.8. Утилиты sadc и sar

Утилита предназначена для записи данных, связанных с использованием ресурсов системы, в файлы , где символы заменяются на номер текущего дня месяца. По умолчанию демон crond исполняет сценарий через каждые 10 минут, а сценарий sal, в свою очередь, запускает на секунду утилиту . Также ежедневно перед полночью демон crond исполняет сценарий , который, в свою очередь, запускает утилиту . Утилита sar читает данные, собранные утилитой sadc в течение дня, и помещает сгенерированный на их основе отчет в файл /var/log/sa/sar??. Эти , созданные утилитой sar, содержат большой объем статистических данных.

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

$ sar -u | head
Linux 2.6.9-34.EL (RHELv4u3.localdomain)        01/27/2007

12:00:01 AM       CPU     %user     %nice   %system   %iowait    %idle
12:10:01 AM       all      0.48      0.01      0.60      0.04    98.87
12:20:01 AM       all      0.49      0.01      0.60      0.06    98.84
12:30:01 AM       all      0.49      0.01      0.64      0.25    98.62
12:40:02 AM       all      0.44      0.01      0.62      0.07    98.86
12:50:01 AM       all      0.42      0.01      0.60      0.10    98.87
01:00:01 AM       all      0.47      0.01      0.65      0.08    98.80
01:10:01 AM       all      0.45      0.01      0.68      0.08    98.78
$

Существуют и другие полезные параметры утилиты sar, такие, как , позволяющий выводить информацию об обработке запросов прерываний для каждого из обработанных запросов прерываний и для каждого центрального процессора, или , управляющий обработкой статистических данных, связанных с памятью. Для ознакомления с другими параметрами утилиты sar обратитесь к странице руководства man sar.

№14: tcpdump – детальный анализ сетевого трафика

Команда tcpdump – простая команда, выдающая дамп сетевого трафика. Однако, вам нужно
хорошо понимать протоколы TCP/IP для того, чтобы использовать это средство. Например, для того, чтобы показать информацию о трафике DNS, введите следующее:

# tcpdump -i eth1 'udp port 53'

Для того, чтобы показать все IPv4 HTTP пакеты, идущие на порт и с порта 80, т.е. выдать только те пакеты, которые содержат данные, и, например, не учитывать пакеты SYN и FIN и пакеты ACK-only, введите следующее:

# tcpdump 'tcp port 80 and (((ip - ((ip&0xf)<2)) - ((tcp&0xf0)>>2)) != 0)'

Для того, чтобы показать все сессии FTP для адреса 202.54.1.5, введите следующее:

# tcpdump -i eth1 'dst 202.54.1.5 and (port 21 or 20'

Для того, чтобы показать все сессии HTTP для адреса 192.168.1.5, введите следующее:

# tcpdump -ni eth0 'dst 192.168.1.5 and tcp and port http'

Введите следующую команду и используйте для просмотра подробностей программу анализа
:

# tcpdump -n -i eth1 -s 0 -w output.txt src or dst port 80

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

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

iostat  ] интервал количество_отчётов

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

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

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

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

IOSTAT

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

10/02/2015 12:30:58 PM
avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           5.22    0.00    1.91    8.23    0.00   84.64

Device:         rrqm/s   wrqm/s     r/s     w/s    rMB/s    wMB/s avgrq-sz avgqu-sz   await  svctm  %util
sda               0.00     0.00   40.20    1.80     0.39     0.00    19.24     0.21    4.90   4.51  18.94
sdb               0.00     0.00    0.00    1.80     0.00     0.00     3.67     0.01    7.22   7.11   1.28
md1               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
md2               0.00     0.00   40.20    0.40     0.39     0.00    19.82     0.00    0.00   0.00   0.00
md0               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00

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

iostat -x -t -m 5

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

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

10/02/2015 12:33:21 PM
avg-cpu:  %user   %nice %system %iowait  %steal   %idle
          10.36    0.00   10.26   52.41    0.00   26.97

Device:         rrqm/s   wrqm/s     r/s     w/s    rMB/s    wMB/s avgrq-sz avgqu-sz   await  svctm  %util
sda               2.80  3800.40   65.20  327.80     5.97    16.12   115.07    45.79  116.45   2.38  93.38
sdb               0.20  3799.00   18.80  329.00     2.41    16.12   109.09    35.00  100.60   2.08  72.28
md1               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
md2               0.00     0.00   87.00 4124.80     8.38    16.11    11.91     0.00    0.00   0.00   0.00
md0               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00

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

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

Это важно, т.к. может помочь отсечь подозрения в тормозах из-за процессора

Замер сделан во время переноса большого количества писем из одной папки IMAP в другую

Особо обратите внимание на await и svctm. Налицо длинная очередь (отношение await к svctm)

Дисковая система (или чипсет, или медленный контроллер SATA, или…) не справляется с запрошенной нагрузкой (w/s).. Для пользователей в этот момент все выглядело просто — сервер тупит или даже завис.

iostat — статистика использования устройств и разделов дисков

Утилита iostat также включена в пакет sysstat. Как можно догадаться из названия программы, она создаёт отчёты по статистике ввода/вывода для устройств и разделов. Её особенностью является то, что она показывает обобщённую статистику для всей системы, а также для отдельных носителей, не разбивая её на процессы. Программа iostat может пригодиться когда необходимо ответить на вопрос: «какой из постоянных носителей подвергается наибольшей нагрузке?».

Запуск программы без опций

iostat

выведет два блока информации:

  • отчёт по использованию ЦПУ
  • отчёт по использованию устройств

Раздел со статистикой использований устройств содержит следующие разделы:

  • Device — имя устройства или раздела, как оно указано в /dev
  • tps — указывает количество передач в секунду, отправленных на устройство. Передача — это запрос ввода-вывода к устройству. Несколько логических запросов можно объединить в один запрос ввода-вывода к устройству. Размер перевода является неопределённой величиной
  • kB_read/s — указывает объём данных, считанных с устройства, выраженный в количестве блоков (килобайт, мегабайт) в секунду. Блоки эквивалентны секторам и поэтому имеют размер 512 байт
  • kB_wrtn/s — указывает объём данных, записываемых на устройство, выраженный в количестве блоков (килобайт, мегабайт) в секунду
  • kB_dscd/s — указывает количество данных, отбрасываемых устройством, выраженное в количестве блоков (килобайт, мегабайт) в секунду
  • kB_read — общее количество прочитанных блоков (килобайт, мегабайт)
  • kB_wrtn — общее количество записанных блоков (килобайт, мегабайт)
  • kB_dscd — общее количество отброшенных блоков (килобайт, мегабайт)

Отчёт выводит для всей системы с момента её загрузки.

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

iostat -h

Опция -h является эквивалентом указания сразу двух опций —human и —pretty, поэтому если вы не в полной мере довольны видом выводимого отчёта, то попробуйте использовать эти опции по отдельности.

Для вывода максимальной полной информации, укажите опцию -x:

iostat -x

Если вам нужна информация только об устройствах, то используйте опцию -d:

iostat -d

Вы можете запустить команду указав время интервала (в секундах) и счётчик (количество отчётов) — в этом случае программа будет выводить информацию через заданный интервал:

iostat ИНТЕРВАЛ
iostat ИНТЕРВАЛ СЧЁТЧИК

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

Для поиска проблем, вы можете использовать следующую команду, которая непрерывно будет выводить информацию:

iostat -d 1
iostat -dx 1

С помощью iostat вы можете следить за скоростью чтения и записи на всё устройство, а также выявлять отброшенные блоки.

vmstat

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

Если ваши приложения занимают слишком много памяти, вы получите чрезмерное значение затрат страниц памяти (page-outs) — программы перемещаются из оперативной памяти в пространство подкачки вашей системы, которое находится на жестком диске. Ваш сервер может оказаться в таком состоянии, когда он тратит больше времени на управление памятью подкачки, а не на работу ваших приложений; это состояние называемое пробуксовкой (thrashing). Когда компьютер находится в состоянии пробуксовки, его производительность падает очень сильно. Команда , которая может отображать либо усредненные данные, либо фактические значения, может помочь вам определить программы, которые занимают много памяти, прежде, чем из-за них ваш процессор перестанет шевелиться.

[править] Понятные имена томов в выводе iostat

Для вывода нормальных имён томов в iostat
нужно использовать ключ -N:

 %# iostat -N

Если iostat не понимает ключ -N, она показывает
имена томов, которые чаще всего оказываются неинформативными
для администратора:

$ iostat -dx
Linux 2.6.18-4-xen-686 (cholpon)        14.02.2008

Device:         rrqm/s   wrqm/s     r/s     w/s   rsec/s   wsec/s avgrq-sz avgqu-sz   await  svctm  %util
sda               0,44   128,55    1,77    3,36    57,23  1055,45   216,61     0,98  189,81   3,00   1,54
sdb               0,08     0,00    0,05    0,00     0,60     0,00    12,57     0,00    1,92   1,61   0,01
dm-0              0,00     0,00    0,03    0,00     0,22     0,00     7,99     0,00    4,08   0,76   0,00
dm-1              0,00     0,00    0,03    0,00     0,21     0,00     7,98     0,00    3,96   1,00   0,00
dm-2              0,00     0,00    0,28  123,53    13,62   988,24     8,09   111,58  901,24   0,07   0,81
dm-3              0,00     0,00    0,02    0,48     1,06     3,83     9,75     0,02   37,80   0,67   0,03
dm-4              0,00     0,00    0,00    0,00     0,01     0,00     7,70     0,00    2,00   2,00   0,00
dm-5              0,00     0,00    0,03    0,00     0,22     0,00     7,99     0,00    1,69   0,75   0,00
dm-6              0,00     0,00    0,20    2,48     3,52    19,85     8,72     0,02    6,06   1,28   0,34

Здесь, видно, напимер, что нагрузка на dm-2 выше чем на другие LVM
тома, но сразу не видно, какому именно тому соответствует dm-2.
Это можно выяснить вручную:

%$ ls -l /dev/dm-2
brw-rw---- 1 root disk 254, 2 Фев 14 12:49 /dev/dm-2
%$ ls -l /dev/mapper/| grep '254,\s*2'
brw-rw---- 1 root disk 254,  2 Фев 14 12:49 MAIN-xen

Однако выяснять так каждый раз для каждой записи
неудобно. Было бы лучше, если бы имена были сразу
в таблице были представлены правильно.

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

dm_convert() { 
 sed "s/ /      /; $( \
 LANG=C ls -l /dev/dm* /dev/mapper/* | grep 25, | sort -n -k +6 | awk '{print $10}' \
 | sed 's@/dev/@@; s@mapper/@@'  \
 | perl -ne '$a=$_;$b=<>;chomp $a; chomp $b; $p=q(.)x(length($b)-length(a)-4); print qq(s/$a $p/$b/;) ')"
}

теперь вы можете пропускать вывод iostat через dm_convert’
и получать сразу понятные результаты:

Замер нагрузки на подсистему ввода/вывода с помощью iostat

$ iostat -dx 1 100 | dm_convert 
Linux 2.6.18-4-xen-686 (cholpon)        14.02.2008

Device:         rrqm/s   wrqm/s     r/s     w/s   rsec/s   wsec/s avgrq-sz avgqu-sz   await  svctm  %util
sda               0,43   124,98    1,74    3,33    55,91  1026,56   213,52     0,95  186,94   2,97   1,51
sdb               0,08     0,00    0,05    0,00     0,58     0,00    12,57     0,00    1,92   1,61   0,01
VG2-music         0,00     0,00    0,03    0,00     0,22     0,00     7,99     0,00    4,08   0,76   0,00
VG2-xentaur       0,00     0,00    0,03    0,00     0,20     0,00     7,98     0,00    3,96   1,00   0,00
MAIN-xen          0,00     0,00    0,27  120,02    13,23   960,13     8,09   108,41  901,22   0,07   0,79
MAIN-backup       0,00     0,00    0,02    0,47     1,04     3,74     9,74     0,02   37,61   0,67   0,03
MAIN-movies       0,00     0,00    0,00    0,00     0,01     0,00     7,70     0,00    2,00   2,00   0,00
MAIN-iso          0,00     0,00    0,03    0,00     0,21     0,00     7,99     0,00    1,69   0,75   0,00
MAIN-home         0,00     0,00    0,19    2,47     3,43    19,74     8,71     0,02    5,94   1,26   0,34
...

Для того чтобы смотреть статистику не в виде бесконечной,
бегущей по консоли полосы, а в виде постоянно обновляющегося окна (a-la top),
вы можете использовать программу watch (или display в FreeBSD).

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

%$ cat /usr/local/bin/dm_convert
#!/bin/sh

sed "s/ /      /; $( \
LANG=C ls -l /dev/dm* /dev/mapper/* | grep 25, | sort -n -k +6 | awk '{print $10}' \
| sed 's@/dev/@@; s@mapper/@@'  \
| perl -ne '$a=$_;$b=<>;chomp $a; chomp $b; $p=q(.)x(length($b)-length(a)-4); print qq(s/$a $p/$b/;) ')"

Скрипт должен быть исполняемым:

%# chmod +x /usr/local/bin/dm_convert

Теперь можно вызывать программу просмотра статистики нагрузки iostat
и смотреть на какие тома LVM наибольшая нагрузка:

%# iostat -dx 2 2 | dm_convert
%# watch 'iostat -dx 2 2 | dm_convert'

Если вы используете систему виртуализации, то результаты автоматическ означают
какую дисковую активность создаёт тот или иной виртуальный домен.

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

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Мой редактор ОС
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: