The OpenNET Project / Index page

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



Индекс форумов
Составление сообщения

Исходное сообщение
"Релиз системы динамической отладки SystemTap 2.1"
Отправлено opennews, 14-Фев-13 17:19 
Представлен (https://lkml.org/lkml/2013/2/13/525) релиз системы динамической трассировки SystemTap 2.1 (http://sourceware.org/systemtap/), предоставляющий для платформы Linux средства похожие на технологию DTrace. SystemTap позволяет организовать доскональное наблюдение за работающей Linux системой, производить сбор статистики о работе приложений, профилирование и контроль системных вызовов. Управление производится через интерфейс командной строки и специальный Си-подобный язык сценариев (http://sourceware.org/systemtap/documentation.html). Система протестирована с ядрами Linux начиная с версии 2.6.9 и заканчивая 3.8-rc.

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

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

-  Изменения во фронтэнде (утилите stap):


-  Реализованы режимы редактирования файлов сценариев systemtap, работающие в стиле EMACS и VIM;
-  Транслятор теперь исключает дубликаты tapset-файлов, встречающиеся при наличии в системе нескольких наборов правил, что позволяет избежать конфликта при использовании нескольких установленных вариантов systemtap (например, поставляемого с системой и собранного вручную);
-  В транслятор добавлена поддержка опции "--suppress-time-limits" (работает в режиме гуру "-g"), при которой перестают действовать заданные в правилах ограничения, привязанные ко времени, что позволяет протестировать работу обработчика в любой момент времени, не дожидаясь нужного периода;

-  При выводе ошибок теперь упоминается дополнительная информация о характере проблемы,  которую можно получить через man-руководства  error::X и  warning::X (например, man warning::432);

-  Улучшения в языке сценариев:

-  Данные о событиях, доступных через подсистему ядра Perf ("perf events") теперь можно читать по требованию. Проверки состояния счётчика могут быть определены в форме counter("NAME"), например "probe perf.type(0).config(0).counter("NAME")";

-  Проверки через подсистему Perf могут быть прикреплены к определённым процессам при помощи параметра process("NAME"), например
"probe perf.type(0).config(0).process("NAME") { }";

-  В циклах foreach теперь может выполняться сортировка агрегированных массивов с использованием произвольной агрегатной функции, например "foreach ([x,y] in array @sum +) { println(@sum(array[x,y])) }";

-  Начальная реализация поддержки регулярных выражений, что позволяет выполнять такие сопоставления, как "if ("aqqqqqb" =~ "q*b") { ... }" или  "if ("abc" !~ "q*b") { ... }". Реализация построена с использованием инструментария re2c (http://sourceforge.net/projects/re2c/) и близка по возможностям и синтаксису к POSIX Extended Regular Expressions, используемому в glibc. Пока не реализованы возможности выделения частей  строк и субвыражений, не поддерживаются именованные классы символов ([:alpha:], [:digit:], &c и т.п.);

-  Улучшена работа бэкенда dyninst, предоставляющего возможность анализа пользовательских процессов без необходимости загрузки специфичных модулей для ядра Linux и, соответственно, не требующего root-привилегий. Обеспечена поддержка параллельной обработки при проверке многопоточных программ. Обеспечено продолжение проверки после выполнения исследуемым процессом вызова fork. Добавлена поддержка новых типов проверок, таких как таймеры, возвращаемые функциями параметры, привязки к началу/концу выполнения процесса/нити. Добавлена поддержка трассировки уже запущенного процесса через указание  опции "-x PID";

-  Добавлен тапсет choose_defined.stpm с реализацией макроса @choose_defined(). Объявлены устаревшими тапсеты  signal.send.return и signal.handle.return;

-  Новые примеры использования SystemTap:


-  Примеры трассировки переведены на использование ppfunc() вместо probefunc();
-  perf.stp  - использование perf.counter для доступа к параметрам производительности;
-  regex.stp  - проверка имён открываемых файлов в соответствии с регулярным выражением;
-  threadstacks.stp   - переопределяет используемые по умолчанию значения размера стека new-pthread;
-  mutex_contention.stp - анализ конкуренции mutex-ов в pthread;
-  ltrace.stp      - демонстрация ltrace на базе uprobes;
-  pingpong.stp, block.stp, eater.stp, lifegame.stp - набор демонстрационных игр.

URL: https://lkml.org/lkml/2013/2/13/525
Новость: https://www.opennet.ru/opennews/art.shtml?num=36111

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



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

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