[ Страница назад | Страница вперед | Содержание | Индекс | Библиотека | Юридическая информация | Поиск ]

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


Отслеживание дискового ввода-вывода

Сбор информации о дисковом вводе-выводе применяется при решении следующих задач:

Запись исходных данных

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

Получение информации о времени ожидания ввода-вывода

В AIX версии 4.3.3 и выше изменен алгоритм вычисления процессорного времени, затраченного на ожидание дискового ввода-вывода (время wio). Способ, применявшийся в AIX версии 4.3.2 и более младших версиях, при некоторых условиях мог приводить к завышенным значениям wio в многопроцессорных системах. Время wio можно просмотреть с помощью команд sar ( %wio), vmstat (wa) и iostat (% iowait).

Другое изменение состоит в том, что теперь в столбце wa показано время простоя CPU при ожидании не только локального, но и удаленного (через NFS) ввода-вывода.

Способ, применявшийся в AIX версии 4.3.2 и ранее

По прерыванию от таймера (поступающему на каждый процессор 100 раз в секунду) определяется, к какой из четырех категорий (usr/sys/wio/idle) относятся последние 10 мс времени. Если процессор во время прерывания работал в пользовательском режиме, увеличивается счетчик категории usr. Если процессор во время прерывания работал в режиме ядра, увеличивается счетчик категории sys. Если процессор не был занят, проверяется, выполняется ли системой какая-либо операция ввода-вывода. Если выполняется дисковый ввод-вывод, увеличивается счетчик категории wio. Если дисковый ввод-вывод не выполняется, и процессор не занят, увеличивается счетчик idle.

Завышенные значения времени wio были связаны с тем, что все простаивающие процессоры считались ожидающими выполнения ввода-вывода независимо от числа нитей, действительно ожидающих выполнения этой операции. Например, если только одна нить в системе ожидала ввода-вывода, то, независимо от числа процессоров в системе, время wio могло составлять более 90 процентов.

Способ, применяющийся в AIX версии 4.3.3 и выше

Изменение описанного алгоритма в AIX версии 4.3.3 состоит в том, что незанятый процессор считается выполняющим ввод-вывод, если существует операция ввода-вывода, запущенная на этом процессоре. Это изменение приводит к существенно более низким значениям времени wio в случаях, когда несколько нитей выполняют ввод-вывод в незагруженной системе. Например, если в системе с четырьмя процессорами только одна нить выполняет ввод-вывод, то время wio будет составлять максимум 25 процентов. Система с двенадцатью процессорами и одной нитью, выполняющей ввод-вывод, будет считаться выполняющей ввод-вывод 8.3 процентов времени.

Кроме того, ввод-вывод NFS теперь выполняется через кэш буферизации, и ожидание выполнения соответствующих функций учитывается в показателе wa.

Оценка интенсивности использования дисков с помощью команды iostat

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

# iostat 5 3 >io.out &
# cp big1 /dev/null

Указанная команда создает три отчета в файле io.out:

tty:      tin         tout   avg-cpu:  % user    % sys     % idle    % iowait
          0.0          1.3               0.2      0.6       98.9       0.3
 
Диски:        % tm_act     Kbps      tps    Kb_read   Kb_wrtn
hdisk0        0.0       0.3       0.0             29753     48076
hdisk1        0.1       0.1       0.0             11971     26460
hdisk2        0.2       0.8       0.1             91200    108355
cd0              0.0       0.0       0.0          0         0
 
tty:      tin         tout   avg-cpu:  % user    % sys     % idle    % iowait
          0.8          0.8               0.6      9.7       50.2      39.5
 
Диски:        % tm_act     Kbps      tps    Kb_read   Kb_wrtn
hdisk0          47.0     674.6      21.8       3376        24
hdisk1           1.2       2.4       0.6          0        12
hdisk2           4.0       7.9       1.8          8        32
cd0              0.0       0.0       0.0          0         0
 
tty:      tin         tout   avg-cpu:  % user    % sys     % idle    % iowait
          2.0          2.0               0.2      1.8       93.4       4.6
 
Диски:        % tm_act     Kbps      tps    Kb_read   Kb_wrtn
hdisk0           0.0       0.0       0.0                 0         0
hdisk1           0.0       0.0       0.0          0         0
hdisk2           4.8      12.8       3.2         64         0
cd0              0.0       0.0       0.0          0         0

Первый отчет представляет собой статистику с момента последней загрузки и показывает равномерность (или, в данном случае, неравномерность) распределения ввода-вывода по жестким дискам. Жесткий диск hdisk1 почти все время простаивает, в то время как жесткий диск hdisk2 обрабатывает около 63 процентов всего ввода-вывода (согласно значениям в столбцах Kb_read и Kb_wrtn).

Примечание: Обычно система сохраняет хронологию операций дискового ввода-вывода. Если хронология не сохраняется (smitty chgsys -> Постоянно сохранять хронологию дискового ввода-вывода [false]), то при запуске команды iostat будет выдано следующее сообщение:

Хронология
дискового ввода-вывода с момента последней загрузки недоступна. 

Это не влияет на периодический сбор статистики о дисковом вводе-выводе.

Второй отчет содержит информацию, собранную за первые 5 секунд выполнения команды cp. Внимательно изучите содержащуюся в нем информацию. С момента запуска команды cp прошло 2.6 секунд. В результате 2.5 секунды интенсивного ввода-вывода в сочетании с 2.5 секундами простоя дали среднее значение % iowait, равное 39.5 процентов. Более короткий интервал измерения позволил бы получить более точные значения. Этот пример показывает, что при анализе отчетов следует учитывать, что все указанные значения являются средними за интервал измерения.

Информация о терминалах

