Foruma hoş geldin 👋, Ziyaretçi

Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı ya da giriş yapmalısınız. Foruma üye olmak tamamen ücretsizdir.

Linux'ta CPU Çekirdek Kullanımını Ayrıntılı İzleme ve Yük Dengesizliği Sorunlarını Tespit Etme

pixero

Üye
Katılım
14 Mart 2026
Mesajlar
38
Merhaba arkadaşlar, bugün sizlere özellikle yüksek trafikli sunucularınızda karşılaşabileceğiniz sinsi bir sorundan, CPU yük dengesizliğinden ve bunu nasıl ayrıntılı izleyip tespit edeceğinizden bahsedeceğim. Çoğu zaman toplam CPU kullanımı %30-40 gibi normal görünür ama bir bakarsınız ki tek bir çekirdek %100'e takılmış, uygulamanız yavaşlamıştır. Bu rehberle, bu gizli sorunu nasıl ortaya çıkaracağınızı adım adım göstereceğim.

📊 Neden Çekirdek Bazlı İzleme Önemli?

Modern sunucularımız çok çekirdekli işlemcilerle geliyor. Ancak birçok uygulama, özellikle de tek thread (iş parçacığı) ile çalışan veya thread'lerini iyi yönetemeyen uygulamalar, yükü tüm çekirdeklere eşit dağıtamaz. Bu durumda, bir çekirdek tam kapasite çalışırken diğerleri boşta kalabilir. Sistem genelinde bir sıkıntı yokmuş gibi görünse de, o tek çekirdekteki kuyruğa giren işlemler genel performansı ve kullanıcı deneyimini ciddi şekilde düşürür. Benim sunucularda genelde ilk baktığım noktalardan biridir.

🛠️ Temel ve İleri Seviye İzleme Araçları

Öncelikle, komut satırından hızlıca durumu analiz edebileceğimiz birkaç temel aracı hatırlayalım.

`top` komutunu çalıştırdıktan sonra "1" (bir) tuşuna basarsanız, tüm CPU çekirdeklerinin ayrı ayrı kullanım istatistiklerini görebilirsiniz. Bu ilk ve hızlı bakış için mükemmeldir.

Bash:
top

Daha detaylı ve renkli bir görünüm için `htop` kullanmanızı şiddetle tavsiye ederim. Kurulumu basittir:

Bash:
sudo apt-get install htop  # Debian/Ubuntu
sudo yum install htop        # RHEL/CentOS

`htop`'u çalıştırdığınızda, ekranın üst kısmında her bir CPU çekirdeğinin (CPU0, CPU1...) canlı grafiklerini ve yüzde kullanımlarını net bir şekilde göreceksiniz. Benim sunucularda genelde kullandığım yöntem budur.

Ancak, gerçekten derinlemesine analiz ve geçmişe dönük veri toplamak için `mpstat` aracı en iyi dostunuz olacak. `sysstat` paketi ile gelir.

Bash:
sudo apt-get install sysstat  # Debian/Ubuntu
sudo yum install sysstat      # RHEL/CentOS

`mpstat`'ı tüm çekirdekler için, 2 saniye aralıklarla çalıştıralım:

Bash:
mpstat -P ALL 2

Bu komut, her çekirdeğin `%usr`, `%sys`, `%iowait`, `%irq` gibi ayrıntılı istatistiklerini 2 saniyede bir güncelleyecek şekilde ekrana basar. Burada özellikle bir çekirdekteki `%usr` (kullanıcı modu) veya `%sys` (sistem modu) değerinin sürekli yüksek olup olmadığına bakmalısınız.

⚠️ Yük Dengesizliği Tespiti ve Kök Neden Analizi

Peki, bir çekirdeğin aşırı yüklü olduğunu gördük. Sıra geldi "Hangi süreç buna neden oluyor?" sorusunu cevaplamaya. İşte burada `pidstat` ve `taskset` gibi araçlar devreye giriyor.

Hangi işlemlerin hangi CPU'larda çalıştığını ve ne kadar CPU kullandığını görmek için `pidstat` mükemmeldir. Aşağıdaki komut, tüm süreçlerin CPU kullanımını her 2 saniyede bir, çekirdek bazında gösterir:

Bash:
pidstat -tu 2

Çıktıda `CPU` sütununa dikkat edin. Bu sütun, ilgili sürecin/task'ın o an hangi CPU çekirdeğinde çalıştığını gösterir. Sürekli aynı çekirdek numarasında görünen ve yüksek `%CPU` değeri olan bir süreç, şüpheliniz olabilir.

Daha da ileri gitmek ve bir sürecin CPU afinitelerini (yani hangi çekirdeklerde çalışabileceğini) görmek için `taskset` kullanabilirsiniz. Örneğin, PID'si 1234 olan bir sürecin bağlı olduğu CPU'ları görelim:

Bash:
taskset -pc 1234

Çıktı `pid 1234's current affinity list: 0-7` gibi bir şey olacaktır. Bu, sürecin 0'dan 7'ye kadar tüm çekirdeklerde çalışabileceği anlamına gelir. Eğer çıktı `pid 1234's current affinity list: 2` ise, bu süreç sadece 2 numaralı çekirdeğe kilitlenmiş demektir ve bu da yük dengesizliğinin klasik bir nedenidir!

📈 Perf ile Profil Oluşturma ve Sonuç

Eğer sorun bir uygulamanın içindeyse ve hangi fonksiyonun sürekli bir çekirdeği meşgul ettiğini bulmanız gerekiyorsa, `perf` aracı ile profil (profile) oluşturabilirsiniz. Bu, biraz daha ileri seviye bir tekniktir.

Öncelikle `perf`'i kurun ve ardından belirli bir süre (örneğin 30 saniye) boyunca sisteminizin profilini çıkarın:

Bash:
sudo apt-get install linux-tools-common linux-tools-$(uname -r)  # Ubuntu
sudo perf record -a -g -- sleep 30
sudo perf report --stdio

`perf report` çıktısı, hangi fonksiyonların en çok CPU zamanı harcadığını gösterecektir. Bu, geliştirici ekibinize performans sorununu raporlamak için altın değerinde bir bilgidir.

💎 Özet ve Tavsiyeler

Şu ayara çok dikkat etmelisiniz: Sadece genel CPU kullanımına bakmak yeterli değil. Düzenli olarak `htop` veya `mpstat` ile çekirdek bazlı kullanımı kontrol edin. Sürekli yüksek görünen bir çekirdek varsa, `pidstat` ve `taskset` ile suçluyu bulun. Sorun bir uygulama içindeyse, `perf` ile derinlemesine inceleme yapın.

Bu izleme adımlarını, özellikle canlı sistemlerde yük testi sırasında veya performans şikayeti geldiğinde mutlaka uygulayın. Birçok gizli performans sorununun kilidini açacaktır.

Peki ya siz? CPU yük dengesizliği sorunlarıyla karşılaştınız mı? Bu konfigürasyonu ve izleme yöntemlerini kendi sunucularınızda nasıl yapıyorsunuz? Ya da bu araçlarla ilgili farklı ipuçlarınız var mı? Deneyimlerinizi ve sorularınızı aşağıya yazmaktan çekinmeyin, birlikte tartışalım.
 

Tema özelleştirme sistemi

Bu menüden forum temasının bazı alanlarını kendinize özel olarak düzenleye bilirsiniz.

Zevkine göre renk kombinasyonunu belirle

Tam ekran yada dar ekran

Temanızın gövde büyüklüğünü sevkiniz, ihtiyacınıza göre dar yada geniş olarak kulana bilirsiniz.

Geri