Linux Performans Ayarlaması: CPU, RAM ve I/O Kaynaklarının Derinlemesine Analizi

 · 

Linux Performans Ayarlaması: CPU, RAM ve I/O Kaynaklarının Derinlemesine Analizi

Linux Performans Ayarlaması: CPU, RAM ve I/O Kaynaklarının Derinlemesine Analizi

Linux sistemlerde performans darboğazları, genellikle işlemci (CPU), bellek (RAM) ve disk G/Ç (I/O) kaynaklarının yetersiz veya yanlış kullanılmasından kaynaklanır. Bu kritik bileşenlerin etkin analizi, sistem sağlığını anlamak ve optimum operasyonel kapasiteyi sağlamak için vazgeçilmezdir. Bu rehber, söz konusu kaynakları derinlemesine incelemek ve olası sorunları tespit etmek için pratik yaklaşımlar sunmaktadır.

CPU Performans Analizi

Bir sistemde CPU darboğazı, genellikle uygulamaların veya işletim sisteminin işlem gücüne aşırı yüklenmesiyle ortaya çıkar. Kullanıcı modu (user), çekirdek modu (system), boşta bekleme (idle), G/Ç beklemesi (iowait) ve sanallaştırma kaynaklı çalınan zaman (steal) gibi metrikler, CPU kullanımının doğasını anlamak için temel göstergelerdir.

top veya htop gibi araçlar anlık genel bakış sunarken, mpstat çok çekirdekli sistemlerde her bir CPU'nun detaylı istatistiklerini sağlar. Yüksek user zamanı genellikle kötü optimize edilmiş uygulama koduna, yüksek system zamanı ise kernel seviyesinde yoğun işlemlere işaret eder.

mpstat -P ALL 5 3

Yukarıdaki komut, her bir CPU çekirdeği için 5 saniye aralıklarla 3 rapor sunar. Çıktıda %usr yüksekse uygulama kodunu, %sys yüksekse çekirdek çağrılarını veya sürücüleri, %iowait yüksekse disk G/Ç'ye bağlı CPU beklemelerini incelemek gerekir.

Gerçek Senaryo: Yüksek I/O Wait

Bir e-ticaret platformunda, ani trafik artışlarında web sunucularının yanıt süresi belirgin şekilde uzadı. top çıktısında CPU kullanımının %50-60 seviyelerinde olmasına rağmen %iowait değerinin %30-40'lara ulaştığı gözlemlendi. Bu durum, CPU'nun aslında iş yapmadığını, diskten veri beklediğini gösteriyordu. Detaylı analizde, yoğun ürün görsellerinin statik dosya sunucusu yerine ana uygulama sunucusundan servis edildiği ve disk okuma operasyonlarının darboğaz yarattığı anlaşıldı. Çözüm olarak, görsellerin bir CDN'e (Content Delivery Network) taşınması ve daha hızlı depolama birimlerinin (NVMe) kullanılmasıyla %iowait düşürüldü, böylece CPU kaynakları daha verimli kullanıldı.

Bellek (RAM) Performans Analizi

Yetersiz veya yanlış yapılandırılmış bellek, sistemin disk üzerinde takas alanı (swap) kullanmasına ve bu da performansta ciddi düşüşlere yol açar. free -h komutu genel bellek durumunu gösterirken, vmstat komutu sanal bellek, disk, tuzak ve CPU aktivitesi hakkında daha derinlemesine bilgi sağlar.

free -h

Bu komut, kullanılan, boş, paylaşılan, ara belleğe alınmış/önbelleğe alınmış ve mevcut (available) bellek miktarlarını gösterir. Özellikle available değeri, uygulamaların kullanabileceği gerçek boş bellek miktarını yansıtır.

vmstat 5 5

vmstat çıktısındaki si (swap in) ve so (swap out) değerleri, sistemin ne kadar aktif olarak diskten belleğe veya bellekten diske veri taşıdığını gösterir. Yüksek si/so değerleri, genellikle bellek yetersizliğinin ve aktif takas kullanımının işaretidir.

Gerçek Senaryo: Bellek Kaçağı ve Yoğun Takas

