Oracle възнамерява да преработи DTrace за Linux с помощта на eBPF

Компания 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 с помощта на осигурени от ядрото зареждащи устройства. Засега кодът на езика C може да бъде преведен в байткод (не всички езикови функции са налични), но в бъдеще се очаква да се разширят възможностите на езика C, налични за използване, да се добави поддръжка за други езици, да се създаде симулатор и добавете поддръжка на GCC за отстраняване на грешки в eBPF програми без зареждане в ядрото.

Източник: opennet.ru

Добавяне на нов коментар