İ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
Hacker News görüşleri
Spall geliştiricisinden görüş:
Windows uygulamalarıyla çalışanlara ETW önerisi:
Açık kaynak çözümlere genel bakış:
Anthropic'teki işe alım yaklaşımı:
Python programı ve paket korelasyonu tekniği:
IDE eklentisi geliştiren ekibin deneyimi:
JavaScript yürütme maliyeti profillemede sektör ihtiyacı:
dtrace mention'ı ve bcantrill'in rant'ı:
Faydalı araçlar için teşekkür: