strace ve perf: Linux sorun giderme hile sayfası

13 dakikalık okuma - 4 Haziran 2026

hero section cover
İçindekiler
  • Linux sorun giderme için strace ve perf
  • Strace ve perf ne zaman kullanılmalı
  • strace ve perf'i yükleme
  • Strace ile sistem çağrılarını izleme
  • Perf ile CPU Profili Oluşturma
  • Canlı bir sunucuda pratik bir iş akışı
Paylaş

Linux'ta strace ve perf'in ne zaman kullanılacağı, gerçekten çalıştıracağınız komutlar ve yoğun bir üretim sunucusunda hata ayıklarken ek yükün nasıl düşük tutulacağı.

Linux sorun giderme için strace ve perf

Bir Linux sunucusu yavaşladığında, çöktüğünde veya CPU'yu aşırı yüklediğinde ve uygulama günlükleri bunun nedenini açıklamadığında, iki araç bu boşluğu büyük ölçüde doldurur. strace size bir işlemin çekirdeğe ne istediğini söyler. perf CPU'nun zamanını nerede harcadığını gösterir. Bu iki araç birlikte, başka hiçbir şeyin bu kadar ucuza cevap veremediği "neden takıldı" ve "ne yapıyor" sorularını yanıtlar.

Bu yazıda, her bir araca ne zaman başvurmanız gerektiği, bunların nasıl kurulacağı, gerçekten çalıştıracağınız komutlar ve canlı bir sunucuda ek yükü yönetilebilir tutmanın yolları ele alınmaktadır.


 

Strace ve perf ne zaman kullanılmalı

Aradaki fark basittir. perf CPU meşgul olduğunda ve hangi işlevin sorumlu olduğunu bilmeniz gerektiğinde kullanın. strace perf

perf , çekirdeğin donanım sayaçlarını yapılandırılabilir bir sıklıkta örnekler, bu nedenle ek yük genellikle %1'in altındadır ve üretim ortamında çalıştırmak güvenlidir. strace , ptrace, bu da hedef işlemi 10 ila 100 kat yavaşlatabilir. Canlı sistemlerde bunu nadiren kullanın ve her zaman filtrelerle birlikte kullanın.

BelirtiŞu komutla başlayınŞunlarla devam edin
Yüksek CPU kullanımıperf top veya perf record -gstrace -c sıcak işlemde
Yavaş disk veya I/O beklemeperf stat önbellek kaçırmaları içinstrace -e trace=file
İşlem kilitlenmesi veya sessiz hatastrace -e trace=file,networkperf stat CPU yükünü dışlamak için
Kilit çekişmesi veya yavaş APIstrace -c, şunlara dikkat edin futexperf record -g

strace ve perf'i yükleme

Her iki araç da standart depolarda bulunmaktadır. strace, ptrace syscall'a dayanır ve yıllardır tüm modern çekirdeklerin bir parçasıdır. perf ise perf_events arayüzünü kullanır ve çalıştırdığınız çekirdeğe uygun bir pakete ihtiyaç duyar.

Ubuntu veya Debian'da:

sudo apt install strace linux-tools-common linux-tools-$(uname -r)

RHEL, AlmaLinux veya Fedora'da:

sudo dnf install strace perf

Bit $(uname -r) bit önemlidir. Farklı bir çekirdek sürümüne göre derlenmiş bir perf ikili dosyası kafa karıştırıcı çıktı üretir ve olayları sessizce atlayabilir. perf --version ve strace -V komutlarıyla doğrulayın.

Perf'in onaltılık adresler yerine işlev adlarını göstermesi için hata ayıklama sembollerine ihtiyacınız vardır. İlgili -dbg veya -debuginfo paketini (örneğin, libc6-dbg Debian'da) yükleyin ve kendi ikili dosyalarınızı -g ile kendi ikili dosyalarınızı derleyin.

Konteynerlerin içinde, strace için --cap-add=SYS_PTRACE ve perf gerekir --cap-add=SYS_ADMIN Docker ile başlatılırken. Bu sınırlamalar olmadan araçlar, hatalar gibi görünen şekillerde başarısız olur.

Strace ile sistem çağrılarını izleme

strace strace command komutunu çalıştırmak, bir işlemi başlatıldığından itibaren izler. Çalışan bir işleme bağlanmak için strace -p PIDkomutunu kullanın. Çok iş parçacıklı veya çatallanan herhangi bir şey için -f komutunu ekleyin; aksi takdirde etkinliklerin çoğunu kaçıracaksınız.

Çıktı satırları bir dönüş değeriyle biter. -1 ENOENT , işlemin istediği dosyanın bulunmadığı anlamına gelir. -1 EACCES , izinlerle ilgilidir. Bu iki hata, tek başına üretim hatalarının şaşırtıcı bir kısmını oluşturur.

En kullanışlı bayrak -e trace=GROUP'dir; bu, çıktıyı adlandırılmış bir sistem çağrısı kategorisiyle sınırlar ve gereksiz bilgileri yönetilebilir tutar.

GrupÇağrıları dahilNe için kullanışlıdır
fileopenat, stat, read, writeEksik yapılandırmalar, izin hataları, yavaş G/Ç
networksocket, connect, bind, recvfromBağlantı reddedildi, DNS hataları, TLS sorunları
processexecve, clone, wait4Çökmeler, fork fırtınaları, eksik ikili dosyalar
futexfutexKilit çekişmesi ve iş parçacığı durmaları

Yoğun bir sunucuda, strace -c -p PID ile on veya yirmi saniye boyunca başlayın. -c bayrağı, bağlantıyı kestiğinizde sistem çağrısı sayılarının, toplam sürenin ve hataların bir özetini yazdırır. Bu, terminali aşırı yüklemeden hangi kategoriye daha yakından bakmanız gerektiğini gösterir. Ardından dar bir filtreyle yeniden bağlanın.