Два столбца с информацией о терминалах (tin and tout) в выводе команды iostat показывают число символов, прочитанных и записанных всеми терминалами. Это значение учитывает как физические, так и псевдотерминалы. Физическими терминалами считаются устройства, подключенные к асинхронному порту. Псевдотерминалы представляют собой оболочки, сеансы telnet и окна aixterm.

Поскольку чтение и запись символов занимает ресурсы процессора, обратите внимание на зависимость между активностью терминалов и загрузкой процессоров. Если такая зависимость есть, попытайтесь повысить эффективность работы подсистемы TTY. Возможные действия включают модификацию прикладных программ, изменение параметров порта терминала при передаче файлов, а также модернизацию асинхронного адаптера.

В разделе Сценарий fastport.sh для ускорения передачи файлов приведен сценарий fastport.sh, предназначенный для настройки порта терминала на быструю передачу файлов без дополнительной обработки, например, на подключенный факсимильный аппарат. Этот сценарий позволяет сократить нагрузку на процессор в три раза при скорости передачи в 38400 бод.

Информация о загрузке процессора

В столбцах с информацией о процессоре (% user, % sys, % idle и % iowait) указывается распределение времени процессора. В выводе команды vmstat эта информация выводится в столбцах us, sy, id и wa. Более подробная информация об этих значениях приведена в разделе Команда vmstat. Кроме того, обратите внимание на то, что изменился алгоритм вычисления величины % iowait, описанный в разделе Получение информации о времени ожидания ввода-вывода.

Если в системе работает только одно приложение, то высокий процент времени ожидания ввода-вывода, скорее всего, связано со сложностью этого приложения. В системах с несколькими процессорами во время ожидания ввода-вывода одним из процессоров остальные будут работать. В этом случае величина % iowait будет невелика или равна нулю, поскольку работающие процессоры "скрывают" часть времени ожидания. Таким образом, несмотря на низкое значение % iowait, ввод-вывод может существенно влиять на производительность приложения.

Если команда iostat показывает, что производительность приложений не ограничена ресурсами процессоров, и величина % iowait больше 20 процентов, то низкая производительность связана с дисковым или другим вводом-выводом. Такая ситуация может возникнуть при массовой подкачке страниц из-за недостатка физической памяти. Кроме того, она может быть связана с несбалансированностью нагрузки на диски, фрагментацией данных или активных областей. Команда iostat выводит всю необходимую информацию для случая несбалансированной нагрузки. Информацию о файловых системах и логических томах, относящихся к логическим ресурсам, можно получить с помощью команд filemon и fileplace.

Информация об устройствах

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

Не забывайте, что первый отчет содержит статистику работы системы со времени запуска.

Диски:
Имена физических томов. Эти имена начинаются со строки hdisk или cd, за которой следует число. Если в параметрах команды iostat указаны физические тома, будут показаны только эти тома.

Загрузка диска (% tm_act)
Доля времени в процентах, в течение которого физический диск был активен (интенсивность использования диска), или, другими словами, суммарное время выполнения запросов к диску. Устройство считается активным во время передачи данных и выполнения команд, таких как поиск на диске. Доля времени, в течение которого диск активен, прямо пропорциональна объему передаваемых данных и обратно пропорциональна его производительности. По мере увеличения интенсивности использования диска быстродействие снижается и время ответа увеличивается. Обычно, если диск занят больше 70 процентов времени, то время ожидания выполнения запроса к диску превышает собственно время выполнения запроса, и большая часть процессов UNIX, выполняющих ввод-вывод, блокируется. Обратите внимание на ситуации, когда одни устройства простаивают, в то время как другие перегружены. Равномерное распределение нагрузки по всем дискам позволит повысить производительность работы приложений. Обратите внимание, что страничный обмен также создает нагрузку на диски.

Скорость передачи данных (Kbps)
Средняя скорость передачи данных между системой и устройством (Кб/с). Это значение равно сумме Kb_read и Kb_wrtn, поделенной на длительность интервала измерения (в секундах).

Частота операций передачи данных (tps)
Частота операций передачи данных между диском и системой, в операциях в секунду. Операция передачи - это запрос на ввод-вывод, переданный физическому диску через драйвер устройства. Несколько логических запросов при передаче устройству могут быть объединены в один. Объем данных, передаваемых за одну операцию, не ограничен.

Объем считанных данных (Kb_read)
Суммарный объем данных (в Кб), считанных с физического тома за интервал измерения.

Объем записанных данных (Kb_wrtn)
Суммарный объем данных (в Кб), записанных на физический том за интервал измерения.

Каждая из перечисленных выше переменных может принимать любые значения, зависящие от характеристик приложения, конфигурации системы, типов физических дисков и адаптеров. Поэтому при анализе данных нужно попытаться найти зависимости и взаимосвязи. Наиболее явно связаны нагрузка на диск (%tm_act) и скорость передачи данных (tps).

Для того чтобы сделать правильные выводы из отчетов команды iostat необходимо знать применяемый способ доступа к данным приложения (последовательный, произвольный или смешанный), а также типы дисковых накопителей и адаптеров в системе. Например, если приложение выполняет чтение или запись последовательно, то скорость передачи данных (Kbps) при высокой загрузке диска (%tm_act) также должна быть высокой. Значения Kb_read и Kb_wrtn показывают объем данных, считанных и записанных приложением. Однако эти значения не позволяют определить способ доступа к данным.

Обычно высокая нагрузка на диск (%tm_act) не свидетельствует о неправильной работе, если она сопровождается высокой скоростью передачи (Kbps). Однако высокая нагрузка на диск при низкой скорости передачи свидетельствует о фрагментации логического тома, файловой системы или файла.

