3 puan yazan GN⁺ 2024-03-18 | 1 yorum | WhatsApp'ta paylaş

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

 
GN⁺ 2024-03-18
Hacker News görüşleri
  • 2000'lerin başında stack frame pointer atlamasının yaygınlaşmaya başladığı döneme dair deneyim
    • Yazar o dönemde bilgisayar bilimi okuyordu ve kullandığı bilgisayar eski ve düşük performanslıydı.
    • Debugging zorlaşınca, debugging sorunlarından kaçınmak için Python kullanmaya başladı.
  • Fedora dağıtımında stack frame pointer'ı korumaya yönelik çabalar
    • Stack frame pointer'ın büyük bir ek yük getirdiğine dair yanlış bir inanç vardı, ancak gerçek ek yük %1'den azdı.
  • Apple'ın ARM mimarisinde stack trace'i her zaman anlamlı tutmuş olması
    • Bazı fonksiyonlar frame record üretmeyebilir, ancak stack trace debug bilgisi olmadan da anlamlıdır.
  • Google'daki deneyim ve toplulukla 20 yıllık tartışmalar
    • libunwind'i gperftools'a uygulamak için yama hazırlama ve bakım deneyimi paylaşılıyor.
  • Geçmişte -fomit-frame-pointer seçeneğiyle performans artışı yaşanan örnekler
    • 32 bit işlemcilerde MySQL ve PHP derlenerek donanım maliyetinden tasarruf edildi.
  • Virgil programlama dilinin stack frame yönetim yöntemi
    • Dinamik stack allocation yoksa, basit bir tablo aramasıyla frame boyutu bulunabiliyor.
    • Metadata decoding'i uygulayan koda dair açıklama.
  • Stack'i "walk" etmek yerine RBP ve RSP kullanarak iki stack yönetme fikri
    • Call stack'in yalnızca bir dönüş adresleri dizisine dönüşmesi, stack walking ihtiyacını azaltıyor.
  • Frame pointer'a destekle ilgili deneyim ve düşüncelerin paylaşılması
    • Frame pointer'ı etkinleştirme kararı duruma göre verilmelidir ve benchmark yapmak önemlidir.
    • Build system'in bunu toplu olarak değiştirebilme özelliği sunmasının önemi.
    • SFrame'e dair beklenti ve mevcut sorunları çözme potansiyeli.
  • Profiling'in 20 yıl boyunca sorun olduğu ve ancak şimdi çözüldüğüne dair görüş
    • Frame pointer'ın yokluğu birçok kişi için acı vericiydi ve şimdi Linux'un bunu geri getirmesi, verdikleri emeğin kabul edildiği hissini veriyor.
  • Sistem profiling'ini mümkün kılan mekanizmanın performansına yönelik şikayetlerin ironik olması
    • Performans sorunlarını tespit etmeyi sağlayan sisteme yönelik performans şikayetleri, erken optimizasyonun uç noktasıdır.