Linux kullanıcıları arasında sık karşılaşılan sorunlardan biri sistemin yavaşlamasıdır. Özellikle CPU kullanımı düşük görünürken sistemde gecikmeler yaşanıyorsa çoğu zaman sorun RAM (bellek) tüketiminden kaynaklanır.
Yüksek bellek kullanan uygulamalar sistemde darboğaz yaratabilir swap alanına yönlendirme artabilir ve bu da genel sistem performansını ciddi oranda düşürür.
Bu makalemde Linux’ta en fazla RAM tüketen süreçleri nasıl tespit edebileceğinizi bu süreçlerle nasıl baş edebileceğinizi ve sistem belleğinizi nasıl daha verimli kullanabileceğinizi detaylı bir şekilde ele alacağız.
RAM, işletim sisteminizin ve çalışan uygulamaların verileri geçici olarak depoladığı yerdir. Bir uygulama çalıştığında verileri işlemek için RAM’e yüklenir. Eğer birden fazla uygulama ya da arka planda çalışan servisler aşırı bellek kullanıyorsa:
- Sistem yavaşlar
- Swap alanı devreye girer (disk kullanımı artar)
- Uygulamalar donabilir ya da kilitlenebilir
- Sunucu ortamlarında hizmet kesintilerine yol açabilir
Bu yüzden sistem yöneticileri ve ileri düzey kullanıcılar için RAM kullanımını izlemek kritik bir görevdir.
Bellek Tüketimini Görüntülemek İçin Araçlar ve Yöntemler
a) TOP Komtu
top
, sistemdeki süreçleri gerçek zamanlı olarak izleyebileceğiniz güçlü bir araçtır.
top
Karşınıza sistemin canlı süreç listesi gelir. Buradaki önemli sütunlar:
- PID: Süreç ID’si
- USER: Süreci çalıştıran kullanıcı
- %CPU: CPU kullanımı
- %MEM: RAM kullanımı
Varsayılan olarak CPU kullanımına göre sıralanır. Belleğe göre sıralamak için:
Shift + f
tuşlarına basın↓
ile%MEM
seçeneğine inins
ile seçin, ardındanEnter
veq
tuşlarına basın
Artık süreçler RAM kullanımına göre sıralanmıştır.
b) ps Komutu
Daha hızlı ve sade bir çıktı almak için ps
komutu idealdir.
ps -eo pid,ppid,cmd,%mem --sort=-%mem | head -n 11
Bu komutun anlamı:
-eo
: Hangi sütunların gösterileceğini belirtirpid
: Süreç ID’sippid
: Ebeveyn süreç ID’sicmd
: Komut satırı (çalışan uygulama)%mem
: RAM kullanım oranı
--sort=-%mem
: Bellek kullanımına göre azalan sırada listelerhead -n 11
: İlk 10 süreci ve başlık satırını gösterir
Bu yöntem, sistem yöneticileri için hızlı raporlama açısından oldukça faydalıdır.
c) htop Komutu
htop
, top
komutunun renkli ve kullanıcı dostu versiyonudur.
Kurulum (Debian/Ubuntu tabanlı sistemler için);
sudo apt install htop
komutu çalıştırmak için;
htop
Belleğe göre sıralamak için F6
tuşuna basıp %MEM
seçeneğini seçebilirsiniz. Aynı anda CPU, RAM ve süreç ağacı gibi bilgileri de izleyebilirsiniz.
Bellek Canavarlarını Yönetme Yöntemleri
a) Gereksiz Süreçleri Sonlandırma
Belirli bir sürecin sistem belleğini gereğinden fazla kullandığını fark ettiyseniz ve bu süreç sistem için hayati değilse, onu sonlandırabilirsiniz:
kill -9 <PID>
Uyarı: -9
sinyali, süreci zorla sonlandırır. Öncelikle kill <PID>
veya kill -15 <PID>
ile daha nazik sinyaller deneyin.
b) Süreç Önceliğini Düşürme (nice
ve renice
)
Süreci sonlandıramıyorsanız ama sistem kaynaklarını daha az kullanmasını istiyorsanız, onun “önceliğini” düşürebilirsiniz.
Yeni bir işlemi düşük öncelikle başlatmak:
nice -n 10 python3 hesapla.py
Çalışan bir sürecin önceliğini değiştirmek:
renice 10 -p <PID>
Not: nice
değeri ne kadar yüksekse, süreç o kadar az öncelikli olur (yani sistem kaynaklarına erişim önceliği azalır).
c) Bellek Sızıntılarını Tespit Etmek
Özellikle kendi yazdığınız betikler ya da açık kaynak uygulamalar sürekli artan bellek kullanımı ile dikkat çekebilir. Bu bir “memory leak” (bellek sızıntısı) olabilir.
Valgrind gibi araçlarla test edebilirsiniz:
valgrind --leak-check=full ./uygulama
Ayrıca büyük uygulamalar (örneğin MySQL) için konfigürasyon dosyalarındaki bellek ayarlarını gözden geçirmek gerekebilir (my.cnf
).
d) (Swap) Alanı Eklemek
Fiziksel RAM yetersizse ve bellek açığı kritik hale geldiyse geçici bir çözüm olarak takas alanı oluşturabilirsiniz:
sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
Kalıcı yapmak için /etc/fstab
dosyasına aşağı satırı ekleyin:
/swapfile none swap sw 0 0
e) Sistem ve Uygulamaları Güncel Tutun
Eski yazılımlar daha fazla bellek tüketebilir veya bellek sızıntılarına neden olabilir. Sisteminizi güncel tutmak performansı artırır;
sudo apt update && sudo apt upgrade
Otomatik İzleme: Cron + Loglama
RAM kullanımını düzenli olarak loglamak isterseniz cron
ile otomatikleştirebilirsiniz;
crontab -e
Aşağıdaki satırı ekleyin (her 5 dakikada bir kaydeder):
*/5 * * * * ps -eo pid,cmd,%mem --sort=-%mem | head -n 11 >> /var/log/mem_usage.log
Sunucu veya kurumsal sistemlerde belleği daha profesyonelce izlemek için şu araçlara göz atabilirsiniz:
- Prometheus + Grafana: Gerçek zamanlı metrik toplama ve görselleştirme
- Zabbix: Ağ ve sistem izleme için kapsamlı bir araç
- Netdata: Hızlı kurulumlu, gerçek zamanlı analizler sunar