Сбор информации о дисковом вводе-выводе применяется при решении следующих задач:
Перед внесением серьезных изменений в конфигурацию дисков, а также перед настройкой параметров дисковой подсистемы рекомендуется сохранить информацию об исходном состоянии системы, включая данные о конфигурации и производительности.
В AIX версии 4.3.3 и выше изменен алгоритм вычисления процессорного времени, затраченного на ожидание дискового ввода-вывода (время wio). Способ, применявшийся в AIX версии 4.3.2 и более младших версиях, при некоторых условиях мог приводить к завышенным значениям wio в многопроцессорных системах. Время wio можно просмотреть с помощью команд sar ( %wio), vmstat (wa) и iostat (% iowait).
Другое изменение состоит в том, что теперь в столбце wa показано время простоя CPU при ожидании не только локального, но и удаленного (через NFS) ввода-вывода.
По прерыванию от таймера (поступающему на каждый процессор 100 раз в секунду) определяется, к какой из четырех категорий (usr/sys/wio/idle) относятся последние 10 мс времени. Если процессор во время прерывания работал в пользовательском режиме, увеличивается счетчик категории usr. Если процессор во время прерывания работал в режиме ядра, увеличивается счетчик категории sys. Если процессор не был занят, проверяется, выполняется ли системой какая-либо операция ввода-вывода. Если выполняется дисковый ввод-вывод, увеличивается счетчик категории wio. Если дисковый ввод-вывод не выполняется, и процессор не занят, увеличивается счетчик idle.
Завышенные значения времени wio были связаны с тем, что все простаивающие процессоры считались ожидающими выполнения ввода-вывода независимо от числа нитей, действительно ожидающих выполнения этой операции. Например, если только одна нить в системе ожидала ввода-вывода, то, независимо от числа процессоров в системе, время wio могло составлять более 90 процентов.
Изменение описанного алгоритма в AIX версии 4.3.3 состоит в том, что незанятый процессор считается выполняющим ввод-вывод, если существует операция ввода-вывода, запущенная на этом процессоре. Это изменение приводит к существенно более низким значениям времени wio в случаях, когда несколько нитей выполняют ввод-вывод в незагруженной системе. Например, если в системе с четырьмя процессорами только одна нить выполняет ввод-вывод, то время wio будет составлять максимум 25 процентов. Система с двенадцатью процессорами и одной нитью, выполняющей ввод-вывод, будет считаться выполняющей ввод-вывод 8.3 процентов времени.
Кроме того, ввод-вывод NFS теперь выполняется через кэш буферизации, и ожидание выполнения соответствующих функций учитывается в показателе wa.
Начните оценку с запуска команды 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. Кроме того, вы можете получить информацию только об отдельных дисках, указав их имена.
Не забывайте, что первый отчет содержит статистику работы системы со времени запуска.
Каждая из перечисленных выше переменных может принимать любые значения, зависящие от характеристик приложения, конфигурации системы, типов физических дисков и адаптеров. Поэтому при анализе данных нужно попытаться найти зависимости и взаимосвязи. Наиболее явно связаны нагрузка на диск (%tm_act) и скорость передачи данных (tps).
Для того чтобы сделать правильные выводы из отчетов команды iostat необходимо знать применяемый способ доступа к данным приложения (последовательный, произвольный или смешанный), а также типы дисковых накопителей и адаптеров в системе. Например, если приложение выполняет чтение или запись последовательно, то скорость передачи данных (Kbps) при высокой загрузке диска (%tm_act) также должна быть высокой. Значения Kb_read и Kb_wrtn показывают объем данных, считанных и записанных приложением. Однако эти значения не позволяют определить способ доступа к данным.
Обычно высокая нагрузка на диск (%tm_act) не свидетельствует о неправильной работе, если она сопровождается высокой скоростью передачи (Kbps). Однако высокая нагрузка на диск при низкой скорости передачи свидетельствует о фрагментации логического тома, файловой системы или файла.
При рассмотрении вопросов, связанных с производительностью дисков, логических томов и файловых систем можно прийти к заключению о том, что чем больше дисков в системе, тем выше ее быстродействие. Это не всегда так, поскольку все передаваемые между системой и диском данные проходят через адаптер дисков. Этот адаптер также может стать узким местом. Если каждый дисковый накопитель подключен к отдельному адаптеру, и все интенсивно используемые файловые системы находятся на разных физических томах, то увеличение числа дисков действительно позволяет повысить производительность системы. При этом степень повышения производительности будет зависеть от применяемого способа доступа.
Для того чтобы узнать, насколько загружен адаптер, сложите скорости передачи данных (Kbps), указанные в отчете команды iostat для всех дисков, подключенных к этому адаптеру. Сумма всех значений Kbps должна быть меньше максимальной скорости передачи данных, поддерживаемой адаптером. В большинстве случаев рекомендуется использовать 70 процентов пропускной способности адаптера. В операционной системе версии 4.3.3 и более поздних эту информацию можно получить, указав в команде iostat флаг -a или -A.
Команда iostat позволяет проверить, действительно ли низкая производительность системы связана с неэффективным выполнением операций дискового ввода-вывода. Проанализировав столбец wa команды vmstat, можно придти к аналогичному выводу (более подробная информация приведена в разделе Команда vmstat). Ниже перечислены другие источники полезной информации о дисковом вводе-выводе:
Для просмотра статистической информации о логических дисках (до 4 дисков) введите следующую команду:
# vmstat hdisk0 hdisk1 1 8 kthr memory page faults cpu disk xfer ---- ---------- ----------------------- ------------ ----------- ------ r b avm fre re pi po fr sr cy in sy cs us sy id wa 1 2 3 4 0 0 3456 27743 0 0 0 0 0 0 131 149 28 0 1 99 0 0 0 0 0 3456 27743 0 0 0 0 0 0 131 77 30 0 1 99 0 0 0 1 0 3498 27152 0 0 0 0 0 0 153 1088 35 1 10 87 2 0 11 0 1 3499 26543 0 0 0 0 0 0 199 1530 38 1 19 0 80 0 59 0 1 3499 25406 0 0 0 0 0 0 187 2472 38 2 26 0 72 0 53 0 0 3456 24329 0 0 0 0 0 0 178 1301 37 2 12 20 66 0 42 0 0 3456 24329 0 0 0 0 0 0 124 58 19 0 0 99 0 0 0 0 0 3456 24329 0 0 0 0 0 0 123 58 23 0 0 99 0 0 0
В столбцах disk xfer указывается число операций передачи данных для указанных физических томов за интервал измерения. В отчете команды могут быть указаны имена от одного до четырех физических томов. Число операций выводится для каждого из заданных устройств в порядке их перечисления. Это значение отражает число запросов к физическому устройству. Оно не связано напрямую с объемом считанных или записанных данных. Несколько логических запросов могут объединяться в один физический запрос.
В этом столбце указано, сколько аппаратных прерываний в секунду возникало за интервал измерения. Прерывания отправляются при возникновении таких событий, как завершение выполнения запроса диском или истечение очередных 10 миллисекунд, измеряемых таймером. Последнее прерывание отправляется 100 раз в секунду, поэтому значение в поле in всегда больше 100. Команда vmstat позволяет получить более подробную информацию о прерываниях.
Команда с опцией -i позволяет узнать число прерываний, полученных каждым устройствам с момента запуска системы. Если в команде указан интервал сбора информации и, при необходимости, число отчетов, то статистика с момента запуска системы будет выведена только в первом разделе; в остальных разделах вывода будет приведена статистика за очередной интервал.
# vmstat -i 1 2 приоритет уровень тип число модуль(обработчик) 0 0 аппаратный 0 i_misc_pwr(a868c) 0 1 аппаратный 0 i_scu(a8680) 0 2 аппаратный 0 i_epow(954e0) 0 2 аппаратный 0 /etc/drivers/ascsiddpin(189acd4) 1 2 аппаратный 194 /etc/drivers/rsdd(1941354) 3 10 аппаратный 10589024 /etc/drivers/mpsdd(1977a88) 3 14 аппаратный 101947 /etc/drivers/ascsiddpin(189ab8c) 5 62 аппаратный 61336129 clock(952c4) 10 63 аппаратный 13769 i_softoff(9527c) приоритет уровень тип число модуль(обработчик) 0 0 аппаратный 0 i_misc_pwr(a868c) 0 1 аппаратный 0 i_scu(a8680) 0 2 аппаратный 0 i_epow(954e0) 0 2 аппаратный 0 /etc/drivers/ascsiddpin(189acd4) 1 2 аппаратный 0 /etc/drivers/rsdd(1941354) 3 10 аппаратный 25 /etc/drivers/mpsdd(1977a88) 3 14 аппаратный 0 /etc/drivers/ascsiddpin(189ab8c) 5 62 аппаратный 105 clock(952c4) 10 63 аппаратный 0 i_softoff(9527c)
Примечание: Вывод этой команды зависит от системы, ее аппаратной и программной конфигурации (например, прерывания от таймера могут быть не показаны в выводе команды vmstat -i, хотя они и учитываются в столбце in вывода команды vmstat). Обратите внимание на большие значения в столбце count; постарайтесь выяснить причину, по которой соответствующему модулю пришлось отправить большое число прерываний.
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:
Информацию о фрагментации логических томов можно получить с помощью команды 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 показано распределение физических разделов по диску в формате:
внешний край : внешняя область : средняя область : внутренняя область : внутренний край
Дополнительная информация о распределении физических разделов приведена в разделе Расположение на физическом томе.
Если скорость работы приложений существенно зависит от скорости ввода-вывода, исследуйте физическое расположение файлов на диске и определите, нужна ли реорганизация на каком-либо уровне. Для того чтобы получить информацию о расположении разделов логического тома 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 отсутствуют свободные физические разделы.
Для того чтобы получить информацию о размещении на диске ранее скопированного файла 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, займет больше места, чем исходный, хотя будет содержать те же данные.
Большая эффективность использования пространства означает, что фрагментация файлов невелика, а последовательный доступ к ним выполняется быстро. Высокая компактность размещения означает, что при размещении файлы разбиваются на небольшое число фрагментов, что также повышает скорость последовательного доступа.
Если компактность размещения или эффективность использования пространства уменьшается, рекомендуется реорганизовать логический том с помощью команды reorgvg (за дополнительной информацией обратитесь к разделу Реорганизация логических томов). Информация о реорганизации файловых систем приведена в разделе Реорганизация файловых систем.
В этом примере Физический адрес последнего фрагмента - Физический адрес первого фрагмента + 1 = 0002539 - 0001584 + 1 = 956 фрагментов; всего занято 8 + 48 + 812 = 868 фрагментов; эффективность использования пространства равна 868 / 956 (90.8 процентов); компактность размещения равна (868 - 3+ 1) / 868 = 99.8 процентов.
Поскольку общее число фрагментов файла не учитывает дополнительные блоки, ссылки на которые хранятся в основных блоках, в то время как физические адреса их учитывают, эффективность использования дискового пространства никогда не достигает 100 процентов для файла больше 32 Кб, даже если он расположен в последовательных фрагментах.
В операциях подкачки обычно применяется произвольный способ доступа, причем за каждую операцию обычно считывается или записывается только одна страница. Команда 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 -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 применяет программу трассировки для получения подробной информации об интенсивности ввода-вывода на различных уровнях файловой системы, включая логическую файловую систему, сегменты виртуальной памяти (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. По умолчанию отчеты о логических файлах и виртуальной памяти ограничены 20 файлами и сегментами, наиболее активными с точки зрения количества переданных данных. Если указан флаг -v, выводится информация обо всех файлах и сегментах. Все объекты перечисляются в порядке уменьшения активности.
Наиболее активные файлы - это 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
Во время работы команды с помощью инструмента анализа виртуальной памяти svmon можно получить дополнительную информацию о сегменте по его идентификатору (segid): svmon -DИД-сегмента. Более подробная информация приведена в разделе Команда svmon.
В данном примере значение ??? означает, что системе не удалось определить тип сегмента. Дополнительную информацию можно получить с помощью команды svmon.
Интенсивность использования указывается в процентах от максимума: 0,06 означает, что в течение интервала измерения том был загружен на 6 процентов.
Примечание: Запросы ввода-вывода для логического тома начинают обрабатываться раньше и завершают обрабатываться позже, чем для физического тома. В связи с этим показатель использования логического тома будет больше, чем аналогичный показатель физического тома.
Интенсивность использования тома измеряется в процентах от максимального значения: 0,10 означает, что в течение интервала измерения том был загружен на 10 процентов.
Подробные отчеты содержат дополнительную информацию об объектах, статистика для которых приведена в общих отчетах. Подробные отчеты содержат по одной записи для каждого файла, сегмента или тома. Поля записей всех четырех подробных отчетов описаны ниже. Некоторые поля описывают одно значение; другие содержат информацию о распределении целой серии значений. Например, для всех отслеживаемых запросов чтения и записи сохраняется время ответа. На основании полученных значений вычисляется среднее значение, минимум, максимум и стандартное отклонение. Стандартное отклонение показывает, как сильно отдельное время ответа отклоняется от среднего значения. Примерно две трети значений времени ответа отличаются от среднего не больше, чем на стандартное отклонение (ср - откл или ср + откл). Если бы время ответа измерялось в течение более длительного интервала времени, то стандартное отклонение от среднего значения было бы больше.
Подробная статистика выводится для каждого файла, упомянутого в отчете Наиболее активные файлы. С ее помощью можно определить применявшийся способ доступа к файлу. Кроме суммарного числа переданных байт, операций открытия, чтения, записи и поиска, выводится объем считываемых и записываемых данных, а также время выполнения этих операций.
Объем считанных и записанных данных позволяет определить эффективность чтения и записи информации приложением. Наиболее оптимальным является значение, кратное размеру страницы (4 Кб).
Подробная статистика выводится для каждого сегмента, упомянутого в отчете Наиболее активные сегменты.
Сравнивая число операций и последовательностей чтения, можно узнать применявшийся способ доступа к файлу (произвольный или последовательный). Например, если число последовательностей близко к числу операций чтения, доступ к файлу можно считать произвольным. С другой стороны, если число последовательностей много меньше числа операций чтения, и их средняя длина велика, доступ к файлу можно считать последовательным. То же самое относится и к операциям записи.
Подробная статистика выводится для каждого тома, упомянутого в отчете Наиболее активные логические тома или Наиболее активные физические тома. Кроме числа операций чтения и записи выводятся параметры распределения времени выполнения этих операций, начальная и средняя длина поиска.
Большое время поиска приводит к увеличению времени ответа и снижению производительности приложений. Сравнивая количество операций чтения и число последовательностей можно определить способ доступа. Это относится и к операциям записи.
Ниже приведены рекомендации по применению команды filemon:
Поскольку на выполнение команды filemon затрачивается часть процессорного времени, применяйте ее только при необходимости. При анализе вывода команды учитывайте влияние этой команды на производительность системы. Тесты показывают, что в среде с большой нагрузкой на процессор:
Обычно большое значение % iowait указывает на ошибку в приложении, недостаток памяти или неправильную настройку подсистемы ввода-вывода. Например, приложение может считывать большой объем лишних данных, которые впоследствии не обрабатываются. Для устранения узкого места в подсистеме ввода-вывода важно понять его причину. Работа приложения зависит от эффективности дискового ввода-вывода во многих ситуациях, для каждой из которых можно придумать собственное решение. Ниже перечислены некоторые действия, позволяющие повысить эффективность дискового ввода-вывода:
Все перечисленные возможности обсуждаются далее в этом разделе.