The OpenNET Project / Index page

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

Первый выпуск ktap, новой системы динамической трассировки для ядра Linux

22.05.2013 10:42

Представлен первый выпуск проекта ktap, в рамках которого развивается новая система динамической трассировки работы ядра Linux, предоставляющая собственный скриптовый язык для создания сценариев. Сценарии могут быть использованы как для автоматизации выявления узких мест, так и для изменения параметров работы ядра. При этом возможности не ограничиваются мелким тюнингом, скрипты ktap могут использоваться для изменения поведения систем ядра и даже для реализации дополнительной функциональности.

От существующих систем, таких как SystemTap и DTrace, ktap отличается иной архитектурой и другими принципами организации выполнения скриптов трассировки. Скрипты преобразуются в байткод, загружаемый и выполняемый уже работающим центральным модулем ktap, что не требует сборки и загрузки отдельных модулей ядра из расчёта отдельный модуль для каждого из сценариев трассировки. Байткод выполняется внутри специальной регистровой виртуальной машины ktapvm (подобный подход близок к DTrace и отличается от SystemTap, в котором используется транслятор). Байткод является универсальным и может быть использован без пересборки в ядрах на системах с различной архитектурой, т.е. скрипт может быть собран и проверен на ПК разработчика и потом выполнен на встраиваемом устройстве на базе другой процессорной архитектуры.

Синтаксис языка сценариев напоминает язык Си и отличается в основном методом объявления переменных (в ktap используются динамические переменные, без явного объявления), поддержкой вместо массивов табличных структур (хэши ключ/значение, позволяющие указывать t["key"] = 10), отсутствием необходимости завершения строки знаком ';'. Замедление работы ядра при активации ktap не превышает 10%, после интеграции JIT в виртуальную машину ktapvm паразитную нагрузку планируется свести к 3-5%.

Первый выпуск ktap пока доступен только для 32- и 64-разрядных систем x86. Среди поддерживаемых возможностей отмечается поддержка установки точек трассировки (tracepoints), анализ работы системных вызовов, использование контрольных проверок kprobes и kretprobes, отслеживание вызова обработчиков событий от таймера, оценка состояния стека. Для использования в скриптах поставляется встроенная библиотека функций для упрощения работы с различными низкоуровневыми механизмами трассировки.

Код проекта распространяется под лицензией GPL и оформлен в виде модуля для ядра Linux. Система может использоваться с ядрами начиная с версии 3.4 (ядро должно быть собрано с опциями CONFIG_EVENT_TRACING, CONFIG_PERF_EVENTS, CONFIG_KPROBES и CONFIG_KALLSYMS) и не требует применения дополнительный патчей для кода ядра.

