2018年2月10日 星期六

Linux memory usage 記憶體使用詳解



我們經常可以在Linux系統上看到一種情況,明明我沒跑什麼工作負載,剩餘的記憶體卻所剩無多,其實只是我們不了解Linux的記憶體管理方法而已。

一直以來我們習慣了Windows的工作管理員,會將記憶體的使用邏輯二分為已經佔用與剩餘可用記憶體,然後拿這個邏輯去檢視Linux的記憶體使用狀況,便會出現很大的落差,原因是因為在Linux的記憶體管理方法上,佔用的記憶體未必真的被佔用了,Linux經常在佔用的記憶體中規劃了一塊比較類似像快取或緩衝一樣空間,閒置在那邊,方便系統或應用程式存取,而不是真的被應用程式所使用。

那麼到底我還剩下多少Free的記憶體可以使用呢?我的機器負載狀況究竟如何?需不需要擴充記憶體?以下分別從CentOS6和CentOS7的free指令來做說明。




CentOS6
以free指令檢視記憶體使用情況
[root@centos6 ~]# free -m
              total       used       free     shared    buffers     cached
Mem:          3833       3634        199          0        235       3077
-/+ buffers/cache:        320       3513
Swap:         3967          4       3963
m參數代表是以megabyte來顯示,從第一行的Mem 開始解說:

total  3833 單位是megabyte,表示此Linux系統總共擁有約4GB的實體記憶體
used   3634 代表正在被Linux管理的記憶體空間有多少而不是佔用喔~
free    199 代表Linux壓根就沒接觸到、沒管理到的記憶體(絕對閒置)
shared    0 類似Remdisk的一種空間,也是Linux用來加速工作效率的一種方法
buffers 235 Linux快取的一種方式,buffers所規劃的記憶體空間
cached 3077 Linux快取的一種方式,cache所規劃的記憶體空間

第二行-/+ buffers/cache 解說:
used    320
代表真正被應用程式所佔用的記憶體空間,其總和為第一行的used-buffers-cached
free   3513
代表你真正可用的剩餘記憶體,其總和為第一行的buffers+cached+free

第三行Swap 解說:
total  3967
代表你建置Linux時所設置的虛擬記憶體總共空間
used      4
代表已經使用了多少虛擬記憶體,此數值過大通常代表你真正剩餘可用的實體記憶體可能要不夠用了

所以請不要再誤會囉!used只是代表被Linux管理的記憶體空間大小,快取空間的配置並不代表它被佔用了,真正剩餘可用的記憶體還是要參照上面紅字的部分!




CentOS7
以free指令檢視記憶體使用情況
[root@centos7 ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:           7822        2731         241         422        4850        4340
Swap:          3967         173        3794
m參數代表是以megabyte來顯示,從第一行的Mem 開始解說:

total      7822 單位是megabyte,表示此Linux系統總共擁有約8GB的實體記憶體
used       2731 這裡跟CentOS6的定義又不一樣了,這次真的是被佔用的記憶體啦
free        241 代表Linux壓根就沒接觸到、沒管理到的記憶體(絕對閒置)
shared      422 類似Remdisk的一種空間,也是Linux用來加速工作效率的一種方法
buff/cache 4850 buffers+cache,Linux所分配的快取空間大小
available  4340 這裡顯示的是你真正可用的剩餘記憶體


第二行Swap 解說:
total  3967
代表你建置Linux時所設置的虛擬記憶體總共空間
used    173
代表已經使用了多少虛擬記憶體,此數值過大通常代表你真正剩餘可用的實體記憶體可能要不夠用了


總的來說,對於一位系統管理員真正要注意的數字就是上面被標示為紅字的數值,也就是Linux系統真正剩餘可用的記憶體空間,當空間不足的時候,便是要加機器或擴充記憶體的時候囉!

0 意見: