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

5 мая 2014 года

Wikinews-logo-ru.svg

Увидел свет релиз системы динамической трассировки 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" для быстрого выполнения фрагмента скрипта и выхода.
 

ИсточникиПравить


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

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