Релиз системы динамической отладки SystemTap 2.0

Анонсирован релиз системы динамической трассировки SystemTap 2.0, предоставляющий для платформы Linux средства похожие на технологию DTrace. SystemTap позволяет организовать доскональное наблюдение за работающей Linux системой, производить сбор статистики о работе приложений, профилирование и контроль системных вызовов. Управление производится через интерфейс командной строки и специальный Си-подобный язык сценариев. Система протестирована с ядрами Linux начиная с версии 2.6.9 и заканчивая 3.6.

В развитии проекта участвуют такие компании как Red Hat, IBM, Intel, Hitachi и Oracle. В каталоге примеров представлено более 100 скриптов на все случаи жизни, подходящие для слежения за распределением памяти, вводом/выводом, дисковыми операциями, сетевым трафиком (например, анализ работы NFS), работой планировщика задач, обработкой прерываний, использованием системных буферов, установкой блокировок, выполнением системных вызовов, обработкой сигналов и т.п.

Основные улучшения версии 2.0:

  • Добавлен новый бэкенд dyninst, предоставляющий возможность анализа пользовательских процессов без необходимости загрузки специфичных модулей для ядра Linux и соответственно не требуя root-привилегий. Напомним, что начиная с ядра Linux 3.5 поддержка проверки приложений пространства пользователя с использованием SystemTap может осуществляться из коробки - все необходимые дополнения включены в состав ядра. Реализация в пространстве пользователя накладывает ряд ограничений на dyninst, в частности, поддерживается только ограниченный набор контрольных вызовов (probes).

    Для выбора бэкенда во фронтэнде stap добавлена опция "--runtime", позволяющая выбирать между использованием функциональности уровня ядра ("--runtime=kernel") и реализацией "dyninst" ("--runtime=dyninst"). Для разделения функциональности бэкндов kernel и dyninst реорганизовано размещение tapset-ов, которые теперь разделены на две директории: специфичные для ядра Linux tapset-ы сохранены в директории linux/, а независимые от ядра в директории dyninst/;

  • Улучшения в языке сценариев:
    • В препроцессор языка сценариев SystemTap добавлена подсистема для работы с макросами, определяемыми через конструкцию "@define". Использование макросов допустимо как в пользовательских скриптах, так и в stp-файлах, при этом действия макрос видим только внутри файла в котором он определён. Для создания глобальных макросов реализована возможность создания библиотек макросов, хранимых в файлах ".stpm".
    • Обеспечена возможность использования псевдонимов контрольных вызовов (probe alias) с указанием дополнительных суффиксов, которые передаются в целевой контрольный вызов, для которого был создан псевдоним. Например, псевдоним "probe foo = bar, baz { }" при обращении как "probe foo.subfoo.option("gronk") { }" приведёт к вызову bar.subfoo.option("gronk") и baz.subfoo.option("gronk"). Практический пример упрощения операций профилирования за счёт использования псевдонимов с суфиксами представлен в файле alias_suffixes.stp;
    • Добавлена поддержка условных переходов, позволяющих выбирать код для выполнения в зависимости от уровня привилегии;
    • Реализована операция склеивания разделённых строк, независимо от наличия разделяющих строки пробелов и комментариев. Например, строка "foo " /* comment */ "bar" будет воспринята как "foo bar";
  • Добавлены средства для диагностики крахов ядра, базирующиеся на использовании функции panic_notifier_list для вывода состояния во время краха;
  • Добавлен новый tapset "linux/panic.stp", задействующий функцию ядра panic();
  • В tapset linux/netfilter.stp добавлена поддержка ARP-пакетов;
  • В tapset-ы backtrace/unwind добавлена возможность произвольного доступа к отдельным элементам backtrace. Среди добавленных в tapset-ы новых функций: stack/ustack, callers/ucallers, print_syms/print_usyms и sprint_syms/sprint_usyms;


Источник:
http://www.opennet.ru/opennews/art.shtml?num=35053

<= Назад
Комментарии
]]> ipv6 ready Kiev LUGLinux4MeНостальгияЛичный сайт skeletora ]]>