Linux makinalarda genelde işlemler komut satırları ile gerçekleştirilmektedir, çünkü makina üzerinde GUI her zaman mevcut olmayabilir. Çoğunlukla da sunucular üzerinde çalışırken yalnızca terminal erişimi sağlanmaktadır ve her şeyin komutlar üzerinden gerçekleştirilmesi gerekir. Bu yüzden makalemizde Linux sistemine ait bellek kullanımını kontrol etmek için kullanılabilecek komutları kontrol edeceğiz. Bellek, RAM ve Swap bilgilerini içerir.
Kaynakların yetersiz kalmaması ve kullanıcıların sunucuya erişebilmesi için, sunucularda işlem başına bellek kullanımını ve kullanılan belleği kontrol etmek genellikle önemlidir. Örneğin bir web sitesiniz var ve bu siteyi bir web sunucusu üzerinde çalıştırıyorsanız, sunucunun site ziyaretçilerine sorunsuz hizmet edebilmesi için yeterli belleğe sahip olması gerekmektedir. Aksi takdirde, bellek yetersiz kalıp trafik artışı olduğunda site çok yavaşlayabilir hatta siteniz çökebilir. Tıpkı masaüstü bilgisayarlarda karşılaşılan mavi ekranlar gibi ekranlarla karşılaşılabilirsiniz.
Şimdi bellek kontrolünde kullanılan beş önemli komutu detaylı şekilde madde madde inceleyelim.
free komutu
free komutu, Linux üzerindeki bellek kullanımını kontrol etmek için kullanılan kullanımı en basit bir komuttur. Aşağıda komut kullanımı şu şekildedir;
root@yazilimdersi: free -m
total used free shared buffers cached
Mem: 7976 6459 1517 0 865 2248
-/+ buffers/cache: 3344 4631
Swap: 1951 0 1951
-m parametresi, tüm verileri MB cinsinden görüntülemede kullanılır. Sistemde yüklü olan toplam RAM miktarı 7976 MB yani 8GBdir. used sütununda, Linux tarafından kullanılan RAM miktarını (6.4 GB) civarında göstermektedir. Komut sonucu akan veri oldukça açıklayıcı aslında. İkinci satırda bulunan 4,6 GB'nin kullanılabilir olduğunu göstermektedir.
Linux işletim sistemi doğal yapısında herseyi cacheleyip daha performanslı bir kullanıma yönelik çalışmaktadır. İhtiyac olmadığı durumda cache üzerinden verilerin silinmesi de otomatik olarak işletim sistemi tarafından gerçeklenmektedir.
Son satır, bu durumda tamamen free olan swap bellektir.
/proc/meminfo komutu
Bellek kullanımını kontrol etmenin bir başka yoluda /proc/meminfo dosyasını okumaktır. /proc dosya sisteminde gerçek dosyalar içermediğini bilin. Daha çok core ve sistem hakkında dinamik bilgiler içeren sanal dosyalardan oluşmaktadır.
root@yazilimdersi: cat /proc/meminfo MemTotal: 8167848 kB MemFree: 1409696 kB Buffers: 961452 kB Cached: 2347236 kB SwapCached: 0 kB Active: 3124752 kB Inactive: 2781308 kB Active(anon): 2603376 kB Inactive(anon): 309056 kB Active(file): 521376 kB Inactive(file): 2472252 kB Unevictable: 5864 kB Mlocked: 5880 kB SwapTotal: 1998844 kB SwapFree: 1998844 kB Dirty: 7180 kB Writeback: 0 kB AnonPages: 2603272 kB Mapped: 788380 kB Shmem: 311596 kB Slab: 200468 kB SReclaimable: 151760 kB SUnreclaim: 48708 kB KernelStack: 6488 kB PageTables: 78592 kB NFS_Unstable: 0 kB Bounce: 0 kB WritebackTmp: 0 kB CommitLimit: 6082768 kB Committed_AS: 9397536 kB VmallocTotal: 34359738 kB VmallocUsed: 420204 kB VmallocChunk: 34359311 kB HardwareCorrupted: 0 kB AnonHugePages: 0 kB HugePages_Total: 0 HugePages_Free: 0 HugePages_Rsvd: 0 HugePages_Surp: 0 Hugepagesize: 2048 kB DirectMap4k: 62464 kB DirectMap2M: 8316928 kB
MemTotal, MemFree, Buffers, Cached, SwapTotal, SwapFree alanlarına dikkat ederseniz free komutunda listelenen verilerle aynıdır. Bu komutta daha fazla bilgi verilmektedir.
vmstat komutu
s parametresi ile kullanılan vmstat komutu, proc komutuna çok benzer şekilde bellek kullanım istatistiklerini göstermektedir.
root@yazilimdersi: vmstat -s
8167848 K total memory
7449376 K used memory
3423872 K active memory
3140312 K inactive memory
718472 K free memory
1154464 K buffer memory
2422876 K swap cache
1998844 K total swap
0 K used swap
1998844 K free swap
392650 non-nice user cpu ticks
8073 nice user cpu ticks
83959 system cpu ticks
10448341 idle cpu ticks
91904 IO-wait cpu ticks
0 IRQ cpu ticks
2189 softirq cpu ticks
0 stolen cpu ticks
2042603 pages paged in
2614057 pages paged out
0 pages swapped in
0 pages swapped out
42301605 interrupts
94581566 CPU context switches
1382755972 boot time
8567 forks
Üstteki birkaç satır toplam belleği, boş belleği vb. kullanışlı verileri gösterir.
top komutu
top komutu, genellikle işlem başına bellek ve CPU kullanımını kontrol etmek için kullanılır. Bununla birlikte, toplam bellek kullanımını da rapor eder ve toplam RAM kullanımını izlemek için kullanılır. Komut çıktısında bulunan header alanı sonuca yönelik detaylı bilgileri içermektedir.
root@yazilimdersi: top top - 15:20:30 up 6:57, 5 users, load average: 0.64, 0.44, 0.33 Tasks: 265 total, 1 running, 263 sleeping, 0 stopped, 1 zombie %Cpu(s): 7.8 us, 2.4 sy, 0.0 ni, 88.9 id, 0.9 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem: 8167848 total, 6642360 used, 1525488 free, 1026876 buffers KiB Swap: 1998844 total, 0 used, 1998844 free, 2138148 cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 2986 enlighte 20 0 584m 42m 26m S 14.3 0.5 0:44.27 yakuake 1305 root 20 0 448m 68m 39m S 5.0 0.9 3:33.98 Xorg 7701 enlighte 20 0 424m 17m 10m S 4.0 0.2 0:00.12 kio_thumbnail
Komut çıktısında başlıktaki KiB Mem ve KiB Swap satırlarını görebilirsiniz. Hafızanın toplam, kullanılan ve boş miktarlarını gösterirler. Arabellek ve önbellek bilgileri, free komut gibi burada da mevcuttur.
htop komutu
top komutuna benzer şekilde, htop komutu da çeşitli diğer ayrıntılarla birlikte bellek kullanımını göstermektedir.

Üstteki alanda RAM ile birlikte Cpu kullanımını ve buna karşılık gelen swap kullanımını göstermektedir.
Böylelikle bellek kontrolünde kullanabileceğimiz en basit ve kullanışlı komutları gözden geçirmiş olduk. Burada önemli olan bu verilerin periyodik olarak sunucularınızda kontrol edilmesi ve gerektiği anda aksiyon alınmasıdır. Çünkü sunucularda bellekten kaynaklı herhangi bir sorun ile karşılaşıldığı anda sistemin çökmesi olası durumlardandır.