Linux Terminalden Ram - Bellek - Swap Değerlerine Bakmak

Terminalden kolayca kontrol edebileceğimiz bir komut olan;
free komutunu inceleyeceğiz. Opsiyon olarak top ve htop komutlarına da değineceğiz.

Free

free komutu, sistemdeki bellek kullanımı hakkında farklı formatlarda bilgi verebilen bir Unix komutudur. Başta fiziksel ve swap bellek değerleri olmak üzere mevcut sistem anında kullanılan, kullanılmayan ve diğer ayrılmış bellek değerlerini de gösterir.

Not: free komutunu parametresiz bir şekilde kullandığımızda ilgili bellek değerlerini varsayılan olarak kibibayt (kibibyte) cinsinden gösterecektir.

$ free veya free -k veya free --kibi

volkan@Volkan:~$ free
              total        used        free      shared  buff/cache   available
Mem:       16222540     4056152     9249576      125128     2916812    11733644
Swap:       7906300           0     7906300
free veya free -k veya free --kibi

Gördüğümüz değerlerin ne olduklarından kısaca bahsedelim;

  • Mem: Fiziksel bellek değerini gösterecektir.
  • Swap: Diskte ram kullanımı için ayrılmış değeri gösterecektir. Fiziksel bellek dolduğu zaman aktif olmayan page'ler ram'den swap alanına taşınır.
  • Total: Sistemde olan bellek miktarını gösterecektir.
  • Used: Sistemde ne kadar miktar bellek kullanıldığını gösterecektir.
  • Free: Ne kadar miktar belleğin herhangi bir işlem için kullanılmadığını gösterecektir.
  • Shared: Paylaşılan bellek miktarını gösterir. Kısaca açıklamak gerekirse, birden fazla işlemin (process) aynı belleği kullanması olarak düşünebiliriz.
  • Buff/Cache: Buffers, kernel bufferları tarafından kullanılan bellek miktarını. Cache ise page cache ve slab'lar tarafından kullanılan bellek miktarını gösterir.
  • Available: Tahmini olarak ne kadar miktarda belleğin kullanılabilir olduğunu gösterecektir.

Free -h (Human Readable) Opsiyon


Genelde parametrik olarak en çok tercih edilen komuta bakalım. Human readable formatta görmek için Linux terminalde;

free -h veya free --human

volkan@Volkan:~$ free -h
              total        used        free      shared  buff/cache   available
Mem:           15Gi        10Gi       197Mi       218Mi       4,8Gi       4,5Gi
Swap:         7,5Gi        12Mi       7,5Gi
free -h

free -h kullanımında;

  • İlgili değerleri otomatik olarak en kısa gösterecek şekilde dönüştürür (GiB, MiB vs).
  • free -h --si parametresiyle bellek değerleri 10'luk tabandan gösterilebilir.
volkan@Volkan:~$ free -h --si
              total        used        free      shared  buff/cache   available
Mem:            15G         10G        175M        223M        4,9G        4,5G
Swap:          7,7G         12M        7,7G
free -h --si

2'lik ve 10'luk Tabandan Gösterimler

Bellek değerlerini, Kikibyte veya Kilobyte - Mebibyte veya Megabayt gibi değerlerle gözlemeyebiliriz. Bunlar arasındaki fark basitçe;

  • Kikibyte veya Mebibyte 2'lik taban sistemi yani 2 katları şeklinde gösterilir.
  • Kilobyte veya Megabyte 10'luk taban sistemi yani 10 katları değeri bazında gösterilir.
  • 1 Kilobyte (KB) 1000 bayt iken, 1 KikiByte (KiB) 1024 bayttır.

Not: Benzer değerler şu şekilde devam eder.

Onluk Taban İkilik Taban
Kilobyte Kikibyte
Megabyte Mebibyte
Gigabyte Gibibyte
Terabayt Tebibyte
Petabyte Pebibyte

Örneğin, 8 GB ram değerleriyle bunları örnekleyelim;

  • 8096051 KiloByte (KB) ve 7906300 KibiByte (KiB) değerlerine eşittir.
  • 8096 MegaByte (MB) ve 7720 (MiB) değerlerine eşittir.

Diğer Opsiyon Parametreleri

KikiByte Cinsinden Gösterme

free, free -k veya free --kiki komutlarıyla gösterilebilir.

