3 puan yazan GN⁺ 2023-12-08 | 1 yorum | WhatsApp'ta paylaş

İzleme araçlarına giriş

  • İzlemeye yönelik tutku ve deneyim temelinde çeşitli izleme yöntemlerinin tanıtımı
  • Yeni ve ilgi çekici 2 izleme aracı da dahil
  • İzlemenin özü: sistemde oluşan zaman damgalı verileri toplamak ve bunları zaman çizelgesi arayüzünde görselleştirmek

Verileri zaman çizelgesi arayüzünde kolayca görselleştirme

  • Chromium Event JSON Format kullanılarak basit JSON biçimindeki olay verilerinin görselleştirilmesi
  • İzleme dosyalarının Google'ın Perfetto veya Catapult görüntüleyicisi üzerinden incelenmesi
  • Python yardımcı programı kullanarak iz dosyalarını tıklanabilir bağlantılara dönüştürme ve paylaşma

Gelişmiş biçimler: Fuchsia Trace Format ve Perfetto Protobuf

  • Fuchsia Trace Format (FTF): büyük iz dosyaları için basit ve kompakt bir ikili biçim
  • Perfetto Protobuf: daha fazla özelliği destekleyen kompakt bir biçim; Protobuf kütüphanesi üzerinden üretilebilir

Çeşitli izleme araçları

  • Speedscope, pprof, Rerun gibi çeşitli iz görselleştirme araçlarının tanıtımı
  • Trace Compass, Firefox Profiler gibi profiler görüntüleyicilerine değinilmesi

İzleme yöntemleri

  • Donanım breakpoint'leri, perf, GDB scripting gibi düşük seviyeli izleme yöntemlerinin tanıtımı
  • Intel Processor Trace kullanılarak program yürütmesinin izlenmesi
  • magic-trace: fonksiyon çağrılarını görselleştiren iz dosyaları oluşturan araç

Enstrümantasyon tabanlı izleme profiler'ları

  • Tracy, Optick, Perfetto gibi enstrümantasyon tabanlı izleme profiler'larının karşılaştırılması
  • Ek bilgi içeren olay verilerinin öneminin vurgulanması

eBPF

  • Linux çekirdeğini kullanan izleme için eBPF alt sisteminin tanıtımı
  • BCC, bpftrace, ply gibi eBPF izleme araçlarının tanıtımı

eBPF örneği: Anthropic'in Perfetto tabanlı paket ve kullanıcı olayı izlemesi

  • Ağ kodundaki tail latency analizleri için BCC ile Perfetto görselleştirmenin birleştirilmesi
  • eBPF ile kullanıcı alanı olay izleme ve C helper'larıyla olay işleme optimizasyonu

İkili enstrümantasyon

  • Kaynak koda erişim mümkün olmadığında kullanılan ikili enstrümantasyon yöntemlerinin tanıtımı
  • bpftime, E9Patch, Frida gibi araçların açıklanması

Dağıtık izleme

  • Servisler arası izleme için OpenTelemetry, Zipkin, Odigos gibi çözümlere değinilmesi

Örnekleme profiler'ları

  • Programın tüm çağrı yığınını düzenli aralıklarla örnekleyen profiler'ların tanıtımı
  • Speedscope, Samply gibi zaman eksenini içeren arayüzlerin kullanımı

QEMU enstrümantasyonu

  • Tüm izleme araçları başarısız olduğunda kullanılan QEMU'nun tam emülasyonu ve hook mekanizmaları
  • Cannoli, QEMU TCG Plugins, usercorn gibi araçların tanıtımı

GN⁺ görüşü

