The OpenNET Project / Index page

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

Увидела свет система динамической трассировки SystemTap 1.8

18.06.2012 14:04

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

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

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

  • Поддержка проверки приложений пространства пользователя из коробки начиная с выпуска ядра 3.5-rc, без необходимости использования модифицированного ядра Linux;
  • Поддержка контрольных вызовов (probes) для подсистемы netfilter. Набор сопутствующих инструментов представлен в tapset-е netfilter.stp;
  • Полная поддержка IPv6 в tapset-ах и сервере/клиенте компиляции скриптов;
  • В сервере компиляции сценариев (systemtap compile-server) обеспечена поддержка параллельной обработки одновременных соединений (управление через опцию "--max-threads");
  • Поддержка секций ".debug_types", определённых в отладочном формате DWARF4 (например, используется когда исполняемый файл или библиотека собраны свежими версиями GCC с опцией -gdwarf-4 или -fdebug-types-section);
  • Реализация конструкции @var(), которую можно использовать для доступа к переменным в глобальной области видимости. Например, указав @var("somevar@some/src/file.c") можно получить доступ к значению переменной somevar, определённой в файле "some/src/file.c".
  • Поддержка в stap возможности ограничения ресурсов (--rlimit-as=NUM, --rlimit-cpu=NUM, --rlimit-nproc=NUM, --rlimit-stack=NUM, --rlimit-fsize=NUM);
  • Тестирование работы в широком спектре версий ядра Linux, от 2.6.9 до 3.5-rc.
  • Добавлен новый tapset guru-delay.stp, позволяющий внедрять задержки в операции ядра. Обновлены tapset-ы: syscalls.stp (поддержка системных вызовов ядра 3.5-rc), dentry.stp, context-caller.stp, s390/registers.stp , inet_*.stp (расширено число доступных в непривилегированном режиме функций), inet_*.stp (поддержка IPv6);
  • Новые примеры использования SystemTap:
    • netfilter_drop.stp - отбрасывание заданных исходящих пакетов;
    • netfilter_summary.stp - показ TCP/IP трафика по адресу источника и назначения;
    • psig.stp - показ активных обработчиков сигналов для указанного процесса;
    • auditbt.stp - генерация обратной трассировки (backtraces) для пользовательсного процесса для заданных событий аудита;
    • nfsdtop.stp - вывод суммарных данных о выполняемых запросах в NFS;
    • pf3.stp - формирование профиля взаимодействия ядра и пользовательского процесса;
    • enospc.stp - создание в syslog записей при нехватке свободного места на дисковом разделе.


  1. Главная ссылка к новости (https://lkml.org/lkml/2012/6/1...)
  2. Использование systemtap для устранения уязвимости в реализации /proc/pid/mem
  3. Выявление нагружающих дисковую подсистему процессов в Linux
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/34125-systemtap
Ключевые слова: systemtap, tapset, debug, trace, linux, kernel
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (8) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (-), 14:37, 18/06/2012 [ответить]  
  • +/
    > Поддержка проверки приложений пространства пользователя из коробки начиная с выпуска ядра 3.5-rc, без необходимости использования модифицированного ядра Linux;

    Т.е. systemtap фактически уже принят в ядро?

     
     
  • 2.2, ананим (?), 14:52, 18/06/2012 [^] [^^] [^^^] [ответить]  
  • +/
    давно уже.
    достаточно установить дебагинфо в большинстве дистрибутивов или скомпилировать так:
    (KPROBES) - this can be enabled in 'Instrumentation Support -> Kprobes'."
    (RELAY) - this can be enabled in 'General setup -> Kernel->user space relay support (formerly relayfs)'."
    (DEBUG_FS) - this can be enabled in 'Kernel hacking -> Debug Filesystem'."
     
  • 2.3, Andrey Mitrofanov (?), 15:12, 18/06/2012 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >> Поддержка проверки приложений пространства пользователя из коробки начиная с выпуска ядра 3.5-rc, без необходимости использования модифицированного ядра Linux;
    > Т.е. systemtap фактически уже принят в ядро?

    У них в доке, вроде, написано, что для испоьзования нужна только debug-инфо от ядра. И работатет оно чуть не 2.6.9.

    Про 3.5-rc, я думаю они отдельно написали, потому как в 3.5 включили конкурента - uprobe - и, то ли нужно было отдельно указать, что оно, таки да, работает, то ли нужно было с таким ядром совместимость отдельно допиливать.

     
  • 2.4, Мяут (ok), 23:46, 18/06/2012 [^] [^^] [^^^] [ответить]  
  • +/
    SystemTap никогда ничего и не писал в ядро (хотя собирает и загружает модули ядра для трассировки). Его изначально таким спроектировали.
     
     
  • 3.7, ананим (?), 02:14, 19/06/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Не совсем верно.
    Во-первых нужен кпробе, во-вторых такие кпробе нужны для кучи подсистем, например для вайфая.
    Я выше написал минимум для запуска.
     

  • 1.5, alexgpg (?), 01:52, 19/06/2012 [ответить]  
  • +/
    А есть инфа по практическому использованию его для трассировки своих приложений?
     
     
  • 2.6, ананим (?), 02:12, 19/06/2012 [^] [^^] [^^^] [ответить]  
  • +/
    2 абзац, 2 предложение.
    Сложно, но вы всё же попробуйте дочитать. Там даже ссыдь есть.
     
     
  • 3.8, alexgpg (?), 08:56, 19/06/2012 [^] [^^] [^^^] [ответить]  
  • +/
    > 2 абзац, 2 предложение.
    > Сложно, но вы всё же попробуйте дочитать. Там даже ссыдь есть.

    В упор не вижу там, как встраивать датчики в свое приложение. Или как им мониторить/трассировать свое работающее приложение. Или отчета о стабильности это штуки. Это интересно.


     
     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



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

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