При рассмотрении вопросов, связанных с производительностью дисков, логических томов и файловых систем можно прийти к заключению о том, что чем больше дисков в системе, тем выше ее быстродействие. Это не всегда так, поскольку все передаваемые между системой и диском данные проходят через адаптер дисков. Этот адаптер также может стать узким местом. Если каждый дисковый накопитель подключен к отдельному адаптеру, и все интенсивно используемые файловые системы находятся на разных физических томах, то увеличение числа дисков действительно позволяет повысить производительность системы. При этом степень повышения производительности будет зависеть от применяемого способа доступа.

Для того чтобы узнать, насколько загружен адаптер, сложите скорости передачи данных (Kbps), указанные в отчете команды iostat для всех дисков, подключенных к этому адаптеру. Сумма всех значений Kbps должна быть меньше максимальной скорости передачи данных, поддерживаемой адаптером. В большинстве случаев рекомендуется использовать 70 процентов пропускной способности адаптера. В операционной системе версии 4.3.3 и более поздних эту информацию можно получить, указав в команде iostat флаг -a или -A.

Оценка интенсивности использования дисков с помощью команды vmstat

Команда iostat позволяет проверить, действительно ли низкая производительность системы связана с неэффективным выполнением операций дискового ввода-вывода. Проанализировав столбец wa команды vmstat, можно придти к аналогичному выводу (более подробная информация приведена в разделе Команда vmstat). Ниже перечислены другие источники полезной информации о дисковом вводе-выводе:

Оценка интенсивности использования дисков с помощью команды sar

sar - это стандартная команда UNIX для получения статистических данных о системе. В команде sar предусмотрено большое число опций, позволяющих получить информацию об очередях, подкачке, терминалах и других устройствах. В AIX, начиная с версии 4.3.3, команда sar -d выдает статистику ввода-вывода в режиме реального времени:

# sar -d 3 3
 
AIX konark 3 4 0002506F4C00    08/26/99
 
12:09:50     device    %busy    avque    r+w/s   blks/s   avwait   avserv
 
12:09:53     hdisk0      1      0.0        0        5      0.0      0.0
             hdisk1      0      0.0        0        1      0.0      0.0
                cd0      0      0.0        0        0      0.0      0.0
 
12:09:56     hdisk0      0      0.0        0        0      0.0      0.0
             hdisk1      0      0.0        0        1      0.0      0.0
                cd0      0      0.0        0        0      0.0      0.0
 
12:09:59     hdisk0      1      0.0        1        4      0.0      0.0
             hdisk1      0      0.0        0        1      0.0      0.0
                cd0      0      0.0        0        0      0.0      0.0
 
 
Average      hdisk0      0      0.0        0        3      0.0      0.0
             hdisk1      0      0.0        0        1      0.0      0.0
                cd0      0      0.0        0        0      0.0      0.0

Ниже приведено описание полей вывода команды sar -d:

Загрузка (%busy)
Доля времени, в течение которого устройство было занято обработкой запросов на передачу данных. То же, что и столбец %tm_act в выводе команды iostat.

Среднее число ожидающих запросов (avque)
Среднее число запросов, ожидающих выполнения к моменту измерения. Большое значение в этом поле говорит о том, что с большой долей вероятности дисковый ввод-вывод является узким местом в системе.

Частота операций передачи данных (r+w/s)
Число операций чтения и записи, выполняемых устройством в секунду. То же, что и столбец tps в выводе команды iostat.

Скорость передачи данных в блоках (blks/s)
Число блоков по 512 байт, передаваемых в секунду.

Среднее число ожидающих транзакций (avwait)
Среднее число транзакций, ожидающих выполнения (длина очереди). Среднее время (в миллисекундах) нахождения запросов на передачу данных в очереди устройства. В настоящее время этот параметр не измеряется и всегда равен 0.0.

Среднее время поиска (avserv)
Среднее время поиска в миллисекундах. Среднее время, затрачиваемое устройством на обслуживание запроса на передачу данных (включая поиск, переход к нужному сектору и собственно передачу данных). В настоящее время этот параметр не измеряется и всегда равен 0.0.

Оценка фрагментации логического тома с помощью команды lslv

Информацию о фрагментации логических томов можно получить с помощью команды lslv. Введите команду lslv-l имя-логического-тома, как по казано ниже:

# lslv -l hd2
hd2:/usr
PV                COPIES        IN BAND       DISTRIBUTION
hdisk0            114:000:000   22%           000:042:026:000:046

В столбце COPIES указано, что существует только одна копия логического тома hd2. Столбец IN BAND показывает, насколько соблюдается стратегия размещения логического тома. Чем больше эта величина, тем эффективнее размещение данных. С каждым логическим томом связана своя стратегия размещения. Если операционная система не может полностью реализовать стратегию размещения, она пытается выполнить максимальное число требований. В данном примере существует всего 114 логических разделов (LP); 42 LP находятся во внешней области, 26 LP - в средней области и 46 LP - на внутреннем крае. Поскольку с данным логическим томом связана стратегия размещения в средней области, параметр in-band равен 22 процентам (26 / (42+26+46). В столбце DISTRIBUTION показано распределение физических разделов по диску в формате:

внешний край : внешняя область : средняя область : внутренняя область : внутренний край

Дополнительная информация о распределении физических разделов приведена в разделе Расположение на физическом томе.

Получение информации о физическом размещении данных с помощью команды lslv

Если скорость работы приложений существенно зависит от скорости ввода-вывода, исследуйте физическое расположение файлов на диске и определите, нужна ли реорганизация на каком-либо уровне. Для того чтобы получить информацию о расположении разделов логического тома hd11 на физическом томе hdisk0, введите следующую команду:

# lslv -p hdisk0 hd11
hdisk0:hd11:/home/op
USED  USED  USED  USED  USED  USED  USED  USED  USED  USED     1-10
USED  USED  USED  USED  USED  USED  USED                      11-17
 
USED  USED  USED  USED  USED  USED  USED  USED  USED  USED    18-27
USED  USED  USED  USED  USED  USED  USED                      28-34
 
USED  USED  USED  USED  USED  USED  USED  USED  USED  USED    35-44
USED  USED  USED  USED  USED  USED                            45-50
 
USED  USED  USED  USED  USED  USED  USED  USED  USED  USED    51-60
0052  0053  0054  0055  0056  0057  0058                      61-67
 
0059  0060  0061  0062  0063  0064  0065  0066  0067  0068    68-77
0069  0070  0071  0072  0073  0074  0075                      78-84

Для просмотра информации об остальной части hd11 на диске hdisk1 введите:

# lslv -p hdisk1 hd11
hdisk1:hd11:/home/op
0035  0036  0037  0038  0039  0040  0041  0042  0043  0044    1-10
0045  0046  0047  0048  0049  0050  0051                     11-17
 
USED  USED  USED  USED  USED  USED  USED  USED  USED  USED   18-27
USED  USED  USED  USED  USED  USED  USED                     28-34
 
USED  USED  USED  USED  USED  USED  USED  USED  USED  USED   35-44
USED  USED  USED  USED  USED  USED                           45-50
 
0001  0002  0003  0004  0005  0006  0007  0008  0009  0010   51-60
0011  0012  0013  0014  0015  0016  0017                     61-67
 
0018  0019  0020  0021  0022  0023  0024  0025  0026  0027   68-77
0028  0029  0030  0031  0032  0033  0034                     78-84

Пять показанных разделов представляют соответственно внешний край, внешнюю область, среднюю область, внутреннюю область и внутренний край.

В предыдущем примере логический том hd11 фрагментирован на физическом томе hdisk1, поскольку первые логические разделы находятся во внутренних областях тома hdisk1, в то время как логические разделы 35-51 расположены во внешней области. Доступ к логическому тому hd11 в произвольной последовательности приведет к длительному времени ожидания ввода-вывода, что связано с большим временем поиска. Приведенные выше отчеты также свидетельствуют о том, что на физических томах hdisk0 и hdisk1 отсутствуют свободные физические разделы.

Получение информации о размещении файла с помощью команды fileplace

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

Для того чтобы узнать, установлена ли команда fileplace, введите следующую команду:

# lslpp -lI perfagent.tools

Затем введите следующую команду:

# fileplace -pv big1
 
Файл: big1  Размер: 3554273 байт  Том: /dev/hd10
Размер блока: 4096  Размер фрагмента: 4096  Число фрагментов: 868  Сжатие: нет
I-узел: 19  Режим: -rwxr-xr-x  Владелец: hoetzel  Группа: system
 
  Физический адрес (зеркальная копия 1)                         Логические фрагменты
  ----------------------------------                            ----------------
  0001584-0001591  hdisk0     8 фраг.    32768 байт,   0.9%     0001040-0001047
  0001624-0001671  hdisk0    48 фраг.   196608 байт,   5.5%     0001080-0001127
  0001728-0002539  hdisk0   812 фраг.  3325952 байт,  93.5%     0001184-0001995
 
  868 фрагментов занимают объем 956:  эффективность = 90.8%
  3 фрагмента из 868 возможных:  компактность размещения = 99.8%

Такой отчет команды говорит о том, что файл фрагментирован очень слабо, поскольку содержит несколько небольших разрывов. Таким образом, расположение файла big1 практически не влияет на время его последовательного чтения. Более того, поскольку создание файла размером 3.5 Мб не привело к его существенной фрагментации, мы можем считать, что соответствующая файловая система не фрагментирована.

Некоторые части файла могут быть не связаны с блоками тома. При чтении эти области заполняются файловой системой нулями. Такие области называются неразмещенными логическими блоками. Номинальный размер файла с такими областями будет больше фактического размера области, которую он занимает на диске (команда ls -l показывает номинальный размер файла, а команда du - фактическое число занятых блоков).

Команда fileplace считывает список блоков файла с логического тома. Если файл новый, эта информация может быть еще не записана на диск. В этом случае для записи этой информации на диск введите команду sync. Кроме того, команда fileplace не показывает файлы NFS, расположенные на удаленном сервере (для этого необходимо запустить эту команду на сервере).

Примечание: Если при создании файла его записи были в произвольном порядке распределены по диску, то в выводе команды fileplace будут показаны только те страницы, которые содержат записи файла. Файловая система не заполняет автоматически промежуточные страницы. Однако при последовательном чтении такого файла (например, командой cp или tar) пространство между записями заполняется двоичными нулями. В результате файл, скопированный командой cp, займет больше места, чем исходный, хотя будет содержать те же данные.

Эффективность использования пространства и компактность размещения

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

Эффективность использования пространства =
Общее число фрагментов, занятых для хранения файла /
(Физический адрес последнего фрагмента -
Физический адрес первого фрагмента + 1)

Компактность размещения =
(Общее число фрагментов -
Число групп фрагментов + 1) /
Общее число фрагментов

Если компактность размещения или эффективность использования пространства уменьшается, рекомендуется реорганизовать логический том с помощью команды reorgvg (за дополнительной информацией обратитесь к разделу Реорганизация логических томов). Информация о реорганизации файловых систем приведена в разделе Реорганизация файловых систем.

В этом примере Физический адрес последнего фрагмента - Физический адрес первого фрагмента + 1 = 0002539 - 0001584 + 1 = 956 фрагментов; всего занято 8 + 48 + 812 = 868 фрагментов; эффективность использования пространства равна 868 / 956 (90.8 процентов); компактность размещения равна (868 - 3+ 1) / 868 = 99.8 процентов.

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

Оценка интенсивности подкачки с помощью команды vmstat

В операциях подкачки обычно применяется произвольный способ доступа, причем за каждую операцию обычно считывается или записывается только одна страница. Команда vmstat позволяет узнать, какая доля операций ввода-вывода связана со страничным обменом. Два приведенных ниже примера иллюстрируют интенсивность страничного обмена при компиляции программы, написанной на языке C, в системе, объем памяти которой был искусственно уменьшен с помощью команды rmss. В столбцах pi и po (число загруженных и выгруженных страниц по 4096 байт) указано количество операций подкачки и выгрузки, выполненных за 5-секундный интервал. Первый отчет (информация с момента последнего запуска системы) был удален. Обратите внимание, что работа с областями подкачки характеризуется всплесками активности.

# vmstat 5 8
нити     память             страница          ошибки        cpu
----- ----------- ------------------------ ------------ -----------
 r  b   avm   fre  re  pi  po  fr   sr  cy  in   sy  cs us sy id wa
 0  1 72379   434   0   0   0   0    2   0 376  192 478  9  3 87  1
 0  1 72379   391   0   8   0   0    0   0 631 2967 775 10  1 83  6
 0  1 72379   391   0   0   0   0    0   0 625 2672 790  5  3 92  0
 0  1 72379   175   0   7   0   0    0   0 721 3215 868  8  4 72 16
 2  1 71384   877   0  12  13  44  150   0 662 3049 853  7 12 40 41
 0  2 71929   127   0  35  30 182  666   0 709 2838 977 15 13  0 71
 0  1 71938   122   0   0   8  32  122   0 608 3332 787 10  4 75 11
 0  1 71938   122   0   0   0   3   12   0 611 2834 733  5  3 75 17

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

# vmstat -s # до # vmstat -s # после
6602 страниц загружено
3948 страниц выгружено
544 страниц загружено из пространства подкачки
1923 страниц выгружено в пространство подкачки
0 восстановлений
7022 страниц загружено
4146 страниц выгружено
689 страниц загружено из пространства подкачки
2032 страниц выгружено в пространство подкачки
0 восстановлений

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

Оценка общего объема дискового ввода-вывода с помощью команды vmstat

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

# vmstat -s >statout
# testpgm
# sync
# vmstat -s >> statout
# egrep "ins|outs" statout

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

     5698 страниц прочитано
     5012 страниц записано
        0 страниц прочитано из области подкачки
       32 страниц записано в область подкачки
     6671 страниц прочитано
     5268 страниц записано
        8 страниц прочитано из области подкачки
      225 страниц записано в область подкачки

За время работы этой команды (компиляция большого проекта на C) система прочитала 981 страниц (8 из области подкачки) и записала 449 страницы (193 в область подкачки).

Подробный анализ ввода-вывода с помощью команды filemon

Команда filemon применяет программу трассировки для получения подробной информации об интенсивности ввода-вывода на различных уровнях файловой системы, включая логическую файловую систему, сегменты виртуальной памяти (VM), Администратор логических томов (LVM) и физические диски. Данные собираются для тех уровней, которые указаны в опции -O, либо для всех уровней. По умолчанию данные собираются для уровней VM, LVM и физических дисков. В результате могут создаваться краткие или подробные отчеты. Поскольку команда filemon вызывает программу трассировки, она может запускаться только пользователем root или членами группы system.

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

# lslpp -lI perfagent.tools

Трассировка запускается командой filemon, приостанавливается подкомандой trcoff, возобновляется подкомандой trcon и завершается подкомандой trcstop (для завершения работы команды filemon может потребоваться ввести команду nice -n -20 trcstop, поскольку команда filemon по умолчанию выполняется с приоритетом 40). Команда filemon записывает отчет в стандартный вывод сразу после завершения трассировки.

Примечание: Если не указан флаг -u, то данные будут собраны только о тех файлах, которые были открыты после запуска команды filemon.

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

Вначале файл трассировки должен быть обработан командой trcrpt -r. Вывод команды должен быть перенаправлен в другой файл:

# gennames > gennames.out
# trcrpt -r   trace.out > trace.rpt

Преобразованный файл трассировки передается команде filemon для создания отчета об операциях ввода-вывода, зарегистрированных в исходном файле трассировки:

# filemon -i trace.rpt -n gennames.out | pg

В этом примере команда filemon считывает события трассировки файловой системы из файла trace.rpt. Поскольку данные трассировки уже находятся в файле, команда filemon не переходит в фоновый режим. После чтения всего файла создаются отчеты для уровней виртуальной памяти, логических и физических томов, которые передаются в стандартный вывод (в данном случае - на вход команде pg).

Если команда trace была запущена с флагом -C all, команду trcrpt также следует запустить с флагом -C all (см. Форматирование вывода команды trace -C).

Ниже приведен пример применения команды filemon:

# filemon -o fm.out -O all; cp /smit.log /dev/null ; trcstop

Отчет, полученный командой в системе, не выполнявшей других заданий, выглядел следующим образом:

Вторник, 19 августа 1999 года. 11:30:49
Система: AIX texmex  Узел: 4  Компьютер: 000691854C00
 
Интервал измерения: 0.369 секунды
Использование CPU:  9.0%
 
Наиболее активные файлы
------------------------------------------------------------------------
  #MBs  #opns   #rds   #wrs  файл                 том:i-узел
------------------------------------------------------------------------
   0.1      1     14      0  smit.log             /dev/hd4:858
   0.0      1      0     13  null
   0.0      2      4      0  ksh.cat              /dev/hd2:16872
   0.0      1      2      0  cmdtrace.cat         /dev/hd2:16739
 
Наиболее активные сегменты
------------------------------------------------------------------------
  #MBs  #rpgs  #wpgs   ИД    тип                  том:i-узел
------------------------------------------------------------------------
   0.1     13      0   5e93  ???
   0.0      2      0   22ed  ???
   0.0      1      0   5c77  постоянный
 
Наиболее активные логические тома
------------------------------------------------------------------------
  util  #rblk  #wblk   Кб/с   том                 описание
------------------------------------------------------------------------
  0.06    112      0  151.9  /dev/hd4             /
  0.04     16      0   21.7  /dev/hd2             /usr
 
Наиболее активные физические тома
------------------------------------------------------------------------
  util  #rblk  #wblk   Кб/с   том                 описание
------------------------------------------------------------------------
  0.10    128      0  173.6  /dev/hdisk0          НД
 
 
 
 
------------------------------------------------------------------------
Подробная статистика работы с файлами
------------------------------------------------------------------------
 
Файл: /smit.log  том: /dev/hd4 (/)  I-узел: 858
операций открытия:      1
всего передано байт:    57344
операций чтения:        14      (0 ошибок)
  прочитано (байт):     ср   4096.0 мин    4096 макс   4096 откл     0.0
  время чтения (мс):    ср    1.709 мин   0.002 макс 19.996 откл   5.092
 
Файл: /dev/null
операций открытия:      1
всего передано байт:    50600
операций записи:        13      (0 ошибок)
  записано  (байт):     ср   3892.3 мин    1448 макс   4096 откл   705.6
  время записи (мс):    ср    0.007 мин   0.003 макс  0.022 откл   0.006
 
Файл: /usr/lib/nls/msg/en_US/ksh.cat  том: /dev/hd2 (/usr)  I-узел: 16872
операций открытия:      2
всего передано байт:    16384
операций чтения:        4       (0 ошибок)
  прочитано (байт):     ср   4096.0 мин    4096 макс   4096 откл     0.0
  время чтения (мс):    ср    0.042 мин   0.015 макс  0.070 откл   0.025
операций поиска:        10
 
Файл: /usr/lib/nls/msg/en_US/cmdtrace.cat  том: /dev/hd2 (/usr)  I-узел: 16739
операций открытия:      1
всего передано байт:    8192
операций чтения:        2       (0 ошибок)
  прочитано (байт):     ср   4096.0 мин    4096 макс   4096 откл     0.0
  время чтения (мс):    ср    0.062 мин   0.049 макс  0.075 откл   0.013
операций поиска:        8
 
------------------------------------------------------------------------
Подробная статистика работы с виртуальной памятью (в страницах по 4096 байт)
------------------------------------------------------------------------
 
Сегмент: 5e93  тип: ???
флаги сегмента
операций чтения:        13       (0 ошибок)
  время чтения (мс):    ср    1.979 мин   0.957 макс  5.970 откл   1.310
  последовательностей:  1
  длина последоват.:    ср     13.0 мин      13 макс     13 откл     0.0
 
Сегмент: 22ed  тип: ???
флаги сегмента          I-узел
операций чтения:        2       (0 ошибок)
  время чтения (мс):    ср    8.102 мин   7.786 макс  8.418 откл   0.316
  последовательностей:  2
  длина последоват.:    ср      1.0 мин       1 макс      1 откл     0.0
 
Сегмент: 5c77  тип: постоянный
флаги сегмента:         pers defer
операций чтения:        1       (0 ошибок)
  время чтения (мс):    сред 13.810 мин  13.810 макс 13.810 откл  0.000
  последовательностей:  1
  длина последоват.:    ср      1.0 мин       1 макс      1 откл     0.0
 
------------------------------------------------------------------------
Подробная статистика работы с логическими томами (в блоках по 512 байт)
------------------------------------------------------------------------
 
Том: /dev/hd4  описание: /
операций чтения:        5       (0 ошибок)
  прочитано (блоков):   ср     22.4 мин       8 макс     40 откл    12.8
  время чтения (мс):    ср    4.847 мин   0.938 макс 13.792 откл   4.819
  последовательностей:  3
  длина последоват.:    ср     37.3 мин       8 макс     64 откл    22.9
операций поиска:        3       (60.0%)
  размер поиска (блоков):нач    6344,
                        ср     40.0 мин       8 макс     72 откл    32.0
период запросов (мс):   ср   70.473 мин   0.224 макс331.020 откл 130.364
поток данных:           151.9 Кб/с
загрузка:               0.06
 
Том: /dev/hd2  описание: /usr
операций чтения:        2       (0 ошибок)
  прочитано (блоков):   ср      8.0 мин       8 макс      8 откл     0.0
  время чтения (мс):    ср    8.078 мин   7.769 макс  8.387 откл   0.309
  последовательностей:  2
  длина последоват.:    ср      8.0 мин       8 макс     8 откл    0.0
операций поиска:        2       (100.0%)
  размер поиска (блоков):нач  608672,
                        ср     16.0 мин      16 макс     16 откл     0.0
период запросов (мс):   ср  162.160 мин   8.497 макс331.020 откл 153.663
поток данных:           21.7 Кб/с
загрузка:               0.04
 
------------------------------------------------------------------------
Подробная статистика работы с физическими томами (в блоках по 512 байт)
------------------------------------------------------------------------
 
Том: /dev/hdisk0  описание: N/A
операций чтения:        7       (0 ошибок)
  прочитано (блоков):   ср     18.3 мин       8 макс     40 откл    12.6
  время чтения (мс):    ср    5.723 мин   0.905 макс 20.448 откл   6.567
  последовательностей:  5
  длина последоват.:    ср     25.6 мин       8 макс     64 откл    22.9
операций поиска:        5       (71.4%)
  размер поиска (блоков):нач  4233888,
                        ср  171086.0 мин       8 макс 684248 откл 296274.2
  размер поиска (%):     нач  48.03665,
                        ср  1.94110 мин 0.00009 макс7.76331 откл 3.36145
период запросов (мс):   ср   50.340 мин   0.226 макс331.020 откл 108.483
поток данных:           173.6 Кб/с
загрузка:            0.10

Вызов команды filemon в реальных системах приведет к созданию отчетов намного большего объема и может потребовать увеличения размера буфера трассировки. Команда filemon занимает значительные ресурсы памяти и процессора, что может негативно сказаться на производительности системы. Перед вызовом filemon в рабочей системе необходимо поработать с этой командой в тестовой среде. Кроме того, рекомендуется выполнять автономную обработку данных трассировки, а в многопроцессорных системах - указывать в команде trace флаг -C all.

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

Общие отчеты команды filemon

В общих отчетах перечислены файлы, сегменты, логические и физические тома, наиболее интенсивно использовавшиеся за интервал измерения. Эта информация показана в начале вывода команды filemon. По умолчанию отчеты о логических файлах и виртуальной памяти ограничены 20 файлами и сегментами, наиболее активными с точки зрения количества переданных данных. Если указан флаг -v, выводится информация обо всех файлах и сегментах. Все объекты перечисляются в порядке уменьшения активности.

Наиболее активные файлы

#MBs
Суммарный объем данных в мегабайтах, переданных для файла за интервал измерения. Строки упорядочены по убыванию этого значения.

#opns
Число операций открытия файла за интервал измерения.

#rds
Число операций чтения файла.

#wrs
Число операций записи в файл.

file
Имя файла (полное имя файла приводится в подробном отчете).

том:i-узел
Логический том, на котором находится файл, и номер I-узла файла в связанной с ним файловой системе. С помощью этого значения можно связать файл с соответствующим постоянным сегментом, показанным в подробном отчете о сегментах VM. Для временных файлов, созданных и удаленных за время выполнения, это поле может быть пустым.

Наиболее активные файлы - это smit.log на логическом томе hd4 и устройство null. Для изменения параметров экрана приложения применяют базу данных terminfo, поэтому также выполнялись обращения к файлам ksh.cat и cmdtrace.cat. При каждом выводе сообщения на экран оболочка обращается к этим каталогам для получения данных.

Для идентификации неизвестных файлов преобразуйте имя логического тома, /dev/hd1, в точку монтирования файловой системы, /home и найдите файл с помощью команды find или ncheck:

# find / -inum 858 -print
/smit.log

или

# ncheck -i 858 /
/:
858     /smit.log

Наиболее активные сегменты

#MBs
Суммарный объем данных в мегабайтах, переданных для сегмента за интервал измерения. Строки упорядочены по убыванию этого значения.

#rpgs
Число страниц по 4 Кб, считанных в сегмент с диска (загрузка страниц).

#wpgs
Число страниц по 4 Кб, записанных из сегмента на диск (выгрузка страниц).

#segid
Идентификатор сегмента памяти VMM.

segtype
Тип сегмента: рабочий сегмент, постоянный сегмент (локальный файл), клиентский сегмент (удаленный файл), сегмент таблицы страниц, системный сегмент или специальный постоянный сегмент, содержащий данные файловой системы (протокол, корневой каталог, .inode, .inodemap, .inodex, .inodexmap, .indirect или .diskmap).

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

Во время работы команды с помощью инструмента анализа виртуальной памяти svmon можно получить дополнительную информацию о сегменте по его идентификатору (segid): svmon -DИД-сегмента. Более подробная информация приведена в разделе Команда svmon.

В данном примере значение ??? означает, что системе не удалось определить тип сегмента. Дополнительную информацию можно получить с помощью команды svmon.

Наиболее активные логические тома

util
Интенсивность использования логического тома.

#rblk
Число блоков по 512 байт, считанных с логического тома.

#wblk
Число блоков по 512 байт, записанных на логический том.

Кб/с
Средняя скорость передачи данных в Кб/с.

том
Имя логического тома.

описание
Точка монтирования файловой системы или тип логического тома (пространство подкачки, журнал jfs, загрузочный том или дамп системы). Например, для логического тома /dev/hd2 указана точка монтирования /usr; /dev/hd6 - это пространство подкачки, а /dev/hd8 - журнал JFS. Кроме того, в этом поле может быть указано слово compressed. Это означает, что все данные автоматически сжимаются с помощью алгоритма Lempel-Zev (LZ) перед записью на диск и автоматически разворачиваются при чтении с него (дополнительная информация приведена в разделе Сжатие).

Интенсивность использования указывается в процентах от максимума: 0,06 означает, что в течение интервала измерения том был загружен на 6 процентов.

Наиболее активные физические тома

util
Интенсивность использования физического тома.

Примечание: Запросы ввода-вывода для логического тома начинают обрабатываться раньше и завершают обрабатываться позже, чем для физического тома. В связи с этим показатель использования логического тома будет больше, чем аналогичный показатель физического тома.

#rblk
Число блоков по 512 байт, считанных с физического тома.

#wblk
Число блоков по 512 байт, записанных на физический том.

Кб/с
Средняя скорость передачи данных в Кб/с.

том
Имя физического тома

описание
Описание типа физического тома, например Мультимедийный дисковод CD-ROM с интерфейсом SCSI или Дисковый накопитель с 16-разрядным интерфейсом SCSI.

Интенсивность использования тома измеряется в процентах от максимального значения: 0,10 означает, что в течение интервала измерения том был загружен на 10 процентов.

Подробные отчеты команды filemon

Подробные отчеты содержат дополнительную информацию об объектах, статистика для которых приведена в общих отчетах. Подробные отчеты содержат по одной записи для каждого файла, сегмента или тома. Поля записей всех четырех подробных отчетов описаны ниже. Некоторые поля описывают одно значение; другие содержат информацию о распределении целой серии значений. Например, для всех отслеживаемых запросов чтения и записи сохраняется время ответа. На основании полученных значений вычисляется среднее значение, минимум, максимум и стандартное отклонение. Стандартное отклонение показывает, как сильно отдельное время ответа отклоняется от среднего значения. Примерно две трети значений времени ответа отличаются от среднего не больше, чем на стандартное отклонение (ср - откл или ср + откл). Если бы время ответа измерялось в течение более длительного интервала времени, то стандартное отклонение от среднего значения было бы больше.

Подробная информация о работе с файлами

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

Файл
Имя файла. В большинстве случаев указывается полное имя.

том
Имя логического тома или файловой системы, в которой хранится файл.

I-узел
Номер i-узла файла в файловой системе.

операций открытия
Число операций открытия файла за интервал сбора данных.

всего передано байт
Общее число байт, считанных из файла или записанных в файл.

операций чтения
Число операций чтения данных из файла.

прочитано (байт)
Объем прочитанных данных в байтах (ср/мин/макс/откл).

время чтения (мс)
Время выполнения операций чтения в мс (ср/мин/макс/откл).

операций записи
Число операций записи в файл.

записано (байт)
Объем записанных данных.

время записи (мс)
Время выполнения операций записи.

операций поиска
Число вызовов функции lseek().

Объем считанных и записанных данных позволяет определить эффективность чтения и записи информации приложением. Наиболее оптимальным является значение, кратное размеру страницы (4 Кб).

Подробная информация о виртуальной памяти

Подробная статистика выводится для каждого сегмента, упомянутого в отчете Наиболее активные сегменты.

Сегмент
Внутренний идентификатор сегмента в операционной системе.

segtype
Тип содержимого сегмента.

флаги сегмента
Различные атрибуты сегмента.

том
Для постоянных сегментов - имя логического тома, в котором находится соответствующий файл.

I-узел
Для постоянных сегментов - номер I-узла соответствующего файла.

операций чтения
Число страниц по 4096 байт, считанных в сегмент с диска (загрузка страницы).

время чтения (мс)
Время выполнения операций чтения в мс (ср/мин/макс/откл).

последовательностей
Число последовательностей чтения. Последовательность - это несколько страниц, считанных подряд. Число последовательностей чтения характеризует упорядоченность доступа к файлу.

длина последовательности
Информация о числе страниц в последовательности.

операций записи
Число страниц, записанных на диск из сегмента (выгрузка страницы).

время записи (мс)
Время выполнения операций записи.

последовательностей
Число последовательностей записи. Последовательность - это несколько страниц, записанных подряд.

длина последовательности
Параметры распределения числа страниц в последовательности.

Сравнивая число операций и последовательностей чтения, можно узнать применявшийся способ доступа к файлу (произвольный или последовательный). Например, если число последовательностей близко к числу операций чтения, доступ к файлу можно считать произвольным. С другой стороны, если число последовательностей много меньше числа операций чтения, и их средняя длина велика, доступ к файлу можно считать последовательным. То же самое относится и к операциям записи.

Подробная информация о работе с логическими и физическими томами

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

Том
Имя тома.

описание
Описание тома. (Информация о содержимом логического тома или типе физического тома.)

операций чтения
Число операций чтения, выполненных над томом.

прочитано (блоков)
Объем прочитанных данных в блоках (ср/мин/макс/откл).

время чтения (мс)
Время выполнения операций чтения в мс (ср/мин/макс/откл).

последовательностей
Число последовательностей чтения. Последовательность - это несколько блоков (по 512 байт), считанных подряд. Число последовательностей чтения характеризует упорядоченность доступа.

длина последовательности
Информация о числе блоков в последовательности.

операций записи
Число операций записи, выполненных над томом.

записано (блоков)
Объем записанных данных.

время записи (мс)
Время выполнения операций записи.

последовательностей
Число последовательностей записи. Последовательность - это несколько блоков (по 512 байт), записанных подряд.

длина последовательности
Информация о числе блоков в последовательности.

операций поиска
Число операций поиска, предшествующих запросу на чтение или запись; также показан процент операций, перед которыми выполнялся поиск.

размер поиска (блоков)
Информация о размере поиска в блоках по 512 байт. Кроме обычной статистики (ср/мин/макс/откл) отдельно показан размер начальной операции поиска (если считать, что головка чтения/записи первоначально находилась над блоком 0). Размер начального поиска может быть очень большим, поэтому он выводится отдельно и не учитывается в общей статистике.

размер поиска (цилиндров)
Информация о размере поиска в цилиндрах диска (только для физических томов).

период запросов
Характеризует величину интервала времени (в миллисекундах) между последовательными запросами на чтение или запись данных (ср/мин/макс/откл). Это значение определяет частоту обращений к тому.

пропускная способность
Общая пропускная способность тома в Кб/с.

использование
Доля времени, в течение которого том был занят. Записи упорядочены по убыванию этого значения.

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

Рекомендации по применению команды filemon

Ниже приведены рекомендации по применению команды filemon:

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

Обзор показателей дискового ввода-вывода

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

Все перечисленные возможности обсуждаются далее в этом разделе.


[ Страница назад | Страница вперед | Содержание | Индекс | Библиотека | Юридическая информация | Поиск ]