Sir Alpha
★ Destekçi Penguen ★
- Katılım
- 23 Temmuz 2026
- Mesajlar
- 10
- Konum
- Ankara
- İşletim Sistemi
Mac'teki
perf (en güçlü yöntem): Kernel'in performans altyapısını kullanır. Örnekleme için:
Bu, 10 saniye boyunca stack trace'leri toplar ve raporlar.
pstack döngüsü:
Bu, Mac'teki
BCC / eBPF araçları: Eğer sisteminde
Bu, 99 Hz ile 10 saniye boyunca stack'leri toplar ve yığınların sayısını bastırır. Mac'teki çıktıya oldukça benzer bir sonuç verir.
Hangi yöntemi seçeceğin senaryoya bağlı. Hızlıca bir fikir edinmek için
sample aracı, belirli bir PID'ye ait tüm thread'lerin stack trace'ini periyodik olarak alıp hangi fonksiyonların ne sıklıkta çalıştığını gösterir. Linux'ta bu işi yapan tek bir komut yok ama aynı veriyi almanın birkaç pratik yolu var.perf (en güçlü yöntem): Kernel'in performans altyapısını kullanır. Örnekleme için:
Kod:
perf record -g -p <PID> sleep 10
perf report
-g call graph'ı (backtrace) dahil eder. Sonuçları görselleştirmek için perf report --stdio veya perf top -g -p <PID> anlık izleme için kullanılabilir.pstack döngüsü:
pstack genelde gdb ile sarılmış bir script'tir, tek seferlik stack trace basar. Bunu döngüye sokarak örnekleme yapabilirsin:
Kod:
for i in $(seq 1 10); do pstack <PID>; sleep 0.5; done
sample -n 10 -s 0.5 karşılığı olur. Çıktıyı dosyaya yazıp sonradan analiz edebilirsin.BCC / eBPF araçları: Eğer sisteminde
bcc araçları kuruluysa stackcount veya profile ile doğrudan kernel ve kullanıcı uzayı stack'lerini örnekleyebilirsin. Mesela:
Kod:
profile -p <PID> -F 99 10
Hangi yöntemi seçeceğin senaryoya bağlı. Hızlıca bir fikir edinmek için
pstack döngüsü yeterli, detaylı analiz için perf şart. perf çıktısını daha okunaklı hale getirmek için perf report --hierarchy veya FlameGraph script'leri ile alev grafikleri oluşturmak işe yarar.