Bu yazıdaki en önemli nokta, farklı türdeki problemleri çözmek için kullanılabilecek izleme yöntemlerine dair geniş bir katalog sunmasıdır. Başlangıç seviyesindeki yazılım mühendislerinin de anlayabileceği bir düzeyde çeşitli izleme araçları ve yöntemlerini tanıttığı için, izlemeye ilgi duyanlar açısından oldukça faydalı ve ilgi çekici içerik sunuyor. Özellikle gerçek bir örnek üzerinden eBPF izleme ile Perfetto görselleştirmenin birleştirilmesi, bunun pratikte nasıl uygulanabileceğini gösteriyor ve okurlara yeni içgörüler sağlayabilir.

1 yorum

 
GN⁺ 2023-12-08
Hacker News görüşleri
  • Spall geliştiricisinden görüş:

    • Spall, yazıda bahsedilen hafif profiler'lardan biri.
    • Yazarın "örtük sıralı ağaç" hakkındaki blog yazısı etkileyiciydi; büyük trace'ler için ağaçlara dair başka birinin bakış açısını görmek güzeldi.
    • eytzinger sıralı 4-ary ağaç, 165fps üzerinde bile 3 milyardan fazla fonksiyonu işlemede sorun yaşamıyor.
    • Şu anda timestamp delta sıkıştırması üzerinde çalışılıyor; bununla event'leri daha küçük alana sığdırmak hedefleniyor.
    • Spall'un native build'inde 128GB RAM ile 10 milyar event'i işleyebilmesi umuluyor.
  • Windows uygulamalarıyla çalışanlara ETW önerisi:

    • Windows uygulamaları üzerinde çalışanlara Event Tracing for Windows (ETW) öneriliyor.
    • Bruce Dawson'ın blogu, ETW için en iyi başlangıç noktası.
  • Açık kaynak çözümlere genel bakış:

    • Bu alandaki açık kaynak çözümler için oldukça iyi bir genel bakış.
    • Önemli bir tracing alanı olan time-travel debugging eksik kalmış.
    • Hardware trace, instrumentation ve deterministic replay kullanan ilginç çözümler var.
    • Programın belirli bir anına geri dönüp belleği bütünüyle yeniden kurarak debug yapmayı sağlayan görselleştirme entegrasyonu olsa daha da iyi olurdu.
  • Anthropic'teki işe alım yaklaşımı:

    • Sondaki, Anthropic'te Tristan ile çalışma fırsatına dair öneri oldukça çekici.
    • Tristan, üzerinde çalışacağı şeyleri iyi anlatıyor.
    • Blog yazısında trace ekran görüntülerinden daha fazla olsa iyi olurdu.
  • Python programı ve paket korelasyonu tekniği:

    • Belirli argümanlara sahip system call'ları izleyerek Python programının user-space event'leri ile paketler arasındaki korelasyonu bulma tekniğine hayranlık.
  • IDE eklentisi geliştiren ekibin deneyimi:

    • Üretimdeki uygulamalara geleneksel debugger işlevleri ekleyen bir IDE eklentisi geliştiriliyor.
    • Kullanıcıların çalışma anında rastgele değişkenleri analiz ederek kod içinde neler olduğunu anlamasını sağlıyor.
    • Bu eklenti ücretsiz.
  • JavaScript yürütme maliyeti profillemede sektör ihtiyacı:

    • JavaScript'in yürütme maliyetini deterministic olarak profillemenin daha iyi bir yoluna ihtiyaç var.
    • Chromium'da Linux perf kullanılarak bir deneme yapılmıştı, ancak ilgili değişiklikler kaldırıldı.
    • CI içinde JavaScript maliyetini deterministic olarak ölçmenin yollarına dair ipuçları merak ediliyor.
  • dtrace mention'ı ve bcantrill'in rant'ı:

    • Yazar dtrace'ten kısaca bahsediyor.
    • bcantrill'in, bpftrace'in event'leri sessizce kaybetmesi sorunu ve dtrace'in neden bunu yapmadığı hakkında yakın zamanda yaptığı rant'a bakılması öneriliyor.
  • Faydalı araçlar için teşekkür:

    • Yazıda anılan faydalı araçlar için teşekkür ifadesi.