Linux Performans Engellerini strace ve perf ile Derinlemesine Analiz Etme
Linux sistemlerinde beklenmedik yavaşlamalar veya kaynak tüketimi, çoğu zaman karmaşık etkileşimlerin bir sonucudur. Bu tür performans darboğazlarını yüzeysel metriklerle tespit etmek imkansız olabilir. Gerçek sorunun kaynağını bulmak için sistemin derinliklerine inmek gerekir. İşte bu noktada strace ve perf gibi araçlar devreye girer; bir uygulamanın kernel ile nasıl etkileşim kurduğunu ve CPU döngülerini nerede harcadığını net bir şekilde ortaya koyar.
strace: Sistem Çağrılarını ve Sinyalleri İzleme
strace, bir sürecin gerçekleştirdiği tüm sistem çağrılarını ve aldığı sinyalleri izleyen, ptrace mekanizmasını kullanan güçlü bir hata ayıklama aracıdır. Bu, bir uygulamanın disk I/O'su, ağ etkileşimleri, dosya erişimleri veya süreçler arası iletişimi hakkında "konuştuğu" dili anlamak anlamına gelir. Özellikle izin hataları, kilitlenmeler veya yavaş I/O işlemleri gibi sorunlarda vazgeçilmezdir.
strace Temel Kullanım ve Çıktı Analizi
Basit bir komutu izlemek için:
strace ls -l /tmpBu komut, ls -l /tmp komutunun çalışırken yaptığı her sistem çağrısını (execve, openat, read, getdents64 vb.) ve bunların argümanlarını, dönüş değerlerini ve hata kodlarını gösterecektir. Çıktı çok detaylı olabilir; bu yüzden filtreleme ve özetleme önemlidir.
strace ile Performans Sorunlarını İnceleme
Gerçek bir senaryoda, bir web sunucusunun statik dosyaları sunarken anormal derecede yavaşladığını varsayalım. nginx worker sürecini izlemek için:
sudo strace -p $(pgrep -n nginx) -T -e trace=file-p $(pgrep -n nginx): Nginx'in ana PID'ini bularak ilgili süreci izler.-T: Her sistem çağrısının ne kadar sürdüğünü gösterir.-e trace=file: Sadece dosya ile ilgili sistem çağrılarını (openat,read,write,close,statvb.) izler. Bu filtreleme, gürültüyü azaltır ve spesifik bir alana odaklanmayı sağlar.
Çıktıda, openat("...",