The OpenNET Project / Index page

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

14.02.2013 16:45  Релиз системы динамической отладки SystemTap 2.1

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

В развитии проекта участвуют такие компании как Red Hat, IBM, Intel, Hitachi и Oracle. В каталоге примеров представлено более 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 и близка по возможностям и синтаксису к 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 - набор демонстрационных игр.


  1. Главная ссылка к новости (https://lkml.org/lkml/2013/2/1...)
  2. OpenNews: Релиз системы динамической отладки SystemTap 2.0
  3. OpenNews: Увидела свет система динамической трассировки SystemTap 1.8
  4. OpenNews: Релиз системы динамической отладки SystemTap 1.6
  5. OpenNews: Релиз системы динамической отладки SystemTap 1.2
  6. OpenNews: Анонсирован релиз системы динамической отладки SystemTap 1.0
Лицензия: CC-BY
Тип: Программы
Ключевые слова: systemtap, dtrace, trace, debug
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение Ajax/Линейный | Раскрыть все сообщения | RSS
 
  • 1.1, Аноним (-), 17:19, 14/02/2013 [ответить] [показать ветку] [···]     [к модератору]
  • –5 +/
    Вот знаете, что прикольно Как же сильно СПО болеет NIH Сейчас, поясню, Шигори... весь текст скрыт [показать]
     
     
  • 2.2, бедный буратино (ok), 17:32, 14/02/2013 [^] [ответить]    [к модератору]  
  • +3 +/
    Как же сильно аноним болеет. Вкаждойбочкезатычизмом экспертного мнения.
     
  • 2.3, all_glory_to_the_hypnotoad (ok), 17:55, 14/02/2013 [^] [ответить]    [к модератору]  
  • +2 +/
    DTrace не СПО, балбес. И никак его нельзя засунуть в линуховое ядро. Ибо кроме лицензий на код есть ещё патенты на конкретную реализацию этой технологии.
     
     
  • 3.22, Xm8230 (?), 10:43, 16/02/2013 [^] [ответить]    [к модератору]  
  • +/
    >DTrace не СПО

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

     
  • 2.4, кевин (?), 18:02, 14/02/2013 [^] [ответить]    [к модератору]  
  • +5 +/
    так нагладно показывать собственную некомпетентость не умею даже я! 1:0 в твою пользу
     
  • 2.6, qux (ok), 18:07, 14/02/2013 [^] [ответить]    [к модератору]  
  • +/
    > Изначально это был DTrace

    Откуда инфа?

     
  • 2.13, umbr (ok), 02:11, 15/02/2013 [^] [ответить]    [к модератору]  
  • +/
    Лицензия у DTrace: CDDL and proprietary
     
  • 1.5, qux (ok), 18:07, 14/02/2013 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    Кто знает в чем проблема (почему одни адреса, без символов)?
    При первом запуске: WARNING: missing unwind/symbol data for module 'kernel'
    В /proc/kallsyms и /boot/System.map-* символы есть. Systemtap криво собран?

    [CODE]# 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)[/CODE]

     
     
  • 2.7, ананим (?), 19:46, 14/02/2013 [^] [ответить]    [к модератору]  
  • +/
    Очевидно — нет символов.
    http://sourceware.org/systemtap/SystemTap_Beginners_Guide/using-systemtap.htm
    Дебагинфо нужны.
    Системмэп это не то.
     
     
  • 3.8, qux (ok), 21:14, 14/02/2013 [^] [ответить]    [к модератору]  
  • +/
    Но для трейса при панике есть же. Пусть бы генерило подобный.
    С -devel/-debuginfo попробую.
     
     
  • 4.17, qux (ok), 14:39, 15/02/2013 [^] [ответить]    [к модератору]  
  • +/
    На kernel-debug с установленным devel то же самое. Тащить еще 300мб (пожатого) -debuginfo не впечатляет.
    Странно это.
     
     
  • 5.18, Frank Ch. Eigler (?), 20:15, 15/02/2013 [^] [ответить]    [к модератору]  
  • +/
    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]

     
     
  • 6.19, qux (ok), 21:31, 15/02/2013 [^] [ответить]    [к модератору]  
  • +/
    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).

     
  • 5.20, Stax (ok), 21:44, 15/02/2013 [^] [ответить]    [к модератору]  
  • +/
    kernel-debug это совсем не то: это ядро, скомпилированное в отладочном режиме.
    Вам нужны именно -debuginfo (если мы говорим про федору, то пакеты kernel-версия-debuginfo и kernel-debuginfo-common-x86_64-версия).
     
     
  • 6.21, qux (ok), 22:09, 15/02/2013 [^] [ответить]    [к модератору]  
  • +/
    > kernel-debug это совсем не то: это ядро, скомпилированное в отладочном режиме.

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

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

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

     
  • 3.9, ip1981 (ok), 21:33, 14/02/2013 [^] [ответить]    [к модератору]  
  • +/
    Того гляди, додумаются до CTF и нарушения ABI [1] :-)

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

     
  • 1.10, mine (ok), 21:58, 14/02/2013 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    чем это лучше lttng
     
     
  • 2.11, Мяут (ok), 22:32, 14/02/2013 [^] [ответить]    [к модератору]  
  • +/
    Он динамический (не надо рекомпилять ядро)
     
  • 2.12, ip1981 (ok), 22:43, 14/02/2013 [^] [ответить]    [к модератору]  
  • +/
    http://www.sourceware.org/systemtap/wiki/SystemtapDtraceComparison
     
  • 1.14, анонимус (??), 03:17, 15/02/2013 [ответить] [показать ветку] [···]    [к модератору]  
  • +1 +/
    DTrace лучше
     
     
  • 2.16, Аноним (-), 11:24, 15/02/2013 [^] [ответить]    [к модератору]  
  • +/
    > DTrace лучше

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

     

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


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