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

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

DTrace вече дълго време се предлага в състава на разширеното ядро за дистрибуцията Oracle Linux, но за използването му в други дистрибуции изисква използването на допълнителни пачове за ядрото, което ограничава употребата на посочената технология. Като пример, компанията Oracle подготви предлага подробна инструкция за инсталиране и използване на DTrace в Fedora Linux. За инсталацията е необходима компилация инструментарий и приложение на ядрото на Linux, преизградено с п patch-ове. За автоматизация на извършването на компилацията на ядрото с пачовете на 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