Компанията 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, подобно на начините, по които съществуват работят съществуващите инструменти за трасировка.

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

Инженерите от Oracle също работят над създаването на eBPF-бекенд за GCC и вече са публикували набор от пачове за интеграцията на поддръжка на eBPF в GCC и успели да включат код за поддръжка на eBPF в GNU binutils. Първоначално бекендът за поддръжка на eBPF се базира на технологии LLVM, но компанията Oracle се интересува от внедряване на стандартна функционалност за генериране на програми за eBPF в GCC, което ще позволи използването на един инструментариум както за компилиране на ядрото на Linux, така и за компилиране на програми за eBPF.

Освен бекенд за генериране на байткод, предложените за GCC пачове също включват порт на libgcc за eBPF и средства за формиране на ELF файлове, които дават възможност за изпълнение на код в виртуалната машина eBPF с използването на предоставените от ядрото заредители. В байткода засега може да се трансформира код на езика C (не всички възможности на езика са налични), но в бъдеще се очаква разширение на наличните за приложение функции на езика C, добавяне на поддръжка за други езици, създаване на симулатор и добавяне на поддръжка на GCC за отстраняване на грешки в eBPF програми без зареждане в ядрото.

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

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster