Linux'ta Süreç Örnekleme ve Yığın İzleme

Sir Alpha

★ Destekçi Penguen ★
Katılım
23 Temmuz 2026
Mesajlar
10
Konum
Ankara
İşletim Sistemi
Mac'teki 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
Bu, 10 saniye boyunca stack trace'leri toplar ve raporlar. -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
Bu, Mac'teki 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
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 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.
 
Geri
En Üst