Состоялся релиз системы динамической трассировки SystemTap 3.3, предоставляющий для платформы Linux средства отладки, похожие на технологию DTrace. SystemTap позволяет организовать доскональное наблюдение за работающей Linux-системой, производить сбор статистики о работе приложений, профилирование и контроль системных вызовов. Управление производится через интерфейс командной строки и специальный Си-подобный язык сценариев. Система протестирована с ядрами Linux начиная с версии 2.6.32 и заканчивая 4.18-rc0.
В развитии проекта участвуют такие компании как Red Hat, IBM, Intel, Hitachi и Oracle. В каталоге примеров представлено 163 скрипта на все случаи жизни, подходящие для слежения за распределением памяти, вводом/выводом, дисковыми операциями, сетевым трафиком (например, анализ работы NFS), работой планировщика задач, обработкой прерываний, использованием системных буферов, установкой блокировок, выполнением системных вызовов, обработкой сигналов и т.п.
Основные новшества:
- Расширены возможности бэкенда трассировки на базе подсистемы ядра eBPF: появилась поддержка контрольных проверок с использованием механизмов uprobes, perf counter и tracepoint. В контрольных проверках на базе eBPF обеспечена возможность выполнения циклов (только для проверок в пространстве пользователя), которые могут применяться например, для перебора элементов массивов;
- В тапсетах (tapset) добавлена начальная поддержка платформы MIPS;
- Runtime и тапсеты портированы для ядер Linux, вплоть до версии 4.17;
- В Systemtap runtime добавлена возможность обработки некоторых побочных проблем, возникших из-за добавления в ядро защиты от атак Meltdown и Spectre, таких как скрытие и перемещение указателей. В runtime также добавлено насколько исправлений, связанных с низкоуровневой обработкой блокировок, решающих проблемы на системах с большим числом CPU;
- Во фронтэнде (утилите stap) реализован новый режим "stap --example FOO.stp" для поиска примеров сркиптов, входящих в поставку SystemTap. Также переработана опция "stap --sysroot /PATH", которая теперь лучше подходит для окружений кросс-компиляции;
- Добавлен новый скрипт capture_ssl_master_secrets.stp с примером захвата SSL/TLS сессионных ключей gnutls и openssl для дешифрования трафика (перехватывает обработчики tls1_generate_master_secret и generate_normal_master в libssl.so и libgnutls.so).
|