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

Материал из Викиновостей, свободного источника новостей

11 октября 2012 года

Анонсирован релиз системы динамической трассировки 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-привилегий. Реализация в пространстве пользователя накладывает ряд ограничений, в частности, поддерживается только ограниченный набор контрольных вызовов (probes). Напомним, что начиная с ядра Linux 3.5 поддержка проверки приложений пространства пользователя с использованием SystemTap может осуществляться из коробки - все необходимые дополнения включены в состав ядра.

Для выбора бэкенда в утилиту 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-ы backtrace/unwind новых функций: stack/ustack, callers/ucallers, print_syms/print_usyms и sprint_syms/sprint_usyms;

Источники[править]

Creative Commons
Creative Commons
Эта статья содержит материалы из статьи «Релиз системы динамической отладки SystemTap 2.0», опубликованной OpenNET и распространяющейся на условиях лицензии Creative Commons Attribution (CC BY) — указание автора, источник и лицензию.
Эта статья загружена автоматически ботом NewsBots в архив и ещё не проверялась редакторами Викиновостей.
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.

Комментарии[править]

Викиновости и Wikimedia Foundation не несут ответственности за любые материалы и точки зрения, находящиеся на странице и в разделе комментариев.