Nilalayon ng Oracle na muling idisenyo ang DTrace para sa Linux gamit ang eBPF

Oracle Company iniulat tungkol sa gawain sa paglilipat ng mga pagbabagong nauugnay sa DTrace sa upstream at planong ipatupad ang teknolohiya ng dynamic na pag-debug ng DTrace sa ibabaw ng karaniwang imprastraktura ng kernel ng Linux, katulad ng paggamit ng mga subsystem gaya ng eBPF. Sa una, ang pangunahing problema sa paggamit ng DTrace sa Linux ay hindi pagkakatugma sa antas ng lisensya, ngunit noong 2018 Oracle muling lisensyado DTrace code sa ilalim ng GPLv2.

DTrace na matagal na panahon ay inaalok bilang bahagi ng pinahabang kernel para sa Oracle Linux distribution, ngunit nangangailangan ng karagdagang mga kernel patch para magamit sa ibang mga distribution, na naglilimita sa paggamit ng teknolohiyang ito. Bilang halimbawa, Oracle pinaghandaan detalyadong tagubilin para sa pag-install at paggamit ng DTrace sa Fedora Linux. Kinakailangan ang pagpupulong para sa pag-install mga kasangkapan at gamit ang isang Linux kernel na itinayong muli mula sa mga patch. Upang i-automate ang pagpapatupad ng kernel assembly gamit ang Oracle at Fedora patch, ito ay iminungkahi iskrip.

Ang eBPF ay isang bytecode interpreter na binuo sa kernel ng Linux na nagbibigay-daan sa iyong lumikha ng mga humahawak ng operasyon ng network, subaybayan ang aktibidad ng system, maharang ang mga tawag sa system, kontrolin ang pag-access, iproseso ang mga kaganapan nang may pag-iingat ng tiyempo (perf_event_open), kalkulahin ang dalas at oras ng mga operasyon, magsagawa ng pagsubaybay gamit ang kprobes / uprobes / tracepoints. Salamat sa paggamit ng JIT compilation, ang bytecode ay isinalin sa mga tagubilin ng makina sa mabilisang at naisakatuparan sa pagganap ng native code. Maaaring ipatupad ang DTrace sa ibabaw ng eBPF, katulad ng kung paano ito nasa itaas ng eBPF Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ umiiral na mga tool sa pagsubaybay.

Ang teknolohiya ng DTrace ay binuo para sa operating system ng Solaris upang malutas ang mga problema ng dynamic na pagsubaybay sa kernel ng system at pagtatapos ng mga aplikasyon, na nagbibigay sa user ng kakayahang subaybayan ang pag-uugali ng system nang detalyado at mag-diagnose ng mga problema sa real time. Sa panahon ng pag-debug, ang DTrace ay hindi nakakaapekto sa pagpapatakbo ng mga pinag-aralan na application at hindi nakakaapekto sa kanilang pagganap sa anumang paraan, na nagbibigay-daan sa pag-aayos ng pagsusuri ng mga tumatakbong system sa mabilisang. Sa mga lakas ng DTrace, isang mataas na antas ng D na wika, katulad ng AWK, ang nabanggit, kung saan mas madaling magsulat ng mga trace script kaysa kapag gumagamit ng mga tool para sa pagsusulat ng mga humahawak na inaalok para sa eBPF sa C, Python at Lua na may mga panlabas na aklatan .

Ang mga inhinyero ng Oracle ay gumagawa din ng isang eBPF backend para sa GCC at nai-publish na set ng patch upang isama ang suporta sa eBPF sa GCC at nakamit kasama ang code upang suportahan ang eBPF sa GNU binutils. Sa una, ang backend para sa suporta sa eBPF ay batay sa mga teknolohiya ng LLVM, ngunit interesado ang Oracle sa hitsura sa GCC ng regular na kakayahang bumuo ng mga programa para sa eBPF, na magbibigay-daan sa paggamit ng isang toolkit para sa parehong pagbuo ng Linux kernel at pagbuo ng mga programa para sa eBPF.

Bilang karagdagan sa backend para sa pagbuo ng bytecode, ang mga patch na iminungkahi para sa GCC ay kinabibilangan din ng isang port ng libgcc para sa eBPF at mga tool para sa pagbuo ng mga ELF file, na ginagawang posible na magsagawa ng code sa eBPF virtual machine gamit ang mga kernel-provided loader. Sa ngayon, maaaring isalin ang C code sa bytecode (hindi lahat ng feature ng wika ay available), ngunit sa hinaharap ay inaasahang palawakin ang mga feature ng C language na magagamit para sa paggamit, magdagdag ng suporta para sa iba pang mga wika, lumikha ng simulator, at magdagdag ng suporta sa GCC para sa pag-debug ng mga programang eBPF nang hindi naglo-load sa kernel.

Pinagmulan: opennet.ru

Magdagdag ng komento