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

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


Пример применения функции трассировки

Ниже приведен пример обычной трассировки:

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

Получение примера файла трассировки

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

# trace -a -k "20e,20f" -o trc_raw ; cp ../bin/track /tmp/junk ; trcstop

при этом будет выполнена также и команда cp. Мы воспользовались двумя функциями команды trace. Если задана опция -k "20e,20f", то сбор данных о событиях функций lockl() и unlockl() выполняться не будет. Число таких вызовов в однопроцессорных системах, в отличие от систем SMP, значительно, и при их обработке в отчет заносится большой объем ненужной информации. Если задана опция -o trc_raw, то файл с прямым выводом трассировки будет помещен в локальный каталог.

Пример форматирования трассировки

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

# trcrpt -O "exec=on,pid=on" trc_raw > cp.rpt

При вводе этой команды будут сохранены уточненное имя обрабатываемого файла и ИД присвоенного ему процесса.

Файл отчета содержит информацию о большом числе событий присвоения страниц VMM и удаления событий, как, например, в следующей последовательности:

1B1 ksh            8526          0.003109888       0.162816
         VMM page delete:      V.S=0000.150E ppage=1F7F
             working_storage delete_in_progress process_private computational
 
1B0 ksh            8526          0.003141376       0.031488
         VMM page assign:      V.S=0000.2F33 ppage=1F7F
             working_storage delete_in_progress process_private computational

В настоящий момент нас не интересуют подробности действий VMM, поэтому трассировка будет заново отформатирована следующим образом:

# trcrpt -k "1b0,1b1" -O "exec=on,pid=on" trc_raw > cp.rpt2

Параметр -k "1b0,1b1" подавляет включение в отформатированный вывод ненужной информации о событиях VMM. Если вы его укажете, то вам не придется выполнять повторную трассировку рабочей схемы для удаления этой информации. Если необходимо просмотреть действия по блокировке в какой-то точке, то для подавления событий lockl() и unlockl() можно воспользоваться не командой trace, а функцией -k команды trcrpt. Если необходимы данные только о небольшом наборе событий, то можно задать -d "hookid1,hookid2" для создания отчета только с этими событиями. Поскольку ИД точки - это самый левый столбец отчета, то для создания списка точек трассировки достаточно выполнить всего несколько действий. Полный списко ИД точек трассировки приведен в файле /usr/include/sys/trchkid.h.

Описание отчета трассировки

В заголовке отчета трассировки указано, когда и где была выполнена трассировка, а также формат команды трассировки:

чет 28 окт 13:34:05 1999
Система: AIX texmex  Узел: 4  Компьютер: 000691854C00
Адрес протокола Internet: 09359BBB 9.53.155.187
Буферизация: куча ядра
 
trace -a -k 20e,20f -o trc_raw

Тело отчета будет выведено маленьким шифтом, аналогичным следующему:

ИД  ИМЯ ПРОЦЕССА  PID     ВРЕМЯ(СЕК)    ДЕЛЬТА(МСЕК) ПРИЛ. SYSCALL   ЯДРО  ПРЕРЫВАНИЕ
101 ksh           8526    0.005833472    0.107008          kfork LR = D0040AF8
101 ksh           7214    0.012820224    0.031744          execve LR = 10015390
134 cp            7214    0.014451456    0.030464          exec:  cmd=cp ../bin/track /tmp/junk pid=7214 tid=24713
 

Файл cp.rpt2 содержит следующую информацию:

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

Фильтрация информации в отчете трассировки

Чаще всего подробный отчет трассировки не требуется. Вы можете выбрать несколько событий, информация о которых вас интересует. Например, вам может потребоваться узнать, сколько раз произошло конкретное событие. Для определения числа выполненных запросов на открытие в примере копирования определите ИД события для системного вызова open(). Для этого введите следующую команду:

# trcrpt -j | grep -i open

Будет показана информация о том, что ИД события 15b соответствует событию OPEN SYSTEM CALL. Теперь обработайте данные примера копирования следующим образом:

# trcrpt -d 15b -O "exec=on" trc_raw

Файл отчета будет выведен стандартным образом, и вы сможете определить в нем число функций open(). Для того чтобы просмотреть только те функции open(), которые были выполнены процессом cp введите команду создания отчета со следующими параметрами:

# trcrpt -d 15b -p cp -O "exec=on" trc_raw


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