Памятник Тадеушу Костюшко (Вавель)
- 1 year ago
- 0
- 0
SystemTap — средство, которое позволяет собирать и анализировать информацию о работающей Linux -системе.
В отличие от встроенных средств, таких как netstat , ps , top , SystemTap был разработан с целью предоставить больше возможностей для сбора и представления информации.
SystemTap представляет собой интерфейс командной строки и скриптовый язык .
Системные администраторы могут использовать SystemTap для мониторинга и анализа производительности системы, а разработчики программного обеспечения могут использовать SystemTap для анализа поведения приложения в работающей системе.
В разработке проекта SystemTap участвуют такие компании как Red Hat , IBM , Oracle Corporation , Hitachi .
Основная идея SystemTap состоит в том, чтобы обозначить события и назначить для них обработчики.
Во время выполнения скрипта, SystemTap занимается мониторингом событий и, как только произойдёт событие, ядро системы выполнит обработчик.
Событиями могут быть начало или конец сессии SystemTap, срабатывание таймера и другие.
Обработчиком является последовательность скриптовых операторов, которые будут выполнены после срабатывания события. Обычно обработчики извлекают информацию из контекста события или выводят информацию на экран.
Сессия SystemTap начинается тогда, когда мы выполняем скрипт. В это время происходит следующая последовательность действий:
Синхронные события привязаны к инструкции в определённом месте в коде ядра.
Примеры синхронных событий:
Асинхронные события не привязаны к определённой инструкции или определённому месту в коде ядра.
Примеры асинхронных событий:
Обработчик события заключается в фигурные скобки ({}).
Для вывода на экран используется функция форматного вывода printf («format string\n», arguments), которая схожа с аналогичной функцией в C .
Некоторые функций SystemTap для использования совместно с printf():
Скрипт:
probe syscall.open { printf ("%s(%d) open\n", execname(), pid()) }
Результат:
vmware-guestd(2206) open hald(2360) open hald(2360) open hald(2360) open df(3433) open df(3433) open df(3433) open hald(2360) open