URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 88664
[ Назад ]

Исходное сообщение
"Релиз системы динамической отладки 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
Новость: http://www.opennet.ru/opennews/art.shtml?num=36111


Содержание

Сообщения в этом обсуждении
"Релиз системы динамической отладки SystemTap 2.1"
Отправлено Аноним , 14-Фев-13 17:19 
Вот знаете, что прикольно? Как же сильно СПО болеет NIH.

Сейчас, поясню, Шигорин.

Изначально это был DTrace, написанный для динамических ядер Solaris - системы, произросшей от AT&T SysV.

Что крестьяне - то и обезьяне: сказано-сделано, надо воспроизвесть у себе. Берем BSD-like монолит и лепим туда горбатого.

Ну и что вышло, в финале каторжных интеллектуальных трудов?


"Релиз системы динамической отладки SystemTap 2.1"
Отправлено бедный буратино , 14-Фев-13 17:32 
Как же сильно аноним болеет. Вкаждойбочкезатычизмом экспертного мнения.

"Релиз системы динамической отладки SystemTap 2.1"
Отправлено all_glory_to_the_hypnotoad , 14-Фев-13 17:55 
DTrace не СПО, балбес. И никак его нельзя засунуть в линуховое ядро. Ибо кроме лицензий на код есть ещё патенты на конкретную реализацию этой технологии.

"Релиз системы динамической отладки SystemTap 2.1"
Отправлено Xm8230 , 16-Фев-13 10:43 
>DTrace не СПО

Вполне себе СПО, но опубликованно под CDDL. CDDL с вирусом GPL несовместимо, потому и родилась SystemTap под †православной† GPL.


"Релиз системы динамической отладки SystemTap 2.1"
Отправлено кевин , 14-Фев-13 18:02 
так нагладно показывать собственную некомпетентость не умею даже я! 1:0 в твою пользу

"Релиз системы динамической отладки SystemTap 2.1"
Отправлено qux , 14-Фев-13 18:07 
> Изначально это был DTrace

Откуда инфа?


"Релиз системы динамической отладки SystemTap 2.1"
Отправлено umbr , 15-Фев-13 02:11 
Лицензия у DTrace: CDDL and proprietary

"Релиз системы динамической отладки SystemTap 2.1"
Отправлено qux , 14-Фев-13 18:07 
Кто знает в чем проблема (почему одни адреса, без символов)?
При первом запуске: WARNING: missing unwind/symbol data for module 'kernel'
В /proc/kallsyms и /boot/System.map-* символы есть. Systemtap криво собран?

# stap --all-modules /usr/share/doc/systemtap-client-2.0/examples/memory/hw_watch_sym.stp vm_swappiness -c "echo 50 > /proc/sys/vm/swappiness"
vm_swappiness value is accessed
0xffffffff81068e6f
0xffffffff8106956a (inexact)
0xffffffff81069a18 (inexact)
0xffffffff81068e40 (inexact)
0xffffffff812032d3 (inexact)
0xffffffff81203308 (inexact)
0xffffffff81194a9c (inexact)
0xffffffff81194de2 (inexact)
0xffffffff8163515e (inexact)
0xffffffff81639799 (inexact)


"Релиз системы динамической отладки SystemTap 2.1"
Отправлено ананим , 14-Фев-13 19:46 
Очевидно — нет символов.
http://sourceware.org/systemtap/SystemTap_Beginners_Guide/us...
Дебагинфо нужны.
Системмэп это не то.

"Релиз системы динамической отладки SystemTap 2.1"
Отправлено qux , 14-Фев-13 21:14 
Но для трейса при панике есть же. Пусть бы генерило подобный.
С -devel/-debuginfo попробую.

"Релиз системы динамической отладки SystemTap 2.1"
Отправлено qux , 15-Фев-13 14:39 
На kernel-debug с установленным devel то же самое. Тащить еще 300мб (пожатого) -debuginfo не впечатляет.
Странно это.