Bilmeniz gereken diğer bayraklar: -T her çağrıda harcanan süreyi günlüğe kaydeder, -Z sadece başarısız çağrıları gösterir ve -o file terminale değil bir günlüğe yazar; bu, gürültülü bir işlemde çok daha hızlıdır.

Perf ile CPU Profili Oluşturma

perf'te çoğu zaman kullanacağınız dört komut vardır.

KomutNe YaparYaygın bayraklar
perf statSayaçların anlık görüntüsü: döngüler, önbellek kaçırmaları, bağlam geçişleri-e, -p, -a
perf topSistemdeki en yoğun işlevlerin canlı görünümü--sort comm,dso,symbol
perf recordÇevrimdışı analiz için perf.data çevrimdışı analiz için-F, -g, -p
perf reportOkuma perf.data, fonksiyonları örnek payına göre sıralar--stdio, --sort

Hızlı bir genel bakış için perf stat -p PID ile başlayın. Dikkat edilmesi gereken rakamlar:

  • 1,0'ın altındaki IPC (döngü başına komut sayısı): CPU, genellikle bellek erişiminde durmaktadır.
  • Yüksek LLC yük kaçırma sayısı: çalışma kümesi önbelleğe sığmıyor, bu nedenle CPU RAM'i bekliyor.
  • Yüksek bağlam değiştirme sayısı: iş parçacıklarının disk veya ağda sürekli tıkanmaya neden olduğu I/O sınırlı iş yükleri için klasik bir durumdur.

Bir şey ters görünüyorsa, perf record -F 99 -g -p PID -- sleep 30. -F 99 99 Hz'de örnekleme yapar; bu, yoğun işlevleri bulmak için yeterlidir ve 100 Hz gibi yuvarlak sayılarda çekirdek zamanlayıcıyla senkronizasyonu önler. -g bayrağı çağrı grafiklerini yakalar, böylece perf report size bir işlevin hangi yollarının sorumlu olduğunu gösterebilir.

"Overhead" perf report, Ek Yük sütunu toplam örneklerin payını gösterir. _int_malloc veya memcpy , yoğun kaynak tahsisi anlamına gelir. Kendi işlevlerinizden birinde yüksek ek yük, aradığınız sıcak noktadır.

İşlev adları yerine onaltılık adresler görüyorsanız, ikili dosya soyulmuştur veya hata ayıklama sembolleri eksiktir. Eşleşen -dbg paketi yükleyin veya ikili dosyayı -g.

Canlı bir sunucuda pratik bir iş akışı

Yoğun bir sunucuda meydana gelen gerçek bir olay için rutin şu şekildedir:

  1. Öncelikle ucuz araçlarla sorunu doğrulayın: top, vmstat, iostat. Bir VM kullanıyorsanız, st (steal) sütununu kontrol edin. %5'in üzerindeki değerler, darboğazın kodunuz değil, hipervizör olduğunu gösterir.
  2. CPU yükü yüksekse, perf top komutunu çalıştırın, ardından perf record -F 99 -g -p PID -- sleep 30 sorunlu işlem için çalıştırın. 99 Hz'de 30 saniyelik bir yakalama yaklaşık 1,7 MB veri üretir.
  3. İşlem kilitlenmişse, yavaşsa veya hata veriyorsa, strace -c -p PID komutunu on saniye çalıştırın ve özeti okuyun. Bir syscall kategorisi baskınsa, strace -e trace=GROUP -T -p PID.
  4. Şüpheli sistem çağrısını veya işlevi bulduğunuzda, bağlantıyı kesin. Her iki aracı da gerekenden daha uzun süre üretim ortamında çalışır durumda bırakmayın.

İki uyarı. strace çıktısı ortam değişkenlerini, dosya yollarını ve soketlerden okunan baytları içerebilir, bu nedenle günlükleri ekibinizin dışına paylaşmadan önce temizleyin. Ve bunu düzenli olarak yapacaksanız, bir sonraki adım olarak bpftrace ve daha kapsamlı eBPF araç setini bir sonraki adım olarak değerlendirin: aynı tür görünürlük, %1'in altında ek yük, baştan itibaren üretim ortamı için tasarlanmış.

Derin tanılama erişiminin önemli olduğu ve paylaşımlı altyapının bir seçenek olmadığı iş yükleri çalıştırıyorsanız, özel sunucularımıza bir göz atın.

background image
VPS'iniz bu işe uygun mu?

FDC VPS standart olarak NVMe sürücüler, EPYC işlemciler ve gerçekten ölçülmemiş bant genişliği ile birlikte gelir. Yükseltmeye hazır mısınız?

Performansın kilidini şimdi açın

Blog

Bu hafta öne çıkanlar

Daha fazla makale
Güçlü ve ölçülmemiş bir VPS'ye sahip olmak neden önemlidir?

Güçlü ve ölçülmemiş bir VPS'ye sahip olmak neden önemlidir?

Ölçülmemiş bir VPS, sabit bir bağlantı noktası hızında sabit oranlı bant genişliği sağlar. Ölçülü planlardan farkı nedir, ne zaman işe yarar ve satın almadan önce neleri kontrol etmelisiniz.

7 dakikalık okuma - 9 Mayıs 2025

Linux Bellek Yönetimi: Swap, OOM Killer & Cgroups

12 dakikalık okuma - 31 Mayıs 2026

Daha fazla makale
background image

Sorularınız mı var veya özel bir çözüme mi ihtiyacınız var?

icon

Esnek seçenekler

icon

Küresel erişim

icon

Anında dağıtım

icon

Esnek seçenekler

icon

Küresel erişim

icon

Anında dağıtım