Операционная система ЗОСРВ «Нейтрино» > Описание базовых компонентов целевой системы > Сервисы > tracelogger



tracelogger

Сервис записи системной трассы в файл событий

Синтаксис:

tracelogger [-cEPRrw] [-A атрибут] [-b число] [-d режим] [-F фильтр] [-f файл] [-k число] [-M -S размер] [-n число] [-s число] [-v[v...]]

Опции:

-A атрибут
Указать атрибут для добавления в журнал. Для значения атрибут предусмотрен формат имя=значение, где имя и значение представлены произвольными строками. Может быть передано несколько опций -A.

Note: Использование следующих имен или значений недопустимо:
  • ::
  • TRACE_
  • =
При использовании этого значения утилита tracelogger выводит сообщение и игнорирует указанный атрибут.

Эту опцию можно указать несколько раз для добавления информации, используемой для идентификации регистрируемого сценария. Пример:
tracelogger -s1 -A MACHINE_NAME=tx86 -A PERIOD=1s
-b число
Максимальное число динамических буферов, выделяемых сервисом tracelogger. Значение по умолчанию – 64. Размер каждого буфера составляет приблизительно 11 Кб.
-c
Работать в непрерывном режиме. По умолчанию утилита работает в итерационном режиме.
-d режим
В настоящее время режим может принимать следующие значения:
1 ("Один")
Запустить в режиме сервиса (в режиме "демона"). Если не указана опция -E, утилита tracelogger игнорирует все остальные опции, а конфигурирование, запуск и останов трассировки выполняются приложениями (см. TraceEvent()).
-E
Использовать расширенный режим сервиса (-d1) путем применения других опций для утилиты tracelogger. Также опция настраивает исходный перечень принимаемых событий. Для начала перехвата событий трассировки для используемого приложения по прежнему требуется вызов функции TraceEvent().
-f файл
Имя файла для сохранения зарегистрированных событий. По умолчанию используется файл /dev/shmem/tracebuffer.kev.
-F фильтр
Режим фильтрации в зависимости от выбранного фильтра:
0
Не выполнять фильтрацию.
1
Деактивировать класс вызовов Kernel.
2
Деактивировать класс Interrupt.
3
Деактивировать класс Process.
4
Деактивировать класс Thread.
5
Деактивировать класс VThread.
6
Деактивировать класс Communication.
7
Деактивировать класс System.

Можно указать несколько фильтров путем определения нескольких опций -F. Например, для одновременной деактивации классов Interrupt и VThread следует указать опции -F2 -F5.
-k число
Число буферов, выделяемых в микроядре. Значение по умолчанию – 32. Размер каждого буфера составляет приблизительно 16 Кб.
-M
Выполнить отображение журнала регистрации вместо записи. В случае использования этой опции журнал регистрации должен храниться в разделяемой памяти. Кроме того, следует установить опцию -S для определения максимального размера файла.
-n число
Число итераций для регистрации данных в итерационном режиме. Значение по умолчанию – 32. Для определения неограниченного числа итераций следует указать значение 0.
-P
Сохранить буферы трассировки ядра в блоке разделяемой памяти в /dev/shmem. Если указана эта опция, утилита tracelogger не освобождает внутреннюю буферную память ядра при завершении работы. При последующих запусках можно указать опцию -R для повторного использования утилитой tracelogger тех же буферов без перераспределения памяти.
-R
Повторно использовать буферы трассировки ядра, созданные ранее при использовании опции -P. В случае отсутствия буферов для повторного использования утилита tracelogger выделяет новые буферы ядра.
-r
Установить кольцевой режим для буфера ядра. По умолчанию используется линейный режим.
-s число
Число секунд для регистрации в непрерывном режиме (в соответствии с опцией -c). Значение по умолчанию – 0, указывающее неограниченную продолжительность.
-S размер
Максимальный размер журнала. M – мегабайты, K – килобайты. Если буква M или K не используется, единицей измерения считается байт. Эта опция обязательна, если используется опция - M.
-v[v...]
Вывести расширенную информацию; чем больше символов v, тем более подробная информация выводится.
-w
Регистрировать события в расширенном режиме. По умолчанию выполняется регистрация событий в быстром режиме.


Caution:
  • Эту утилиту может выполнить только пользователь root.
  • Для обеспечения возможности регистрации событий трассировки в системе должна выполняться инструментальная версия микроядра procnto*-instr.

Платформы:

ЗОСРВ «Нейтрино»

Целевые архитектуры:

aarch64, arm, armv7, e2k, mips, ppc, x86

Описание:

Сервис tracelogger получает события из инструментального ядра ( procnto*-instr) и сохраняет их в файл или на устройство для последующего анализа. По умолчанию сервис сохраняет события в файл /dev/shmem/tracebuffer.kev (от англ. Kernel EVents).

Запустить сервис tracelogger можно со следующими параметрами:

-n число
Ядро записывает события во внутренний буфер. Сервис логирует события в пределах запрошенного количества итераций, после чего завершает свою работу.
-r
Ядро записывает события во внутренний кольцевой буфер, но сервис не логирует события до поступления сигнала SIGINT или вызов прикладным кодом TraceEvent( _NTO_TRACE_STOP ).
-d1
Функционирование сервиса в режиме "демона". Ядро не записывает события и сервис не логирует их до вызова прикладным кодом TraceEvent( _NTO_TRACE_START ). Процедура не завершается до терминирования сервиса или вызова прикладным кодом TraceEvent( _NTO_TRACE_STOP ).
-s число
Ядро записывает события во внутренний буфер. Сервис логирует события в пределах указанного временного интервала, после чего завершает свою работу.
-c
Ядро записывает события во внутренний буфер. Сервис логирует события до своего завершения.

Самый простой способ настройки трассировки – запуск tracelogger в обычном или расширенном режимах (-d1 -E). В этом случае сервис выполняет инициализацию и контроль модуля трассировки микроядра, а также сохранение трассы в файл. В расширенном режиме сервис будет ожидать вызова прикладным кодом TraceEvent(). Кроме определения числа буферов трассировки ядра при инициализации, сервис занимается исключительно логированием событий.


Caution: В SMP-системах рассинхронизация временных меток может приводить к неоднозначной трактовке данных в трассе.

Примеры:

Запуск tracelogger в расширенном режиме с выводом информации о функционировании системы на экран консоли; сохранение регистрируемых данных в указанный файл и прекращение регистрации после заполнения 12 буферов трассировки:

tracelogger -f /dev/shmem/my_tracebuffer -n 12 -w

Запуск tracelogger в кольцевом режиме (фоновом) с использованием 5 внутренних буферов и ожиданием асинхронного сигнала (например, Ctrl - C) для его останова:

tracelogger -r -b 5

Выполнение tracelogger в непрерывном режиме на протяжении 20 секунд:

tracelogger -c -s20

Возвращаемое значение:

-1
Возникла ошибка.

Ошибки:

К завершению работы tracelogger могут привести лишь очень серьезные системные ошибки.

Предостережения:

Единовременно следует выполнять только один экземпляр tracelogger. Также не следует запускать tracelogger, если в это время идёт сбор трассы событий, инициированный другим сервисом, например, qconn.

Классификация:

Базовые подсистемы ЗОСРВ «Нейтрино»

Тематические ссылки:

procnto*-instr, qconn, traceprinter

TraceEvent()




Предыдущий раздел: Сервисы