The OpenNET Project / Index page

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

Выпуск системы динамической отладки SystemTap 2.5

05.05.2014 14:22

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

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

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

  • Изменения во фронтэнде (утилите stap):
    • Поддержка работы на системах с UEFI SecureBoot с поддержанием ключей верификации силами размещённого в сети доверительного SystemTap-сервера;
    • Возможность выполнения контрольных проверок во время загрузки, благодаря подстановке проверочных модулей на раннем этапе загрузки (поддерживаются системы с dracut). Для выполнения проверок во время загрузки представлена команда onboot;
    • При выполнении DWARF-проверок обеспечена возможность использования '.callee[s]' для более точного исследования функций. Например, если конструкция process("myproc").function("foo").callee("bar") сработает только при вызове функции bar() из foo(), то process("myproc").function("foo").callees сработает для всех вызовов;
    • Новые опции для инспектирования содержимого установленных библиотек: "stap --dump-functions" выведет весь список функций и их аргументы, "stap --dump-probe-aliases" покажет все псевдонимы контрольных проверок для библиотеки;
    • Увеличена скорость и точность выполнения контрольных проверок выражений (process.statement) для развёрнутых (inline) функций;
    • Улучшены эвристические алгоритмы, используемые для поиска завершения пролога функции;
    • В случае недоступности debuginfo проверка функций в процессах теперь откатывается на использование символьных таблиц;
    • Увеличена точность и лаконичность сообщений об ошибках несоответствия типов;
    • При отсутствии указанных меток обеспечен вывод подсказок с уточнением наиболее вероятного варианта, например, при указании process("stap").mark("benchmart") предлагается использовать метку 'benchmark';
  • Улучшения в языке сценариев:
    • Поддержка условного выражения "%( guru_mode == 0 %)" или "%( guru_mode == 1 %)" для организации двойного использования скриптов;
    • Во встроенных функциях на Си можно использовать STAP_RETURN(value) вместо перехода "goto out" и назначения STAP_RETVALUE;
    • Функции [s]println() теперь могут быть вызваны без аргументов, что приведёт к выводу символа новой строки;
  • Новые примеры использования SystemTap:
    • python2.stp - пример тапсета для Python 2;
    • python3.stp - пример тапсета для Python 3;
    • pyexample.stp - использование python-тапсета для вывода обратных трассировок и значений переменных;
    • connect_stat.stp - вывод инициатора задачи при попытке установить соединение с определённым IP;
    • nfsd-recent.stp - отслеживание всех операций NFS-сервера и вывод списка клиентов, недавно выполнивших запросы;
    • procmod_watcher.stp - мониторинг всех вызовов fork(), exec(), exit(), init_module() и delete_module();
    • pstree.stp - вывод списка процессов в формате .DOT (для построения дерева в GraphVis);
    • rlimit_nofile.stp - слежение за процессами, в которых наблюдаются проблемы с выделением файловых дескрипторов;
    • 2048.stp - реализация игры 2048, выполняемая в пространстве ядра;
  • Добавлена поддержка обратной трассировки (backtracing) через задействование специального модуля;
  • Добавлен новый псевдоним проверки "oneshot" для быстрого выполнения фрагмента скрипта и выхода.


  1. Главная ссылка к новости (https://lkml.org/lkml/2014/4/3...)
  2. OpenNews: Релиз системы динамической отладки SystemTap 2.4
  3. OpenNews: Релиз системы динамической отладки SystemTap 2.1
  4. OpenNews: Релиз системы динамической отладки SystemTap 2.0
  5. OpenNews: Увидела свет система динамической трассировки SystemTap 1.8
  6. OpenNews: Релиз системы динамической отладки SystemTap 1.6
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/39701-systemtap
Ключевые слова: systemtap, trace, debug
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (14) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.2, Аноним (-), 14:37, 05/05/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    А ораклу это зачем поддерживать?
     
  • 1.8, Аноним (-), 15:13, 05/05/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Для разработчиков - очень нужный инструмент. У санок и оффтопика тоже есть подобный инструментарий.
     
     
  • 2.13, Аноним (-), 17:23, 05/05/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Ну вообщето сани этот сегмент и начали со своим Dtrace.
    Топик - это ответ лапчатых мировому империализьму ... :)

    PS: О - а в форточках то чего? Там разве есть что то на тему?!

     
     
  • 3.15, rob pike (?), 17:59, 05/05/2014 [^] [^^] [^^^] [ответить]  
  • +/
    На ответ больше тянет ktap, несмотря на молодость.
    Впрочем, в Linux как всегда - "вали валом, потом разберем".
    perf, DTrace (сразу два - DTrace4Linux и Оракловый), ktap, systemtap, LTTng - только даже скопом все вместе до санкового DTrace не дотягивающие.
     
     
  • 4.16, Аноним (-), 18:55, 05/05/2014 [^] [^^] [^^^] [ответить]  
  • +/
    > даже скопом все вместе до санкового DTrace не дотягивающие.

    Ну покажите мне DTrace-аналог 2048.stp, для начала.

     
     
  • 5.18, linux must _RIP__ (?), 20:36, 05/05/2014 [^] [^^] [^^^] [ответить]  
  • +/
    а нафига? код который systemtap генерит приходится выкинуть - проще самому писать на kprobes, jprobles, kretprobes. выходит примерно тот же объем кода..
     
  • 5.19, Мяут (ok), 20:40, 05/05/2014 [^] [^^] [^^^] [ответить]  
  • +/
    ЕМНИП, у них на каком-то из Sun Tech Days змейку показывали.

    Но вообще нужно понимать, что D в DTrace очень ограничен по возможностям - что в общем-то оправдано (язык довольно узкоспециализированный). SystemTap Language - это обертка на C, так что на нем можно писать все что угодно.

    P.S. Аналог выглядит так:
    #!/usr/sbin/dtrace -w
    BEGIN {
       system("firefox http://gabrielecirulli.github.io/2048/");
    }

    :)

     
  • 5.21, rob pike (?), 21:55, 05/05/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Как сказал один древний китайский поэт, больше шансов увидеть Quake на D, чем systemtap на продакшн-сервере.
    После осознания этого факта, спорить о функциональности даже неинтересно.
     
     
  • 6.22, Аноним (-), 04:17, 06/05/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Ну он там ещё что то про staging и соотв. ЫнжЫнЫринг чего то там говорил ... но - "по китайски - это плохо звучит, а на русский не переводится"(С), да :)
     
     
  • 7.24, rob pike (?), 06:39, 06/05/2014 [^] [^^] [^^^] [ответить]  
  • +/
    А это совсем другая песня.
    Средства для разработки и отладки - это, конечно, хорошо.
    Но вот когда можно совершенно спокойно иметь DTrace на всех боевых серверах - и быстро разобраться в проблеме, не тратя три дня на (часто - таки тщетные) попытки её воспроизведения на staging - это, знаете ли, переводит его на совершенно другой уровень.
    Но вы, разумеется, можете рассказать про сферическое покрытие тестами в вакууме и про нибывает и нинужна.
     
  • 4.20, umbr (ok), 21:11, 05/05/2014 [^] [^^] [^^^] [ответить]  
  • +/
    DTrace крут не сам по себе, а тем что у Солярки датчики для него во все щели понапиханы.
     
     
  • 5.25, rob pike (?), 06:40, 06/05/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Это, конечно, тоже, но и сам по себе тоже крут.
     

  • 1.12, Нанобот (ok), 17:15, 05/05/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    >2048.stp - реализация игры 2048, выполняемая в пространстве ядра

    когда будут angry birds и counter strike?

     
     
  • 2.23, Аноним (-), 04:19, 06/05/2014 [^] [^^] [^^^] [ответить]  
  • +/
    >>2048.stp - реализация игры 2048, выполняемая в пространстве ядра
    > когда будут angry birds и counter strike?

    Сразу после systemtap_D_ ... в очередь **** дети! :)

     

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



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

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