The OpenNET Project / Index page

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

Компания Oracle намерена переработать DTrace для Linux с использованием eBPF

15.08.2019 10:40

Компания Oracle сообщила о работе по передаче связанных с DTrace изменений в upstream и планах по реализации технологии динамической отладки DTrace поверх штатной инфрастуруктуры ядра Linux, а именно с использованием таких подсистем, как eBPF. Изначально основной проблемой с использованием DTrace в Linux была несовместимость на уровне лицензий, но в 2018 году компания Oracle перелицензировала код DTrace под GPLv2.

DTrace уже длительное время предлагается в составе расширенного ядра для дистрибутива Oracle Linux, но для своего использования в других дистрибитувах требует применения дополнительных патчей для ядра, что ограничивает использование указанной технологии. В качестве примера, компания Oracle подготовила детальную инструкцию по установке и использованию DTrace в Fedora Linux. Для установки требуется сборка инструментария и применение ядра Linux, пересобранного с патчами. Для автоматизации выполнения сборки ядра с патчами Oracle и Fedora предложен скрипт.

eBPF представляет собой встроенный в ядро Linux интерпретатор байткода, позволяющий создавать обработчики сетевых операций, отслеживать работу систем, перехватывать системные вызовы, контролировать доступ, обрабатывать события с сохранением хронометража (perf_event_open), подсчитывать частоту и время выполнения операций, выполнять трассировку с использованием kprobes/uprobes/tracepoints. Благодаря применению JIT-компиляции, байткод на лету транслируется в машинные инструкции и выполняется с производительностью нативного кода. DTrace может быть реализован поверх eBPF, по аналогии с тем, как поверх eBPF работают существующие инструменты трассировки.

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

Инженеры из Oracle также работают над созданием eBPF-бэкенда для GCC и уже опубликовали набор патчей для интеграции поддержки eBPF в GCC и добились включения кода для поддержки eBPF в GNU binutils. Изначально бэкенд для поддержки eBPF основывается на технологиях LLVM, но компания Oracle заинтересована в появлении в GCC штатной возможности генерации программ для eBPF, что позволит использовать один инструментарий как для сборки ядра Linux, так и для сборки программ для eBPF.