Пример простой функции трассировки системных вызовов:


  function eventfun (e) {
        printf("%d %d\\t%s\\t%s", cpu(), pid(), execname(), e.tostring())
  }
  kdebug.probe("tp:syscalls", eventfun)

  kdebug.probe_end(function () {
         printf("probe end\\n")
  })




  1. Главная ссылка к новости (https://lkml.org/lkml/2013/5/2...)
  2. OpenNews: Релиз системы динамической отладки SystemTap 2.1
  3. OpenNews: Компания Oracle представила первый стабильный релиз DTrace для Linux
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/36991-trace
Ключевые слова: trace, ktap
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (39) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.3, Аноним (-), 11:35, 22/05/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +7 +/
    признавайтесь, кто тут шутил про питон в ядре?
     
     
  • 2.6, anonymous (??), 12:35, 22/05/2013 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Пока там только виртуальная машина, работающая с байткодом, а не полноценный интерпритатор.
     
  • 2.9, IMHO (?), 13:40, 22/05/2013 [^] [^^] [^^^] [ответить]  
  • +/
    python не слыхал, а вот про lua в ядре NetBSD слыхал
     
     
  • 3.12, lazyden (?), 14:45, 22/05/2013 [^] [^^] [^^^] [ответить]  
  • +5 +/
    Дык это и есть Lua, только с присобаченным GPL заголовком. Сравни https://github.com/ktap/ktap/blob/master/opcode.c с http://www.lua.org/source/5.1/lopcodes.c.html и найди 10 отличий :)
     
     
  • 4.22, Аноним (-), 15:24, 22/05/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Ого, прикольно, а почему в новости об этом ни слова?
     

  • 1.4, Аноним (-), 11:35, 22/05/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    Опять новый язык придумали. Могли же просто Lua/LuaJIT интергировать, как NetBSD.
     
     
  • 2.19, Аноним (-), 15:18, 22/05/2013 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Опять новый язык придумали.

    Потому что логично ОС писанную на си отлаживать с использованием си-подобного ЯП :)

     
     
  • 3.52, Аноним (-), 00:49, 23/05/2013 [^] [^^] [^^^] [ответить]  
  • –1 +/
    А почему не shell-подобного?
     
     
  • 4.54, Аноним (-), 00:52, 24/05/2013 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > А почему не shell-подобного?

    Наверное поттому что психов которые бы на этом рискнули написать ядро ОС пока не замечено...

     

  • 1.5, warham (?), 11:47, 22/05/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    >Замедление работы ядра при активации ktap не превышает 10%

    А как происходит активация? modprobe ktap?

     
     
  • 2.57, Aquarius (ok), 13:46, 24/05/2013 [^] [^^] [^^^] [ответить]  
  • +/
    сам спросил - сам ответил
     

  • 1.7, anonymous (??), 12:40, 22/05/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    >отсутствием необходимости завершения строки знаком ';'.

    Ну откуда в людях такая ненависть к этому символу, и почему всем так хочется нагрузить перенос смысловым значением, а не оставить просто элементом форматирования?

     
     
  • 2.8, Аноним (-), 13:01, 22/05/2013 [^] [^^] [^^^] [ответить]  
  • +3 +/
    просто парит их постоянно ставить
     
     
  • 3.21, Z (??), 15:22, 22/05/2013 [^] [^^] [^^^] [ответить]  
  • +7 +/
    Еще людей парит начинать предложение с большой буквы, ставить в конце точку и другие знаки препинания. В результате текст становится не читаемым, зато писать легко.
     
     
  • 4.25, Аноним (-), 15:45, 22/05/2013 [^] [^^] [^^^] [ответить]  
  • +6 +/
    > Еще людей парит начинать предложение с большой буквы, ставить в конце точку
    > и другие знаки препинания. В результате текст становится не читаемым, зато
    > писать легко.
    >не читаемым

    ну ты понел

     
  • 4.33, Аноним (-), 17:43, 22/05/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Еще людей парит начинать предложение с большой буквы, ставить в конце точку
    > и другие знаки препинания. В результате текст становится не читаемым, зато
    > писать легко.

    А правильно писать частицу "не" вас не парит?

     
     
  • 5.58, Aquarius (ok), 13:48, 24/05/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >> Еще людей парит начинать предложение с большой буквы, ставить в конце точку
    >> и другие знаки препинания. В результате текст становится не читаемым, зато
    >> писать легко.
    > А правильно писать частицу "не" вас не парит?

    это должно было быть приставкой

     
  • 4.45, arisu (ok), 21:12, 22/05/2013 [^] [^^] [^^^] [ответить]  
  • –6 +/
    заглавная буква в начале предложения действительно не нужна. если, конечно, хороший шрифт, и запятая визуально отличается от точки.

    впрочем, если кому-то без заглавных жизнь не мила, то это легко и автоматически правится элементарным скриптом, который почти никогда не ошибается. в отличие от правописания («не читаемым», ага) и знаков препинания.

     
     
  • 5.46, Аноним (-), 22:39, 22/05/2013 [^] [^^] [^^^] [ответить]  
  • –1 +/
    А
    еще
    можно
    вместо
    пробелов
    переводы
    строки
    использовать.

    Скрипт
    тоже
    элементарно
    пишется.

     
     
  • 6.48, arisu (ok), 22:42, 22/05/2013 [^] [^^] [^^^] [ответить]  
  • +/
    (пожимает плечами) можно. используй. разрешаю.
     
     
  • 7.49, Аноним (-), 23:30, 22/05/2013 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Спасибо!
     
  • 7.55, Аноним (-), 00:53, 24/05/2013 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > (пожимает плечами) можно. используй. разрешаю.

    хорошая
    однако
    идея
    надо
    будет
    взять
    на
    вооружение

     
  • 6.62, Аноним (-), 23:08, 01/06/2013 [^] [^^] [^^^] [ответить]  
  • +/
    А еЩе МоЖнО вОт ТаК!11
     

  • 1.11, Аноним (-), 14:45, 22/05/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А какие пробы использует systemtap? Те же (kprobes) или собственные?

    А то ведь одного языка мало, надо еще во все подсистемы ядра пробы насовать, чтобы он заработал.

     
     
  • 2.30, Мяут (ok), 17:09, 22/05/2013 [^] [^^] [^^^] [ответить]  
  • +/
    ftrace, но главное т.н. function boundary tracing - т.е. трассировка границ функции (как правило точки входа). Вокруг него построены алиасы (тапсеты)

    Вообще SystemTap умеет любую инструкцию/строчку кода

     
     
  • 3.38, Аноним (-), 17:56, 22/05/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Т.е. kprobes к systemtap не относятся?
     
     
  • 4.41, Мяут (ok), 18:36, 22/05/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Да не, вроде бы самостоятельная система, к которой умеет цепляться SystemTap
     

  • 1.43, Anonymus (?), 20:02, 22/05/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Скоро на этом будут писать кроссплатформенные драйвера для железяк.
     
     
  • 2.56, Аноним (-), 00:55, 24/05/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Скоро на этом будут писать кроссплатформенные драйвера для железяк.

    Драйвера в лине и так кроссплатформенные. В том плане что драйвер какого-нибудь 3G свистка на usb совершенно без проблем взлетит и на ARM или MIPS каком-нибудь. Вообще совсем без переделки, приколитесь? :)

     

  • 1.44, Аноним (-), 21:04, 22/05/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    кде баг. Символично
     
     
  • 2.47, Аноним (-), 22:41, 22/05/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Всегда говорил, что плазма падает из-за багов в ядре, а Аарон не виноватый :)
     
     
  • 3.63, Аноним (-), 23:09, 01/06/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Плазма не падает!
     

  • 1.50, Аноним (-), 23:46, 22/05/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Отличная новость, похоже всё-таки будет на Linux система, которую можно хотя бы и с оглядкой, но всё же использовать в production.
     
     
  • 2.53, Аноним (-), 17:24, 23/05/2013 [^] [^^] [^^^] [ответить]  
  • +/
    А Вы все еще вывариваете?
     
     
  • 3.60, Аноним (-), 01:04, 26/05/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Мы не готовы ронять продакшн.
    http://dtrace.org/blogs/brendan/2011/10/15/using-systemtap/
     
  • 3.64, Аноним (-), 23:10, 01/06/2013 [^] [^^] [^^^] [ответить]  
  • +/
    > А Вы все еще вывариваете?

    Он уже выварил свой череп до состояния анатомического препарата.

     

  • 1.51, sirGrey (?), 00:12, 23/05/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    А какие широкие возможности для руткитописателей.

    Теперь и на Lua!

    Про модель безопасности не слова в новости.

     
  • 1.59, Аноним (-), 23:49, 24/05/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Легкий пересказ design.txt проекта

    Неожиданно узнаем, что по экспертному мнению создателей сабжа православный SystemTap сливает рассово чуждому DTrace. Но DTrace, гадина такая, совсем не встраивается в Linux. В Solaris встраивается, во FreeBSD встраивается, а в Linux - ну никак. Ясное дело - бясовкая коприрастая на дух не переносит святаго GPL-нага коду. Зато более мощный язык сабжа (внезапно) легко может быть встроен в ядро. Чудеса.

     
     
  • 2.61, Аноним (-), 14:13, 26/05/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Врешь http://ru.wikipedia.org/wiki/Debian_GNU/kFreeBSD
     

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



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

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