語法選項
-b:以Byte為單位顯示內存使用情況; -k:以KB為單位顯示內存使用情況; -m:以MB為單位顯示內存使用情況; -o:不顯示緩沖區調節列; -s<間隔秒數>:持續觀察內存使用狀況; -t:顯示內存總和列; -V:顯示版本信息。
free -m
[root@localhost ~]# free -m total used free shared buffers cached Mem: 7869 7651 218 1 191 5081 -/+ buffers/cache: 2378 5490 Swap: 478 139 339
1,2表示1,2行的內容
total1:表示物理,內存總量
used1:總計分配給緩存(包含Buffer和cache)使用的數量,但其中可能部分緩存並未實際使用
free1:未被分配的內存
shared1:共享內存,一般系統不會用到,這里也不討論
buffers1:系統分配但未被使用的buffers數量
cached1:系統分配但未被使用的cache數量
used2:實際使用的buffers和cache總量,也是實際使用的內存總量
free2:未被使用的Buffers和cache和未被分配的內存之和,這就是系統當前實際可用內存。
如下公式:
total1=used1(buffers1+cached1+used2)+free1 7869=7651(191+5081+2378)+218
total1=used2+free2(buffers1+cached1+free1) 7869=2378+5490(191+5081+218)
buffer和cache也是內存的一部分,如果需要,可以釋放這2部分的內存
pagecache和buffercache的區別:
pagecache實際上是針對文件系統的,是文件的緩存,在文件上的數據會緩存到pagecahce,文件的邏輯層需要映射到實際的物理磁盤,這種映射關系由文件系統來完成,當pagecache中的數據需要刷新時,pagecache中的數據交給buffercache。但這種處理在2.6版本內核之后就變得簡單了,沒有真正意義的cache操作。
buffercache是針對磁盤塊的緩存,也就是在沒有文件系統的情況下,直接對磁盤操作的數據會緩存到buffercache中,如:文件系統的元數據都會緩存到buffercache中。簡單來說,
pagecache用來緩存文件數據,buffercache用來緩存磁盤數據。在有文件系統的情況下,對文件操作,數據會緩存到pagecache。若直接采用dd工具對磁盤進行讀寫,那么數據會
緩存到buffercache。