free -k
              total        used        free      shared  buff/cache   available
Mem:       16222540    11103248      344768      208400     4774524     4577916
Swap:       7906300       32512     7873788
free veya free -k veya free --kiki

KiloByte Cinsinden Gösterme

free --kilo formatıyla gösterilir

free --kilo
              total        used        free      shared  buff/cache   available
Mem:       16611880    11386777      328843      210255     4896260     4673880
Swap:       8096051       33292     8062758
free --kilo

Mebibit Cinsinden Göstermek

free -m veya free --mebi komutlarıyla gösterilir.

free -m
              total        used        free      shared  buff/cache   available
Mem:          15842       10825         352         209        4664        4482
Swap:          7720          31        7689
free -m veya free --mebi

MegaByte Cinsinden Gösterme

free --mega komutuyla Megabyte (MB) cinsinden gösterilir.

free --mega
              total        used        free      shared  buff/cache   available
Mem:          16611       11347         374         218        4890        4705
Swap:          8096          33        8062
free --mega

Diğer Opsiyonlar şu şekilde kullanılabilir;

free [options]
-b,  --bytes         bytes olarak gösterir
     --kilo          kilobytes olarak gösterir
     --mega          megabytes olarak gösterir.
     --giga          gigabytes olarak gösterir.
     --tera          terabytes olarak gösterir.
     --peta          petabytes olarak gösterir.
 -k, --kibi          kibibytes olarak gösterir.
 -m, --mebi          mebibytes olarak gösterir.
 -g, --gibi          gibibytes olarak gösterir.
     --tebi          tebibytes olarak gösterir.
     --pebi          pebibytes olarak gösterir.

Bellek Değerlerini Aralıklarla Takip Etmek

free -s {Seconds}kullanımıyla {Seconds} alanı saniye parametresidir ve sayı değeri girilmelidir. Belirtilen saniye kadar sürede bir çalışacaktır.

Örnek olarak; 3 saniyede bir memory değerlerini mebibytes cinsinden görmek için;

free -m -s 3
              total        used        free      shared  buff/cache   available
Mem:          15842        5718        6208         221        3915        9584
Swap:          7720           0        7720

              total        used        free      shared  buff/cache   available
Mem:          15842        5835        6038         273        3968        9414
Swap:          7720           0        7720

              total        used        free      shared  buff/cache   available
Mem:          15842        6016        5794         322        4031        9184
Swap:          7720           0        7720

[5]+  Stopped                 free -m -s 3
free -m -s 3

Not: Process kill edilmediği sürece 3 saniyede bir göstermeye devam edecektir.

Bellek Değerlerini Kaç Defa Göstereceğini Belirtmek

free -c {Count}

Örnek olarak, free -m -c 2 komutu ile bellek değerlerini mebibyte cinsinden 2 defa göstermek isteyelim.

free -m -c 2
              total        used        free      shared  buff/cache   available
Mem:          15842        5485        6460         181        3896        9857
Swap:          7720           0        7720

              total        used        free      shared  buff/cache   available
Mem:          15842        5485        6460         181        3896        9857
Swap:          7720           0        7720
free -m -c 2

Bellek Değerlerini Aralıklı ve Belli Sayıda Görmek

free -s {Seconds} -c {Count}

Örnek olarak, free -h -s 5 -c 3 komutu ile bellek değerlerini human-readable formatta, 5 saniyede bir 3 defa göstermek isteyelim.

free -h -s 5 -c 3
              total        used        free      shared  buff/cache   available
Mem:           15Gi       5,4Gi       6,3Gi       181Mi       3,8Gi       9,6Gi
Swap:         7,5Gi          0B       7,5Gi

              total        used        free      shared  buff/cache   available
Mem:           15Gi       5,7Gi       5,8Gi       344Mi       4,0Gi       9,1Gi
Swap:         7,5Gi          0B       7,5Gi

              total        used        free      shared  buff/cache   available
Mem:           15Gi       6,1Gi       5,3Gi       458Mi       4,1Gi       8,6Gi
Swap:         7,5Gi          0B       7,5Gi
free -h -s 5 -c 3

Buff ve Cache Değerlerini Ayrı Göstermek

free -w veya free --wide komutu buffers ve cache'yi ayrı gösterir

free -h komutu ile buff/cache birleşik.

              total        used        free      shared  buff/cache   available
Mem:           15Gi       6,0Gi       5,5Gi       213Mi       4,0Gi       9,0Gi
Swap:         7,5Gi          0B       7,5Gi
free -h

free -h -w komutu ile buffers ve cache değerleri ayrı gösterilir.

free -h -w
              total        used        free      shared     buffers       cache   available
Mem:           15Gi       6,0Gi       5,5Gi       211Mi       434Mi       3,6Gi       9,0Gi
Swap:         7,5Gi          0B       7,5Gi
free -h -w veya free -hw

Free --help ile Diğer Kullanımlar

free --help komutu ile tüm kullanımlara dair açıklamalara bakılabilir.

free --help

Fiziksel ve Swap Değerlerini Beraber Görmek

free -t komutuyla toplam bellek miktarları gösterilir.

free -t -h komutu ile toplam bellek miktarlarını, human readable opsiyonla inceleyelim;

free -t -h
              total        used        free      shared  buff/cache   available
Mem:           15Gi       5,1Gi       6,1Gi       156Mi       4,2Gi       9,9Gi
Swap:         7,5Gi          0B       7,5Gi
Total:         23Gi       5,1Gi        13Gi
free -t -h veya free -th

Diğer Alternatif Komutlar

1- top

top komutu ile free komutunda olduğu gibi bellek değerlerini gözlemlemenin yanında, CPU ve hangi işlemin (process) ne kadar kaynak tükettiğini de görmek mümkündür.

  • İlgili değerlerin Mebibyte cinsinden görüldüğünü görebiliriz.
  • İlgili processleri %MEM değerine göre sıralamak için "SHIFT + M" kullanılabilir.
  • Çalışan processler ve CPU'ya ait bilgileri de görmek mümkündür.

2- htop

htop komutu top komutuna göre çok daha gelişmiş bir tool.

htop

Not: Bu tool'u yüklemek gerekebilir.

  • İlgili değerler gibibytes değerleriyle gösterilir.
  • Mouse "click" kontrolleri yapılabilir (Sıralama, seçme vs)
  • İlgili processler'i %MEM değerine göre sıralamak için SHIFT + M kullanılabilir
  • Çalışan İşlemleri (Processleri) ve CPU değerlerini de görebiliriz.
  • F6'ya basıp, Sorted By seçenekleriyle sıralamalar yapılabilir.

3- Meminfo

cat /proc/meminfo komutu ile tüm bellek değerlerine bakılabilir.

cat /proc/meminfo 
MemTotal:       16222540 kB
MemFree:         6328656 kB
MemAvailable:   10317004 kB
Buffers:          501160 kB
Cached:          3771164 kB
SwapCached:            0 kB
Active:          1858928 kB
Inactive:        7222992 kB
Active(anon):      41724 kB
Inactive(anon):  4924252 kB
Active(file):    1817204 kB
Inactive(file):  2298740 kB
Unevictable:        8164 kB
Mlocked:              16 kB
SwapTotal:       7906300 kB
SwapFree:        7906300 kB
Dirty:              1172 kB
Writeback:             0 kB
AnonPages:       4817856 kB
Mapped:           899656 kB
Shmem:            164068 kB
KReclaimable:     209384 kB
Slab:             415968 kB
SReclaimable:     209384 kB
SUnreclaim:       206584 kB
KernelStack:       24256 kB
PageTables:        63524 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:    16017568 kB
Committed_AS:   19245960 kB
VmallocTotal:   34359738367 kB
VmallocUsed:       93812 kB
VmallocChunk:          0 kB
Percpu:             8480 kB
HardwareCorrupted:     0 kB
AnonHugePages:         0 kB
ShmemHugePages:        0 kB
ShmemPmdMapped:        0 kB
FileHugePages:         0 kB
FilePmdMapped:         0 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
Hugetlb:               0 kB
DirectMap4k:      694192 kB
DirectMap2M:    13819904 kB
DirectMap1G:     2097152 kB

Sonuç

Linux terminalden bellek değerlerini nasıl gözlemleyebileceğimizi gördük. En çok kullanılan komutlardan olan free, top ve htop komutlarına değindik. Meminfo dosyasına ulaşarak bu değerlerin nereden monitörlendiğini de görmüş olduk.

Kaynaklar

https://man7.org/linux/man-pages/man1/free.1.html