Oracle, eBPF kullanarak Linux için DTrace'i yeniden tasarlamayı planlıyor

Oracle Şirketi rapor DTrace ile ilgili değişikliklerin yukarı akışa aktarılmasına yönelik çalışmalar hakkında ve DTrace dinamik hata ayıklama teknolojisini standart Linux çekirdek altyapısının üzerine, yani eBPF gibi alt sistemleri kullanarak uygulamayı planlıyor. Başlangıçta Linux'ta DTrace kullanmanın temel sorunu lisans düzeyindeki uyumsuzluktu ancak 2018'de Oracle yeniden lisans verildi GPLv2 kapsamında DTrace kodu.

DTrace zaten uzun zaman Oracle Linux dağıtımı için genişletilmiş çekirdeğin bir parçası olarak sunulur, ancak diğer dağıtımlarda kullanılması için ek çekirdek yamalarının kullanılmasını gerektirir, bu da bu teknolojinin kullanımını sınırlandırır. Örnek olarak Oracle tedarikli Fedora Linux'ta DTrace kurulumu ve kullanımına ilişkin ayrıntılı talimatlar. Kurulum için montaj gerekli aletler ve yeniden oluşturulmuş bir Linux çekirdeğinin kullanımı yamalar. Oracle ve Fedora yamalarıyla çekirdek oluşturmanın yürütülmesini otomatikleştirmek için önerilen senaryo.

eBPF, ağ işlem işleyicileri oluşturmanıza, sistem çalışmasını izlemenize, sistem çağrılarını engellemenize, erişimi kontrol etmenize, zaman işleyişiyle olayları işlemenize (perf_event_open), işlemlerin sıklığını ve yürütme süresini saymanıza, kprobes kullanarak izleme gerçekleştirmenize olanak tanıyan, Linux çekirdeğinde yerleşik bir bayt kodu yorumlayıcısıdır. /uprobes /tracepoints. JIT derlemesinin kullanımı sayesinde, bayt kodu anında makine talimatlarına çevrilir ve yerel kodun performansıyla yürütülür. DTrace, eBPF'nin üzerine uygulandığına benzer şekilde eBPF'nin üzerine de uygulanabilir. çalışma mevcut izleme araçları.

DTrace teknolojisi, Solaris işletim sistemi için sistem çekirdeğini ve son uygulamaları dinamik olarak izleme sorununu çözmek için geliştirildi ve kullanıcıya sistem davranışını ayrıntılı olarak izleme ve sorunları gerçek zamanlı olarak teşhis etme yeteneği kazandırdı. Hata ayıklama işlemi sırasında DTrace, incelenen uygulamaların çalışmasını etkilemez ve performanslarını hiçbir şekilde etkilemez, bu da çalışan sistemlerin analizini anında düzenlemenize olanak tanır. DTrace'in güçlü yönlerinden biri, AWK'ya benzer yüksek seviyeli D dilidir; burada izleme komut dosyaları oluşturmak, eBPF işleyicilerini C, Python ve Lua'da harici kütüphanelerle yazmak için sunulan araçları kullanmaktan çok daha kolaydır.

Oracle mühendisleri ayrıca GCC için bir eBPF arka ucu oluşturmak üzerinde çalışıyorlar ve bunları zaten yayınladılar. yama seti eBPF desteğini GCC'ye entegre etmek ve yaptı GNU binutils'te eBPF'yi destekleyecek kod dahil. Başlangıçta, eBPF desteğinin arka ucu LLVM teknolojilerine dayanmaktadır, ancak Oracle, hem Linux çekirdeğini oluşturmak hem de programlar oluşturmak için tek bir araç setinin kullanılmasına izin verecek, eBPF için programlar oluşturma konusunda standart bir yeteneğin GCC'de ortaya çıkmasıyla ilgileniyor eBPF için.

Bayt kodu oluşturma arka ucuna ek olarak, GCC için önerilen yamalar ayrıca eBPF için bir libgcc bağlantı noktası ve ELF dosyaları oluşturmaya yönelik araçlar içerir ve bu, çekirdek tarafından sağlanan yükleyiciler kullanılarak eBPF sanal makinesinde kod yürütülmesini mümkün kılar. Şimdilik, C dilindeki kod bayt koduna çevrilebilir (tüm dil özellikleri mevcut değildir), ancak gelecekte kullanılabilecek C dili yeteneklerinin genişletilmesi, diğer diller için destek eklenmesi, bir simülatör oluşturulması ve gelecekte kullanıma sunulması beklenmektedir. Çekirdeğe yükleme yapmadan eBPF programlarında hata ayıklamak için GCC desteği ekleyin.

Kaynak: opennet.ru

Yorum ekle