The OpenNET Project / Index page

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

Компания Oracle опубликовала DTrace 2.0.0-1.14 для Linux

11.04.2024 21:38

Представлен экспериментальный выпуск инструментария динамической отладки DTrace для Linux 2.0.0-1.14, реализованный в виде работающего в пространстве пользователя процесса, использующего подсистему eBPF и штатные механизмы трассировки, предоставляемых ядром Linux. По функциональности реализация DTrace на базе eBPF близка к первой реализации DTrace для Linux, выполненной в форме модуля ядра. Код проекта распространяется под лицензией GPLv2.

Инструментарий может использоваться со штатными ядрами Linux, поддерживающими BPF. Для работы требуется библиотека libctf с реализацией поддержки отладочного формата CTF (Compact Type Format), которая входит в состав пакета binutils, начиная с выпуска 2.40, или библиотека libdtrace-ctf, портированная из Solaris. Опционально предлагается два патча к ядру 6.7, позволяющих задействовать расширенные возможности для получения дополнительных данных о модулях и ядре.

Технология DTrace была разработана для решения задач по динамической трассировке ядра и конечных приложений в операционной системе Solaris. DTrace даёт пользователю возможность детально отслеживать поведение системы и в режиме реального времени производить диагностику проблем. В процессе отладки DTrace не влияет на работу исследуемых приложений и никак не отражается на их производительности, что позволяет организовать анализ работающих систем на лету. Из сильных сторон DTrace отмечается высокоуровневый язык D, похожий на AWK, на котором значительно проще создавать сценарии трассировки, чем при применении предлагаемых для eBPF средств написания обработчиков на языках C, Python и Lua с внешними библиотеками.

Основные возможности:

  • Доступные провайдеры:
    • cpc (CPU Performacne Counter) - получение информации о производительности.
    • dtrace - обработчики BEGIN, END и ERROR, запускаемые перед или после других проверок, а также при возникновении ошибок.
    • fbt (Function Boundary Tracing) - отслеживание обращений к функциям ядра.
    • lockstat - отслеживание состояния блокировок.
    • pid - отслеживание обращений к функциям в процессах, работающих в пространстве пользователя.
    • proc - отслеживание активности, связанной с процессами, такой как запуск и завершение работы (fork, exec, exit, fault).
    • profile - сохранение статистики о производительности через указанные промежутки времени.
    • sdt, rawtp - статическая трассировка ядра (SDT - Statically Defined Tracing).
    • usdt: статическая трассировка приложений (USDT - Userspace Statically Defined Tracing)
    • sched - отслеживание распределения ресурсов CPU.
    • sycall - отслеживание входа в системные вызовы и выхода из них.
  • Агрегирование собираемых данных: возможность применения агрегатных функций (avg, count, llquantize, lquantize, max, min, quantize, stddev и sum) и агрегатных действий (clear, normalize, normalize, printa). Поддержка сохранения результатов применения агрегатных функций в обычных и ассоциативных массивах.
  • Поддержка спекулятивной трассировки, позволяющей эфемерно отслеживать данные, решая какие из них следует фиксировать в буфере трассировки, а какие отбрасывать. Доступны функции: speculation, speculate, commit и discard.
  • Поддержка глобальных и локальных переменных, TLS (Thread-Local Storage), ассоциативных массивов и строк.
  • Предоставление встроенных переменных: arg0 - arg9, args[], caller, curcpu, curthread, epid, errno, execname, gid, id, pid, ppid, probefunc, probemod, probename, probeprov, stackdepth, tid, timestamp, ucaller, uid, uregs[], ustackdepth, walltimestamp.
  • Поддержка действий: exit, freopen, ftruncate, mod, printa, printf, raise, setopt, stack, sym, system, trace, tracemem, uaddr, umod, ustack и usym.
  • Наличие встроенных функций: alloca, basename, bcopy, copyin, copyinstr, copyinto, copyout, copyoutstr, dirname, getmajor, getminor, htonl, htonll, htons, index, inet_ntoa, lltostr, mutex_owned, mutex_owner, mutex_type_adaptive, mutex_type_spin, ntohl, ntohll, ntohs, progenyof, rand, rindex, rw_iswriter, rw_read_held, rw_write_held, strchr, strjoin, strlen, strrchr, strstr, strtok, substr.
  • Наличие счётчиков данных, не попадающих в буферы трассировки.
  • Поддержка компиляции сценариев трассировки на языке D в форму BPF-программ.
  • Предкомпиляция функций BPF для библиотечных вызовов.
  • Опция bpflog для получения лога верификации загружаемых программ BPF.
  • Динамическая генерация кода и предкомпиляция кода для повторного использования в BPF-программах.