Кроме бэкенда для генерации байткода предложенные для GCC патчи также включают порт libgcc для eBPF и средства для формирования ELF-файлов, дающие возможность выполнить код в виртуальной машине eBPF с использованием предоставляемых ядром загрузчиков. В байткод пока может транслироваться код на языке Си (не все возможности языка доступны), но в будущем ожидается расширение доступных для применения возможностей языка Си, добавление поддержки других языков, создание симулятора и добавление поддержки GCC для отладки eBPF-программ без загрузки в ядро.

  1. Главная ссылка к новости (https://blogs.oracle.com/linux...)
  2. OpenNews: Microsoft портировал DTrace для Windows
  3. OpenNews: Для Linux представлена система динамической отладки BPFtrace (DTrace 2.0)
  4. OpenNews: Компания Oracle представила обновление DTrace для Linux
  5. OpenNews: Oracle перелицензировал код DTrace под GPLv2
  6. OpenNews: Средства трассировки в ядре Linux достигли уровня DTrace
Лицензия: CC-BY
Тип: К сведению
Ключевые слова: oracle, dtrace, linux
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение (26) Ajax | 1 уровень | Линейный | Раскрыть всё | RSS
  • 1.1, Crazy Alex (ok), 10:49, 15/08/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • –4 +/
    Я, конечно, совершенно не в теме, но как нечто похожее на AWK может быть удобнее нормальных языков?
     
     
  • 2.2, Аноним (2), 10:59, 15/08/2019 [^] [^^] [^^^] [ответить]  
  • +17 +/
    Набросик так себе.
    Люди, могущие в AWK, повидали достаточно, чтобы отреагировать на подобные заявления снисходительно улыбкой.
     
     
  • 3.5, Аноним (5), 11:43, 15/08/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Ну я могу в awk, когда прижмёт. Но не представляю задачи, котору на нём было бы удобнее решать, чем на perl.
     
     
  • 4.7, Hewlett Packard (?), 12:32, 15/08/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Perl довольно многое взял из awk. Творчески переработав опыт поколений.
     
  • 4.12, KonstantinB (ok), 14:23, 15/08/2019 [^] [^^] [^^^] [ответить]  
  • +/
    это типа перл не похож на awk?
     
     
  • 5.14, Аноним (14), 15:36, 15/08/2019 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Это типа perl намного удобнее awk на практически всех задачах, для которых в принципе может сгодиться awk.
     
  • 4.19, Аноним (19), 17:40, 15/08/2019 [^] [^^] [^^^] [ответить]  
  • +4 +/
    >Но не представляю задачи, котору на нём было бы удобнее решать, чем на perl.

    Обработка таблиц без сложной логики - получается лаконичнее, чем на perl

     
  • 3.18, Crazy Alex (ok), 17:01, 15/08/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Да это даже не набросик. Ну, то есть можно и в машинных кодах писать, но оно ж чудовищно. Чем это может быть лучше, чем нормальная структурированная запись? Когда оно создавалось - это было логично, тогда каждый байт экономили. А сейчас, уж простите, я лучше явно напишу while(line = read(file){...} чем буду использовать заклинания из AWK. Так его хоть прочесть и поправить можно без расшифровки.
     
     
  • 4.20, Аноним (19), 17:41, 15/08/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Что в awk расшифровывать, он же прост как топор.
     
  • 4.24, Hewlett Packard (?), 23:31, 15/08/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Вопрос привычки. Через несколько сотен раз набирания "while(line = read(file)" захочется добавить макро, делающее "while (defined($_ = <file_E>))" из "while(<file_E>)", например. Ну так уже добавлено.

    Кому-то надоедает писать foreach i in L { sum += i }, и он начинает использовать foldr (+) L, а потом, может быть и +/L, ну а кому-то наверное и нет.

     
  • 2.4, Аноним (5), 11:41, 15/08/2019 [^] [^^] [^^^] [ответить]  
  • +/
    > нечто похожее на AWK

    Это ты про что?

     
     
  • 3.13, имя (?), 14:40, 15/08/2019 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Это он про D-as-in-DTrace-не-путать-с-D-который-(C++)++
     

  • 1.3, JL2001 (ok), 11:01, 15/08/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    //offtop
    eBPF - быстро, а jvm - медленно?
     
     
  • 2.6, Andrey Mitrofanov_N0 (??), 11:58, 15/08/2019 [^] [^^] [^^^] [ответить]  
  • +3 +/
    > //offtop
    > Oracle - быстро, а Oracle - медленно?

    ??

     
  • 2.16, Hewlett Packard (?), 15:54, 15/08/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Реализовать подсистему динамической трассировки ядра на JVM - это было бы ново, оригинально.
     
  • 2.23, Аноним84701 (ok), 20:02, 15/08/2019 [^] [^^] [^^^] [ответить]  
  • +3 +/
    > //offtop
    > eBPF - быстро, а jvm - медленно?

    Стековая виртуальная машина с поддержкой объектов-методов и еще целой кучи жирностей != регистровая VM для, по сути, обрезанного DSL.
    https://blogs.igalia.com/dpino/2019/01/07/introduction-to-xdp-and-ebpf/

     
  • 2.26, EnemyOfDemocracy (?), 21:51, 16/08/2019 [^] [^^] [^^^] [ответить]  
  • +/
    А чо Ораколь ещё не додумался жабу в ведро запустить? Всего-то модуль наклепать!
     

  • 1.8, Hewlett Packard (?), 12:37, 15/08/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Хорошая штука eBPF.

    > Ashish Bijlani of Georgia Tech presented at this week's Linux Foundation Open-Source Summit on the work they are pursuing for making user-space file-systems faster. The short explanation of what they are doing with this project called "ExtFUSE" is to provide an extension framework of a "thin" layer of handlers within the kernel that leverage the eBPF in-kernel virtual machine for speeding up some I/O operations.
    > By using these "thin" kernel extensions they are able to avoid some user-space context switching and handling some metadata caching within the kernel while still sticking to the concept of the file-system implementation in user-space.

     
     
  • 2.9, Andrey Mitrofanov_N0 (??), 12:42, 15/08/2019 [^] [^^] [^^^] [ответить]  
  • –2 +/
    > Хорошая штука eBPF.
    >>"thin" kernel extensions they are able to avoid some user-space context switching and handling some metadata caching within the kernel while still sticking

    Почти как MS-DOS [I].[/I]

     

  • 1.10, Аноним (10), 13:37, 15/08/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    Мне одному кажется концепция монолитного ядра и необходимость тащить всё в него - устаревшей и тупиковой?
     
     
  • 2.11, Andrey Mitrofanov_N0 (??), 13:48, 15/08/2019 [^] [^^] [^^^] [ответить]  
  • –2 +/
    > Мне одному кажется концепция монолитного ядра и необходимость тащить всё в него
    > - устаревшей и тупиковой?

    Не мешайте Землину-Торвальдсу таки делать свой гешефт [I] ! [/I]

     
  • 2.15, Hewlett Packard (?), 15:38, 15/08/2019 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Вынести из ядра подсистему динамической трассировки ядра - это было бы ново, оригинально.
     
  • 2.17, GentooBoy (ok), 16:16, 15/08/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Вам и Таненбауму
     
  • 2.21, КО (?), 18:05, 15/08/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Вы внимательно читаете новость?
    Всё уже идет к тому, что в ядре будет только jit компилятор, а все остальное будет загружаться динамически. :)
     
     
  • 3.25, Hewlett Packard (?), 05:47, 16/08/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Лучше всего если JIT будет прямо в CPU. Но так как JIT для всех языков туда не засунешь, будет для WebAsm.
     

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



    Спонсоры:
    Слёрм
    Inferno Solutions
    Hosting by Ihor
    Хостинг:

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