Bir mikroservis mimarisinde çalışan Python tabanlı bir raporlama servisi, birkaç gün içinde yavaşlamaya başlıyor ve sonunda yanıt vermeyi durduruyordu. İzleme metriklerinde free -h çıktısındaki available belleğin sürekli azaldığı ve vmstat çıktısında si/so değerlerinin düzenli olarak arttığı görüldü. Uygulama logları ve ps aux --sort=-%mem ile yapılan incelemeler sonucunda, servisin bir bellek kaçağına (memory leak) sahip olduğu ve kullanılmayan verileri bellekte tuttuğu tespit edildi. Bu durum, sistemin sürekli takas alanı kullanmasına ve disk G/Ç'de darboğaza yol açıyordu. Bellek kaçağı giderildikten ve Python garbage collection ayarları optimize edildikten sonra sistem stabilitesi sağlandı.

Disk G/Ç (I/O) Performans Analizi

Disk G/Ç performansı, veritabanları, dosya sunucuları ve yoğun disk erişimi gerektiren uygulamalar için kritiktir. iostat ve iotop gibi araçlar, disk alt sistemindeki darboğazları tespit etmek için kullanılır.

iostat -xz 1

Bu komut, her saniye detaylı disk istatistikleri sunar. %util (diskin ne kadar meşgul olduğu), await (ortalama G/Ç bekleme süresi), r/s (saniyedeki okuma isteği sayısı), w/s (saniyedeki yazma isteği sayısı), rKB/s ve wKB/s gibi metrikler önemlidir. Yüksek %util ve await değerleri, disk alt sisteminde bir darboğaz olduğunu gösterir.

iotop -o

iotop komutu, hangi süreçlerin en çok disk G/Ç yaptığını gerçek zamanlı olarak gösterir. Bu, belirli bir uygulamanın disk performansını düşürüp düşürmediğini anlamak için çok faydalıdır.

Gerçek Senaryo: Veritabanı G/Ç Darboğazı

Bir PostgreSQL veritabanı sunucusu, yoğun sorgu yükü altında sorgu sürelerinde belirgin artışlar yaşadı. iostat -xz 1 çıktısında, veritabanının çalıştığı disk biriminde %util değerinin sürekli %90-100 arasında olduğu ve await süresinin 50-100 ms'ye kadar çıktığı gözlemlendi. Bu, diskin tamamen doygunluğa ulaştığını ve sorguların diskten veri beklemesi nedeniyle yavaşladığını gösteriyordu. iotop ile yapılan incelemede, belirli bir raporlama işinin, uygun indeksleme yapılmamış büyük bir tablo üzerinde yoğun disk okuma operasyonları yaptığı tespit edildi. İndekslerin optimize edilmesi ve disk biriminin daha yüksek IOPS (Input/Output Operations Per Second) kapasiteli bir SSD (Solid State Drive) ile değiştirilmesiyle sorgu süreleri kabul edilebilir seviyelere çekildi.

Performans Optimizasyon Stratejileri

Analiz sonuçlarına göre uygulanan optimizasyon stratejileri çeşitlilik gösterebilir:

  • CPU: Uygulama kodunun optimize edilmesi, doğru iş parçacığı (thread) ve süreç (process) yönetimi, kernel CPU scheduler ayarları.
  • RAM: Uygulama bellek ayarlarının gözden geçirilmesi (JVM heap, veritabanı buffer cache), bellek kaçaklarının giderilmesi, gereksiz servislerin durdurulması, uygun swap alanı yapılandırması.
  • I/O: Daha hızlı depolama birimlerine geçiş (NVMe SSD), RAID yapılandırmalarının optimizasyonu, dosya sistemi ayarlarının düzenlenmesi (noatime), uygulama düzeyinde G/Ç optimizasyonu (veritabanı indeksleri, disk önbellekleme).

Sonuç

Linux sistemlerde performans analizi, tek bir metrik veya araçla sınırlı kalmayıp, CPU, bellek ve G/Ç kaynaklarının birbiriyle etkileşimini anlamayı gerektiren kapsamlı bir süreçtir. Doğru araçları kullanarak ve elde edilen verileri gerçek dünya senaryolarıyla ilişkilendirerek, sistem performansındaki darboğazları etkili bir şekilde tespit edebilir ve giderebilirsiniz. Bu proaktif yaklaşım, sistemlerinizin sürekli olarak yüksek verimlilikle çalışmasını sağlar ve potansiyel aksaklıkları önler.

← Blog Listesine Dön