Superluminal adlı CPU profiler'ın Linux versiyonu, performans verilerini toplamak için eBPF'i yoğun olarak kullanıyor. eBPF, Linux çekirdeğinde özel programların güvenli bir şekilde çalıştırılmasını sağlayan güçlü bir sistemdir. Bu programlar, izleme noktaları (tracepoints), kprobes veya perf olayları gibi çeşitli çekirdek kancalarına bağlanabilir. Superluminal, bağlam anahtarları (context switches) ve örnekleme olayları gibi performans verilerini toplamak için eBPF'ten faydalanır.
Çekirdek alanındaki (kernelspace) eBPF programları ile kullanıcı alanındaki (userspace) kontrol programı (Superluminal) arasındaki veri alışverişi, eBPF "haritaları" (maps) aracılığıyla gerçekleşir. Bu haritalar, çekirdek ve kullanıcı alanı arasında bir köprü görevi gören paylaşılan bellek yapılarıdır. Superluminal, örnekleme sırasında yığın izlerini (stack backtraces) almak için ikili dosyalardaki .eh_frame verilerini kullanır. Bu veriler, BPF_MAP_TYPE_ARRAY_OF_MAPS tipinde bir eBPF haritasında saklanır. Bu harita, yüklenen her benzersiz ikili dosya için bir dış dizi girişi ve bu ikiliye ait gerçek geri sarma verilerini (unwind data) içeren bir iç dizi barındırır.
.eh_frame verileri, ikili dosyalardan çıkarılır, hız ve bellek verimliliği için optimize edilmiş dahili bir formata dönüştürülür ve ardından bpf_map_update_elem kullanıcı alanı fonksiyonu aracılığıyla eBPF'e yüklenir. Makale, bu sürecin başlangıçta verimli olduğu düşünülen kısımlarında bile beklenmedik performans sorunlarının ortaya çıkabileceğini ve bu sorunların eBPF harita-içi-harita güncellemelerini önemli ölçüde yavaşlattığını belirtiyor. Bu durum, Linux çekirdeğinde eBPF harita-içi-harita güncellemelerini çok daha hızlı hale getiren bir değişikliğe yol açan bir profil oluşturma oturumuyla keşfedilmiştir.
eBPF'in karmaşık yapılarla çalışırken ortaya çıkan performans darboğazlarının, çekirdek seviyesinde optimizasyonlarla giderilebileceğini gösteriyor.