Трассировщик служит для локализации неполадок в системе путем отслеживания указанных системных событий. Можно отслеживать следующие события: вызов и возврат из выбранных функций, функций ядра, функций расширений ядра и обработчиков прерываний. Если трассировщик включен, информация об этих событиях заносится в системный файл протокола трассировки. Трассировщик содержит команды для включения трассировки, управления трассировкой и создания отчетов о трассировке. Приложения и расширения ядра могут заносить в протокол дополнительные события с помощью ряда специальных функций.
Дополнительная информация о трассировщике приведена в следующих разделах:
Планировщик находится в наборе файлов bos.sysmgt.trace. Для того чтобы проверить, установлен ли данный набор файлов, введите команду
lslpp -l | grep bos.sysmgt.trace
Если в данные вывода содержат строку bos.sysmgt.trace , то набор файлов установлен, в противном случае, его необходимо установить.
В разделе обсуждаются следующие вопросы:
Трассировщик системы AIX позволяет записать события трассировки, которые затем могут быть отформатированы командой trace report. События трассировки включены в ядро или код приложения, но отслеживаются только во время трассировки.
Запустить трассировку позволяет команда trace и функция trcstart. Для завершения трассировки предназначены команда trcstop и функция trcstop. Для приостановки и возобновления трассировки предназначены команды trcoff и trcon, а также функции trcoff и trcon.
После того как трассировка была остановлена с помощью команды trcstop, команда trcrpt позволяет создать отчет. Формат записей, применяемый данной командой, задается в файле шаблона /etc/trcfmt. Для установки шаблонов предназначена команда trcupdate. Дополнительная информация о шаблонах приведена в описании команды trcupdate.
Команда trace позволяет запустить трассировку событий системы и осуществляет управление размером буфера и файла протокола трассировки. Информация об этой команде приведена в разделе, посвященном демону trace, книги Command's Reference.
Существует три способа сбора данных трассировки.
Обычно, команда trace запускается в асинхронном режиме, т.е. после ее запуска можно продолжить работу в обычном режиме. Для запуска трассировки в асинхронном режиме следует указать флаг -a. В этом случае для завершения трассировки необходимо ввести команду trcstop.
Рекомендуется ограничивать отслеживаемую информацию. Флаги -j events и -k events позволяют указать наборы событий, которые будут включены (-j) в трассировку или исключены (-k) из нее. Обратите внимание, что для просмотра названий программ, связанных с точками трассировки, необходимо включить соответствующие точки трассировки. Дополнительная информация по этому вопросу приведена в описании команды trace command . Включить эти точки трассировки можно также, выбрав группу точек трассировки tidhk в программе SMIT.
Например, для трассировки точки mbuf, 254, и просмотра названий программ необходимо ввести следующую команду trace:
trace -aj 106,10c,134,139,465,254
Выполняется трассировка.
trcstop
trcrpt -O exec=on
Точки трассировки, необходимые для просмотра названий программ, меняются в зависимости от выпуска; дополнительная информация приведена в описании команды trace command. Опция trcrpt -O exec=on позволяет просмотреть названия программ, см. описание команды trcrpt command.
В некоторых случаях рекомендуется указывать размер буфера и максимальный размер файла протокола. Для буферов трассировки необходима физическая память, так как запись точек трассировки должна осуществляться без подкачки. После достижения максимального размера файла протокола данные трассировки записываются поверх наиболее ранних записей. Флаги -T размер и -L размер позволяют указать в байтах размер буферов и максимальный размер данных трассировки в файле протокола.
Примечание: Так как трассировщик резервирует для буферов сбора данных определенный объем оперативной памяти системы, трассировка может оказать негативное влияние на производительность системы с ограниченным объемом оперативной памяти. Если трассируемому приложению достаточно оперативной памяти, или объем памяти, используемой функцией трассировки составляет небольшой процент от общего объема оперативной памяти системы, влияние трассировки на производительность будет небольшим. Если значение не указано, применяется размер, заданный по умолчанию.
Следует также отметить, что по умолчанию память для буфера выделяется из кучи ядра. Если в куче недостаточно свободной памяти, она выделяется из отдельных сегментов. В загруженной системе рекомендуется выделять память из отдельных сегментов, чтобы не уменьшать размер кучи ядра. Для этого предназначен флаг -B команды trace .
Управление трассировкой может также осуществляться из приложения. Дополнительная информация приведена в описаниях команд trcstart и trcstop.
Существует два типа данных трассировки.
Полное описание команды trcrpt приведено в разделе команда trcrpt. Эта команда позволяет создать из файла протокола, записанного командой trace, отчет для пользователя. По умолчанию команда форматирует данные из файла протокола /var/adm/ras/trcfile. Выходные данные команды trcrpt отправляется в стандартный вывод.
Для создания отчета трассировки из файла по умолчанию и его записи в /tmp/rptout, введите команду
trcrpt >/tmp/rptout
Для создания отчета трассировки с названиями программ и именами системных вызовов из файла /tmp/tlog и его записи в файл /tmp/rptout введите команду
trcrpt -O exec=on,svc=on /tmp/tlog >/tmp/rptout
Если во время трассировки был создан системный дамп, данные трассировки можно получить с помощью команды trcdead. Для того чтобы сохранить в системе файл протокола трассировки по умолчанию, укажите опцию -o файл-вывода.
Например команда
trcdead /o /tmp/tlog /var/adm/ras/vmcore.0
создает файл протокола трассировки /tmp/tlog, который затем может быть отформатирован командой
trcrpt /tmp/tlog
Перечисленные команды являются
частью трассировщика:
trace | Запускает трассировку системных событий. С помощью этой команды можно определять размер и параметры файла протокола трассировки, а также внутренних буферов трассировки, в которых хранятся данные об отслеживаемых событиях. |
trcdead | Извлекает трассировочную информацию из системного дампа. Если в момент останова системы работали средства трассировки, то содержимое внутренних буферов трассировки будет включено в дамп. Эта команда извлекает данные об отслеживаемых событиях из файла дампа и записывает их в файл протокола трассировки. |
trcnm | Генерирует список имен ядра для команды trcrpt. Этот список формируется из таблицы имен и таблицы имен загрузчика для объектного файла. С помощью файла имен ядра команда trcrpt выполняет преобразование адресов при формировании отчета из файла протокола трассировки. |
trcrpt | Формирует отчеты об отслеживаемых событиях, занесенных в файл протокола трассировки. При вызове этой команды можно указать, какие события следует включить в отчет или, наоборот, не включать в него, а также определить формат вывода. Способ интерпретации командой trcrpt данных, относящихся к каждому событию, определяется шаблонами, хранящимися в файле /etc/trcfmt. |
trcstop | Прекращает трассировку системных событий. |
trcupdate | Обновляет шаблоны форматирования трассировки в файле /etc/trcfmt. При добавлении новых приложений или расширений ядра, регистрирующих события трассировки, в файл /etc/trcfmt необходимо добавить шаблоны для этих событий. Шаблоны форматирования трассировки определяют способ интерпретации данных, относящихся к каждому событию, в команде trcrpt. Программные продукты, выполняющие регистрацию событий, обычно запускают команду trcupdate во время установки. |
Трассировщик включает в себя
следующие вызовы и функции:
trcgen, trcgent | Регистрирует наступление отслеживаемых событий в виде записей, состоящих более чем из пяти слов данных. С помощью функции trcgen можно регистрировать события в канале трассировки системных событий (канал 0) или в канале трассировки общего назначения (каналы 1-7). Номер канала передается в функцию при регистрации события. Функция trcgent добавляет к данным регистрации текущее системное время. |
trchook, utrchook | Регистрирует наступление отслеживаемых событий в виде записей, состоящих не более чем из пяти слов данных. С помощью этих функций можно регистрировать события в канале трассировки системных событий (канал 0). Функция utrchook для повышения производительности использует специальный путь FAST-SVC; ее следует вызывать из программ пользовательского (прикладного) уровня. |
trcgenk, trcgenkt | Регистрирует наступление отслеживаемых событий в виде записей, состоящих более чем из пяти слов данных. С помощью функции trcgenk можно регистрировать события в канале трассировки системных событий (канал 0) или в канале трассировки общего назначения (каналы 1-7). Номер канала передается в функцию при регистрации события. Функция trcgenkt добавляет к данным регистрации текущее системное время. |
trcoff | Приостанавливает регистрацию отслеживаемых событий в канале трассировки системных событий (канал 0) или в канале трассировки общего назначения (каналы 1-7). При этом канал трассировки остается активным. Возобновить регистрацию событий можно с помощью функции trcon. |
trcon | Запускает регистрацию отслеживаемых событий в канале трассировки системных событий (канал 0) или в канале трассировки общего назначения (каналы 1-7). Однако канал трассировки необходимо предварительно активизировать с помощью команды trace или функции trcstart. Приостановить регистрацию событий можно с помощью команды trcoff. |
trcstart | Запрашивает канал трассировки общего назначения. Эта функция активизирует канал трассировки общего назначения и возвращает в вызывающее приложение номер канала, который впоследствии будет передаваться в функции trcgen, trcgent, trcgenk и trcgenkt. |
trcstop | Освобождает и деактивизирует канал трассировки общего назначения. |
/etc/trcfmt | Содержит шаблоны форматирования трассировки, с помощью которых команда trcrpt определяет способ интерпретации данных, относящихся к каждому событию. |
/var/adm/ras/trcfile | Является файлом протокола трассировки по умолчанию. В команде trace можно указать другое имя файла протокола трассировки. |
/usr/include/sys/trchkid.h | Содержит определения идентификаторов точек трассировки. |
/usr/include/sys/trcmacros.h | Содержит набор часто применяемых макроопределений для регистрации отслеживаемых событий. |
Запись о наступлении каждого отслеживаемого события имеет следующий формат: слово, содержащее идентификатор точки трассировки и ее тип, затем переменное количество слов данных трассировки и, наконец, необязательное системное время. Слово, содержащее идентификатор и тип точки трассировки, называется ключевым словом. Оставшиеся два байта ключевого слова называются данными точки трассировки и могут применяться для регистрации события.
Идентификатор точки трассировки представляет собой трехзначное шестнадцатеричное число, соответствующее отслеживаемому событию. Идентификатор точки трассировки занимает первые двенадцать разрядов ключевого слова. Идентификаторы точек трассировки определяются в файле /usr/include/sys/trchkid.h. В пользовательских приложениях могут применяться значения в диапазоне 0x010-0x0FF. Все остальные значения зарезервированы для системных целей. Список определенных в данный момент идентификаторов точек трассировки можно просмотреть с помощью команды trcrpt -j.
Тип точки трассировки определяет формат данных о событии и указывается пользователем. Тип точки трассировки хранится в разрядах 12-16 ключевого слова. Более подробная информация о типах точек трассировки приведена в описаниях функций trcgen, trcgenk и trchook.
Трассировщик может поддерживать до восьми активных сеансов трассировки одновременно. Каждый сеанс трассировки работает с отдельным каналом специального файла мультиплексной трассировки /dev/systrace. Канал 0 служит для регистрации системных событий. Трассировка системных событий запускается командой trace и прекращается командой trcstop. Каналы 1-7 называются каналами трассировки общего назначения и могут использоваться подсистемами для трассировки других событий, например, событий передачи данных.
Для инициализации канала трассировки общего назначения подсистема вызывает функцию trcstart, которая активизирует канал трассировки и возвращает его номер. После этого модули подсистемы могут регистрировать события с помощью функций trcgen, trcgent,trcgenk или trcgenkt. Номер канала, возвращаемый функцией trcstart, должен передаваться в эти функции в числе прочих параметров. Подсистема может приостановить регистрацию с помощью функции trcoff, возобновить ее с помощью функции trcon и деактивизировать канал трассировки с помощью функции trcstop. События, отслеживаемые в каждом канале, должны заноситься в отдельный файл протокола трассировки, имя которого необходимо указать при вызове функции trcstart. Для активизации и деактивизации трассировки в подсистеме в последней должен быть предусмотрен пользовательский интерфейс.
Каналы трассировки работают с общими идентификаторами точек трассировки, хранящимися в файле /usr/include/sys/trchkid.h, и шаблонами форматирования трассировки, хранящимися в файле /etc/trcfmt.
Описание демона trace в книге AIX 5L Version 5.1 Commands Reference.
Описания команд trcdead , trcnm, trcrpt, trcstop, trcupdate в книге AIX 5L Version 5.1 Commands Reference.
Описания функций trchook , trcgen, trcoff, trcon, trcstart, trcstop в книге AIX 5L Version 5.1 Technical Reference: Base Operating System and Extensions Volume 2.