The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

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

11.10.2012 12:25

Анонсирован релиз системы динамической трассировки 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;


  1. Главная ссылка к новости (https://lkml.org/lkml/2012/10/...)
  2. OpenNews: Увидела свет система динамической трассировки SystemTap 1.8
  3. OpenNews: Релиз системы динамической отладки SystemTap 1.6
  4. OpenNews: Релиз системы динамической отладки SystemTap 1.2
  5. OpenNews: Анонсирован релиз системы динамической отладки SystemTap 1.0
  6. Использование systemtap для устранения уязвимости в реализации /proc/pid/mem
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/35053-systemtap
Ключевые слова: systemtap, tapset, debug, trace, linux, kernel
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (3) RSS
  • 1, Аноним (-), 18:37, 11/10/2012 [ответить]  
  • +/
    Как там интеграция с ванильным ядром? Патчи какие-нибудь еще требуются?
     
     
  • 2, Аноним (-), 18:39, 11/10/2012 [^] [^^] [^^^] [ответить]  
  • +1 +/
    А то вот такие заявления
    > Напомним, что начиная с ядра Linux 3.5 поддержка проверки приложений пространства пользователя с использованием SystemTap может осуществляться из коробки - все необходимые дополнения включены в состав ядра.

    делаются регулярно, а потом оказывается, что без хитрых патчей 90% фич недоступно.

     
  • 3, Мяут (ok), 21:26, 11/10/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Проблем с ванильным ядром особых никогда и не было. Иногда разве что тапсеты отваливаются, но как правило самая свежая версия SystemTap нормально работает с самым свежим ядром.
     
     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру