Brendan'ın sitesi: Başlarken
- Brendan Gregg'in blog ana sayfası; sistem performansı, BPF araçları, Linux performansı gibi çeşitli konuları ele alıyor.
- Son yazılar arasında frame pointer'ların geri dönüşü, eBPF belgeseli ve eBPF gözlemlenebilirlik araçlarının güvenlik aracı olmadığı gibi başlıklar yer alıyor.
- Blog, teknik içeriklerin yanı sıra Brendan'ın katıldığı çeşitli konferans ve sunumları da paylaşıyor.
Frame Pointer'ların Geri Dönüşü
- Frame pointer olmayan sistemlerde stack trace, libc katmanında durur ve uygulama frame'leri eksik kalır.
- Fedora ve Ubuntu, varsayılan olarak frame pointer içerecek şekilde derlenmiş libc sürümleri yayımlayarak bu sorunu çözdü.
- Frame pointer'lar harici profiler ve debugger'lar tarafından kullanılır ve flame graph'larla görselleştirilir.
Frame Pointer Nedir?
- x86-64 ABI belgesine göre CPU register'ı
%rbp, stack frame'in "base pointer"ı olarak kullanılabilir.
- Bu teknik stack trace için yaygın olarak kullanılır ve Linux perf ile eBPF tarafından da kullanılır.
2004: Frame Pointer'ın Kaldırılması
- 2004'te gcc geliştiricisi Roger Sayle, frame pointer üretimini durduran bir değişikliği hayata geçirdi.
- Bu değişiklik performans artışı sağladı; ancak eBPF'nin ortaya çıkmasıyla bugün bazı debugger/profiler'lar bu yüzden sorun yaşıyor.
2005-2023: Bozuk Profiler'ların Kışı
- Frame pointer kaldırma değişikliği x86-64'e de uygulandı, ancak bu mimari daha fazla register'a sahip olduğundan büyük bir kazanç sağlamadı.
- Bunun sonucunda birçok debugger/profiler düzgün çalışamaz hale geldi.
2014: Java in Flames
- Netflix'e katıldığında, Java'da frame pointer desteğinin olmamasının tüm uygulama stack'lerini bozduğunu fark etti.
- Bu sorunu çözmek için JVM c2 derleyicisine yönelik bir düzeltme geliştirdi.
2015-2020: Overhead
- Her şeye frame pointer eklemenin performans overhead'i genellikle %1'in altındadır.
- Bazı microbenchmark'larda overhead %10'a kadar çıkabilir.
2022: Upstream Girişimi
- Google, Meta, Netflix gibi büyük şirketlerin frame pointer'ı her yerde zaten etkinleştirdiğine işaret ediliyor.
- Bu değişikliği herkese fayda sağlayacak şekilde varsayılan yapmak önünde çeşitli zorluklar bulunuyor.
2023, 2024: Fedora ve Ubuntu'da Frame Pointer
- Fedora, frame pointer'ları yeniden etkinleştirme önerisini kabul etti.
- Ubuntu da 24.04 LTS sürümünde varsayılan olarak frame pointer'ları etkinleştirdi.
2034 ve sonrası: Frame Pointer'ın Ötesi
- Stack izlemek için LBR, BTS, AET, DWARF, eBPF stack walking, ORC, SFrames ve shadow stack gibi çeşitli yöntemler bulunuyor.
- Gelecekte SFrames veya shadow stack, tüm stack trace'ler için kullanılabilir.
Sonuç
- Frame pointer'ların geri dönüşü, CPU flame graph'ları daha anlamlı hale getiriyor, Off-CPU flame graph'ları ilk kez çalıştırıyor ve başka yeni imkanlar açıyor.
- Bu, sürekli profiler'lar için de bir kazanım; çünkü profiler'ın tam çalışması için müşterileri OS değişikliğine ikna etme gereği ortadan kalkıyor.
GN⁺'nin görüşü
- Frame pointer'ların geri dönüşü, sistem performansı analizi ve debugging için büyük fayda sağlayacak gibi görünüyor. Özellikle karmaşık yazılım sistemlerinde sorun teşhisi ve performans optimizasyonu için vazgeçilmez bir araç.
- Bu değişim, açık kaynak topluluğundaki iş birliği ve katkının önemini gösteriyor. Fedora ve Ubuntu'nun kararı diğer dağıtımları da etkileyebilir; bu da genel Linux ekosistemi için olumlu bir değişim anlamına gelir.
- Frame pointer'ları yeniden devreye almak, performans kaybı ile debugging kolaylığı arasında denge kurma meselesidir. Bu kararlar, gerçek üretim ortamlarındaki performans testleri ve analizlerle daha iyi anlaşılabilir.
- Teknik arka plana sahip kullanıcılar için bu değişim ilgi çekici olabilir ve sistem performansını iyileştirmekle ilgilenen geliştiriciler ya da sistem yöneticileri için yararlı bilgiler sunar.
- Frame pointer'a benzer işlev sunan başka teknolojiler veya araçlar da varsa, örneğin Intel'in VTune Profiler'ı ya da AMD'nin uProf'u gibi donanım tabanlı profiler'lar kullanılabilir. Bu araçlar, frame pointer olmadan da performans analizi yapabilir.
1 yorum
Hacker News görüşleri
-fomit-frame-pointerseçeneğiyle performans artışı yaşanan örnekler