После почти года разработки увидел свет (https://lkml.org/lkml/2017/2/17/564) релиз системы динамической трассировки SystemTap 3.1 (http://sourceware.org/systemtap/), предоставляющий для платформы Linux средства похожие на технологию DTrace. SystemTap позволяет организовать доскональное наблюдение за работающей Linux системой, производить сбор статистики о работе приложений, профилирование и контроль системных вызовов. Управление производится через интерфейс командной строки и специальный Си-подобный язык сценариев (http://sourceware.org/systemtap/documentation.html). Система протестирована с ядрами Linux начиная с версии 2.6.18 и заканчивая 4.10-rc8. В развитии проекта участвуют такие компании как Red Hat, IBM, Intel, Hitachi и Oracle. В каталоге примеров (http://sourceware.org/systemtap/examples/keyword-index.html) представлено 163 скрипта на все случаи жизни, подходящие для слежения за распределением памяти, вводом/выводом, дисковыми операциями, сетевым трафиком (например, анализ работы NFS), работой планировщика задач, обработкой прерываний, использованием системных буферов, установкой блокировок, выполнением системных вызовов, обработкой сигналов и т.п.
Новая версия примечательна добавлением средств для осуществления контрольных проверок для функций в скриптах на языке Python. Для отслеживания работы Python-скриптов предлагается специальный вспомогательный модуль, позволяющий прикреплять внешние SystemTap-обработчики к точкам входа и возврата из функций, а также к определённому номеру строки. Например, для получения информации об аргументах вызова функции "foo" во время выполнения скрипта "myscript" можно использовать следующую конструкцию: 'probe python2.module("myscript").function("foo"){ println($$parms)}'.
Кроме того упрощена трассировка приложений на языке Java - все параметры вызова Java-методов теперь преобразуются в строковые значения и обрабатываются в таком виде в обработчиках контрольных проверок (ранее поддерживалась лишь передача целочисленных параметров). Увеличена производительность контрольных проверок для ядра Linux. Произведено слияние тапсетов (tapsets)
Syscall и nd_syscall, что позволило унифицировать обработку проверок системных вызовов, независимо от использования отладочного формата DWARF (по умолчанию используются проверки на базе DWARF, но при отсутствии DWARF осуществляется откат на проверки без DWARF).
Добавлены новые примеры использования SystemTap: отслеживание продолжительности сеансов и трафика для всех сетевых сокетов заданного процесса; ведение лога работы сервера nfsd (IP клиента, тип операции и имя файла); сохранение сведений о начинке сетевых пакетов; отображение сведений о повторной отправке пакетов TCP; вывод гистограммы о задержках и времени выполнения задач; мониторинг корректности создания изолированных контейнеров через отслеживание заблокированных обращений к системным вызовам.
URL: https://lkml.org/lkml/2017/2/17/564
Новость: https://www.opennet.ru/opennews/art.shtml?num=46076