Oracle Şirketi
DTrace zaten
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.
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.
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