Представлен релиз системы динамической трассировки SystemTap 1.8, предоставляющий для платформы Linux средства похожие на технологию DTrace. SystemTap позволяет организовать доскональное наблюдение за работающей Linux системой, производить сбор статистики о работе приложений, профилирование и контроль системных вызовов. Управление производится через интерфейс командной строки и специальный Си-подобный язык сценариев.
В развитии проекта участвуют такие компании как Red Hat, IBM, Intel, Hitachi и Oracle. В каталоге примеров представлено более 100 скриптов на все случаи жизни, подходящие для слежения за распределением памяти, вводом/выводом, дисковыми операциями, сетевым трафиком (например, анализ работы NFS), работой планировщика задач, обработкой прерываний, использованием системных буферов, установкой блокировок, выполнением системных вызовов, обработкой сигналов и т.п.
Основные улучшения версии 1.8:
- Поддержка проверки приложений пространства пользователя из коробки начиная с выпуска ядра 3.5-rc, без необходимости использования модифицированного ядра Linux;
- Поддержка контрольных вызовов (probes) для подсистемы netfilter. Набор сопутствующих инструментов представлен в tapset-е netfilter.stp;
- Полная поддержка IPv6 в tapset-ах и сервере/клиенте компиляции скриптов;
- В сервере компиляции сценариев (systemtap compile-server) обеспечена поддержка параллельной обработки одновременных соединений (управление через опцию «—max-threads»);
- Поддержка секций «.debug_types», определённых в отладочном формате DWARF4 (например, используется когда исполняемый файл или библиотека собраны свежими версиями GCC с опцией -gdwarf-4 или -fdebug-types-section);
- Реализация конструкции @var(), которую можно использовать для доступа к переменным в глобальной области видимости.
Например, указав @var(«somevar@some/src/file.c») можно получить доступ к значению переменной somevar, определённой в файле «some/src/file.c». - Поддержка в stap возможности ограничения ресурсов (—rlimit-as=NUM, —rlimit-cpu=NUM, —rlimit-nproc=NUM, —rlimit-stack=NUM, —rlimit-fsize=NUM);
- Тестирование работы в широком спектре версий ядра Linux, от 2.6.9 до 3.5-rc.
- Добавлен новый tapset guru-delay.stp, позволяющий внедрять задержки в операции ядра. Обновлены tapset-ы: syscalls.stp (поддержка системных вызовов ядра 3.5-rc), dentry.stp, context-caller.stp, s390/registers.stp , inet_*.stp (расширено число доступных в непривилегированном режиме функций), inet_*.stp (поддержка IPv6);
- Новые примеры использования SystemTap:
- netfilter_drop.stp — отбрасывание заданных исходящих пакетов;
- netfilter_summary.stp — показ TCP/IP трафика по адресу источника и назначения;
- psig.stp — показ активных обработчиков сигналов для указанного процесса;
- auditbt.stp — генерация обратной трассировки (backtraces) для пользовательсного процесса для заданных событий аудита;
- nfsdtop.stp — вывод суммарных данных о выполняемых запросах в NFS;
- pf3.stp — формирование профиля взаимодействия ядра и пользовательского процесса;
- enospc.stp — создание в syslog записей при нехватке свободного места на дисковом разделе.