"Релиз системы динамической отладки SystemTap 2.1"
Отправлено Frank Ch. Eigler , 15-Фев-13 20:15 
Hi.  If the script is still not working for you, please send some information about your computer to systemtap@sourceware.org, we'll try to help.  On my Fedora17 machine, with systemtap 2.1, this works:

# stap --all-modules /usr/share/doc/systemtap-*/examples/memory/hw_watch_sym.stp vm_swappiness -c "echo 50 >/proc/sys/vm/swappiness"
vm_swappiness value is accessed
0xffffffff810673df : do_proc_dointvec_minmax_conv+0x2f/0x80 [kernel]
0xffffffff81067f9a : __do_proc_dointvec.isra.6+0x10a/0x360 [kernel]
0xffffffff81068448 : proc_dointvec_minmax+0x48/0x50 [kernel]
0xffffffff811fcbb3 : proc_sys_call_handler.isra.11+0xb3/0xd0 [kernel]
0xffffffff811fcbe8 : proc_sys_write+0x18/0x20 [kernel]
0xffffffff811900cc : vfs_write+0xac/0x180 [kernel]
0xffffffff811903fa : sys_write+0x4a/0x90 [kernel]
0xffffffff81626e69 : system_call_fastpath+0x16/0x1b [kernel]


"Релиз системы динамической отладки SystemTap 2.1"
Отправлено qux , 15-Фев-13 21:31 
Cool, thank you! But before that I'd like to ensure that your case shall be reachable without installing kernel-debuginfo package. Otherwise that's just my bad setup.

However I'm not sure in the latter because debuginfo isn't necessary for panic() traces, for example.

I'm using Fedora 17 x64 (RFRemix, but it shouldn't affect the subject topic).


"Релиз системы динамической отладки SystemTap 2.1"
Отправлено Stax , 15-Фев-13 21:44 
kernel-debug это совсем не то: это ядро, скомпилированное в отладочном режиме.
Вам нужны именно -debuginfo (если мы говорим про федору, то пакеты kernel-версия-debuginfo и kernel-debuginfo-common-x86_64-версия).

"Релиз системы динамической отладки SystemTap 2.1"
Отправлено qux , 15-Фев-13 22:09 
> kernel-debug это совсем не то: это ядро, скомпилированное в отладочном режиме.

Да, debug отличается доп. проверками, а debuginfo функциональность не затрагивает, это дополнительная информация к коду в пакете kernel(-debug) в данном случае. Это просто было всё, что можно, кроме собственно debuginfo (:

> Вам нужны именно -debuginfo

Тут уже писал, почему тогда трейсы при панике отображаются и без -debuginfo? Здесь ведь по идее такое же, строки исходников домешивать не надо (для чего могло бы быть нужно -debuginfo).


"Релиз системы динамической отладки SystemTap 2.1"
Отправлено ip1981 , 14-Фев-13 21:33 
Того гляди, додумаются до CTF и нарушения ABI [1] :-)

[1] http://wiki.illumos.org/display/illumos/GCC+Modifications


"Релиз системы динамической отладки SystemTap 2.1"
Отправлено mine , 14-Фев-13 21:58 
чем это лучше lttng

"Релиз системы динамической отладки SystemTap 2.1"
Отправлено Мяут , 14-Фев-13 22:32 
Он динамический (не надо рекомпилять ядро)

"Релиз системы динамической отладки SystemTap 2.1"
Отправлено ip1981 , 14-Фев-13 22:43 
http://www.sourceware.org/systemtap/wiki/SystemtapDtraceComp...

"Релиз системы динамической отладки SystemTap 2.1"
Отправлено анонимус , 15-Фев-13 03:17 
DTrace лучше

"Релиз системы динамической отладки SystemTap 2.1"
Отправлено Аноним , 15-Фев-13 11:24 
> DTrace лучше

DTrace тащетма для ядра другого типа разработан. Об чем первый аноним и сообщил. И, также, заметил, что, скорее всего, прикрутили эту шнягу "шоб було как у людей".