Изменения в новой версии:

  • В провайдер pid, применяемый для отслеживания процессов в пространстве пользователя, добавлена поддержка отслеживания выполнения инструкций по их смещению в коде.
  • Добавлена поддержка использования функций stack() и ustack() для агрегирования собираемых данных.
  • Возможность удаления из ассоциативных массивов элементов любых типов через присвоение литерала 0.
  • Добавлено действие print для вывода структурированных данных с аннотациями типов.
  • Добавлены новые встроенные функции cleanpath(), d_path() и link_ntop().
  • Добавлен параметр "-xcpu", позволяющий привязать проверки к определённым CPU.
  • Добавлен параметр "-xlockmem" для ограничения размера памяти.
  • Обеспечена возможность сохранения данных трассировки процессов (USDT) между перезапусками dtprobed.
  • Поддержка механизма BTF (BPF Type Format), предоставляющего информацию для проверки типов в псевдокоде BPF.
  • Возможность использования скрипта configure для сборки.


  1. Главная ссылка к новости (https://www.reddit.com/r/linux...)
  2. OpenNews: Компания Oracle намерена переработать DTrace для Linux с использованием eBPF
  3. OpenNews: Для Linux представлена система динамической отладки BPFtrace (DTrace 2.0)
  4. OpenNews: Microsoft портировал DTrace для Windows
  5. OpenNews: Компания Oracle представила обновление DTrace для Linux
  6. OpenNews: Oracle перелицензировал код DTrace под GPLv2
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/60973-dtrace
Ключевые слова: dtrace, bpf, kernel, trace
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (49) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 21:46, 11/04/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Оракел прямо хорошо так подсел на линукс. Плотно так линуксовая компания.
     
     
  • 2.2, Аноним (2), 21:49, 11/04/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    да и на java они тоже плотно подсели
     
     
  • 3.7, Аноним (7), 23:23, 11/04/2024 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Пусть только с Солярки окончательно слезают.
     
  • 3.12, Аноним (1), 01:32, 12/04/2024 [^] [^^] [^^^] [ответить]  
  • –3 +/
    >да и на java они тоже плотно подсели

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

     
     
  • 4.15, test (??), 06:19, 12/04/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Ранешь вся обвязка вокруг их БД была на жаве, в принципе они ее по этому и купили. Как сейчас хз.
     
     
  • 5.24, Аноним (1), 10:48, 12/04/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >Ранешь вся обвязка вокруг их БД была на жаве

    Эта обвязка не более чем бантик сбоку к ядру БД, которая, собственно, тонны нефти и cтоит. Санки оракел купил чтоб поглубже тырпрайзу ввести. До этого те сидели только на его БД, а тут еще ОС, сервисы бизнес логики (та самая жава), и еще и железо (спарки).

     
     
  • 6.48, Аноним (48), 03:55, 13/04/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Oracle купил Sun чтобы ометь у себя полный стек для своей СУБД ибо в те времена их СУБД в основном крутили на спарках под солярисом. Java в обвязках СУБД уже давно
     
  • 3.42, Данные в так называемом поле Name (?), 14:53, 12/04/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Пытаются на плаву держать жабку-то, но поздно спохватились. По всем фронтам щимят язык, только legacy-код останется на жабке скоро похоже
     
     
  • 4.46, Аноним (46), 20:20, 12/04/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Птица-феникс GnuCOBOL?
     
  • 4.52, Аноним (52), 17:34, 13/04/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Что б вы понимали: Оракл купил Сан за 7млр долларов, а через 6 лет купил netsuite где всё на жаве написано за 9млр долларов.
     
  • 2.9, Аноним (9), 00:35, 12/04/2024 [^] [^^] [^^^] [ответить]  
  • +/
    почти как MS
     
     
  • 3.25, Аноним (46), 10:52, 12/04/2024 [^] [^^] [^^^] [ответить]  
  • +/
    MS ещё не плотно, только пока внутри WSL2.
     
     
  • 4.39, Аноним (-), 14:29, 12/04/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > MS ещё не плотно, только пока внутри WSL2.

    И еще 70% кастомеров у абажура. Вот захочешь - не пошлешь, вредно уж очень для бизнеса получается.

     
  • 2.38, Аноним (-), 14:28, 12/04/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Оракел прямо хорошо так подсел на линукс. Плотно так линуксовая компания.

    А что им еще делать было? Соляру в 1 морду тянуть? По моему всем очевидно что конкуренцию линю оно проиграло.

     
     
  • 3.47, Аноним (1), 20:35, 12/04/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >Соляру в 1 морду тянуть

    Хватило бы за глаза тянуть солярку в одну харю теми силами и ресурсами, которые они в линукс вкладывают. Но решили их вложить именно в линукс. Акула проприетарщины является одним из флагманов опенсорса.

     
     
  • 4.49, Аноним (48), 04:02, 13/04/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Линукс в основном тянет всё сообщество, а у солярки его нет. Когда-то у Solaris были уникальные киллер фичи вроде ZFS и контейнеры, но со временем всё это появилось и в линуксе .. а ZFS так и вовсе оказался ненужным. В остальном Solaris убогий, весь юзер спейс по своей кривости и неудобству остался с 90-х. Не говоря уже о пытках взерачить тормознутую яву в десктоп и инфраструктурные CLI инструменты. Так что возьня с Solaris вскоре после покупки потеряла весь смысл.
     
     
  • 5.50, Аноним (1), 09:29, 13/04/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >Линукс в основном тянет всё сообщество, а у солярки его нет

    И кто же такие это самое сообчество? Если копнуть, оказывается там считанные несколько, один из которых оракел.

    >Когда-то у Solaris были уникальные киллер фичи вроде ZFS и контейнеры, но со временем всё это появилось и в линуксе

    Не появилось, а то что повилось, выглядит и работает как дерьмо. Это и про контейнеры, и про zol

     
  • 5.51, Аноним (1), 09:31, 13/04/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > инфраструктурные CLI

    В солярисе превосходны, в последней. Линуксу до этого далеко

     

  • 1.3, Аноним (3), 22:02, 11/04/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • –4 +/
    >и никак не отражается на их производительности

    полная брехня, в этой вселенной это физически невозможно

     
     
  • 2.4, Минона (ok), 22:06, 11/04/2024 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Соляра в другой вселенной.
     
  • 2.8, Аноним (9), 00:33, 12/04/2024 [^] [^^] [^^^] [ответить]  
  • +/
    в старом DTrace, который на Солярке, оверхед был минимальный, благодаря зондам глубоко сидевшим в ядре
     
  • 2.10, Аноним (10), 00:40, 12/04/2024 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Ты ещё скажи, что нестрипнутые бинарники да ещё и с debug_info работают медленнее стрипнутых
     
     
  • 3.11, Аноним (11), 01:04, 12/04/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Ты ещё скажи, что нестрипнутые бинарники да ещё и с debug_info работают
    > медленнее стрипнутых

    а что не так?

     
     
  • 4.19, Аноним (19), 09:04, 12/04/2024 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Просто это и без главного помощника капитана очевидность понятно.
     
  • 4.32, Аноним (32), 12:08, 12/04/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Нет, не так. Можешь даже сам проверить на простом приложении сгенерировать asm код и убедиться, что все смещения такие же как и в стрипнутых. Места больше занимает - да, но на производительности не сказывается вообще никак. При выполнении инструкций из бинаря с debug_info, эти символы не только игнорируется, они вообще не замечаются, потому что все смещения адресов их просто игнорирует, будто этих символов там и нет вовсе
     
     
  • 5.34, Аноним (11), 12:39, 12/04/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Нет, не так. Можешь даже сам проверить на простом приложении сгенерировать asm
    > код и убедиться, что все смещения такие же как и в
    > стрипнутых. Места больше занимает - да, но на производительности не сказывается
    > вообще никак. При выполнении инструкций из бинаря с debug_info, эти символы
    > не только игнорируется, они вообще не замечаются, потому что все смещения
    > адресов их просто игнорирует, будто этих символов там и нет вовсе

    а про запуск чё скажешь, быстрее/медленнее?


     
     
  • 6.35, Аноним (32), 12:57, 12/04/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Ну очевидно, что в память придется загружать больший объем кода. Но опять же - прыгать по инструкция будет так же как и в стрипнутых, просто будет перепрыгивать дебаг символы. Поэтому я вполне верю, что DTrace на производительности не сказывается никак.
     
     
  • 7.36, Аноним (11), 13:33, 12/04/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Ну очевидно, что в память придется загружать больший объем кода.

    очевидно. как и что система, загружая программы по случайному адресу, потребует от лоадера итерации и обновления всех символов, чтобы отразить адрес в памяти. Но ты почему-то решил об этом умолчать. Или не в курсе?

    > Но опять же - прыгать по инструкция будет так же как и в стрипнутых

    мы же не говорим об хелловротах. Большие программы с тучей библиотек, запускающие много всякого выигрывают на 1) disk usage 2) ram 3) cpu preload time.

    > Поэтому я вполне верю, что DTrace на производительности не сказывается никак.

    ты главное верь. по факту, ты решил тролльнуть умно, но обо ssr ался.
    Нуби, ты?


     
  • 2.14, Аноним (14), 05:48, 12/04/2024 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Легко, т.к. в солярке заложено в ядро, то оверхед включен всегда, даже когда отладки нет. Поэтому разницы никакой что с отладкой что без )
     

  • 1.16, Аноним (16), 08:27, 12/04/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Интересно, что используют язык программирования D. Вроде как все пишут, что язык хороший, но почему то заброшенный корпорациями.
     
     
  • 2.17, Nv (?), 08:52, 12/04/2024 [^] [^^] [^^^] [ответить]  
  • +/
    С чего ли язык D заброшен ? Это тебе мамка сказала когда борщ варила ? Или дядя из Яндекс дзен который сам крысит этот язык совместно с другими евнарями?

    Тебе ничего не говорит когда название пакета заканчивается на D , и директории .d ?

     
     
  • 3.20, Аноним (19), 09:06, 12/04/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Всё демоны написаны на Ди?
     
  • 3.21, 1 (??), 09:11, 12/04/2024 [^] [^^] [^^^] [ответить]  
  • +/
    systemd написан на D ? O_o
     
     
  • 4.26, Аноним (46), 10:58, 12/04/2024 [^] [^^] [^^^] [ответить]  
  • +/
    А что, это мысль! Подскажите Лёньке, что systemd надо переписывать на D.
     
     
  • 5.31, YetAnotherOnanym (ok), 11:42, 12/04/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Лёнька ничего переписать не способен. Он способен только накарябать левой ногой некую похабщину, которую потом нормальным людям приходится доводить до ума. Так было и с авахи, и с пульсой, и с системд.
     
  • 5.45, 1 (??), 17:42, 12/04/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Он теперь в MS ... Так что на C# и .Net
     
  • 3.22, Аноним (14), 10:00, 12/04/2024 [^] [^^] [^^^] [ответить]  
  • +/
    не знал что librecad и freecad написаны на D
     
     
  • 4.28, Аноним (46), 11:01, 12/04/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Ну если PythonCAD начнёт уж сильно тормозить, то можно и на D переписать.
     
  • 3.30, Аноним (30), 11:28, 12/04/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Нука отчетик о развитии компилятора D в студию и со сравнениями производительности с GCC
     
     
  • 4.40, Аноним (-), 14:31, 12/04/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Нука отчетик о развитии компилятора D в студию и со сравнениями производительности с GCC

    Так то в gcc есть и gdc - компилер языка D, внезапно :)

     
  • 2.18, eugener (ok), 08:53, 12/04/2024 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Мне думается, что это не тот D, а какой-то другой специфический для DTrace.
     
     
  • 3.23, ce (??), 10:43, 12/04/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Если зайти в тесты и посмотреть код в демо, то вроде как вполне седе тот D
     
     
  • 4.33, Аноним (33), 12:09, 12/04/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Другой-другой этот D.
     
     
  • 5.41, ch (??), 14:36, 12/04/2024 [^] [^^] [^^^] [ответить]  
  • +/
    хорошо, я честно не работал с кодом на D
     
  • 2.29, Аноним (-), 11:12, 12/04/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Там другой D. Сказано же - похожий на AWK.
     

  • 1.27, Аноним (27), 11:00, 12/04/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    вообще, новость звучит как " для Linux 2.0.0-1.14 компания Oracle опубликовала DTrace"
     
  • 1.37, Аноним12345 (?), 14:00, 12/04/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    strace зачем ?
     
     
  • 2.43, Аноним (32), 15:08, 12/04/2024 [^] [^^] [^^^] [ответить]  
  • +/
    а что strace?
     
     
  • 3.44, Аноним (11), 16:08, 12/04/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > а что strace?

    а что, нет?

     

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



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

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