天天看點

free

free 指令就是檢視linux記憶體使用的常用指令

free的常用參數:

-m 以M為機關檢視記憶體使用情況

-b 以位元組為機關檢視記憶體使用情況

-s 可以再指定時間段不間斷監控記憶體情況

 Mem:表示實體記憶體統計

-/+ buffers/cached:表示實體記憶體的緩存統計

Swap:表示硬碟上交換分區的使用情況,

第1行  Mem:

total:表示實體記憶體總量。

used:表示總計配置設定給緩存(包含buffers 與cache )使用的數量,但其中可能部分緩存并未實際使用。

free:未被配置設定的記憶體。

shared:共享記憶體,一般系統不會用到,這裡也不讨論。

buffers:系統配置設定但未被使用的buffers 數量。

cached:系統配置設定但未被使用的cache 數量。

total = used + free   

第2行   -/+ buffers/cached:

used:也就是第一行中的used - buffers-cached   也是實際使用的記憶體總量。

free:未被使用的buffers 與cached 和未被配置設定的記憶體之和,這就是系統目前實際可用記憶體=free+buffers+cached。

因為buffers和cached是系統為了提高性能申請的記憶體數,實際上當應用程式需要此功能時,是可以使用這些記憶體的,是以對應用程式來說,這些記憶體也是可以使用的。

清理記憶體方法

sync

echo 3 > /proc/sys/vm/drop_caches

Buffer和Cache的差別

buffer(緩沖)是為了提高記憶體和硬碟(或其他I/O裝置)之間的資料交換的速度而設計的。 

cache(緩存)是為了提高cpu和記憶體之間的資料交換速度而設計的,也就是平常見到的一級緩存、二級緩存、三級緩存。 cpu在執行程式所用的指令和讀資料都是針對記憶體的,也就是從記憶體中取得的。由于記憶體讀寫速度慢,為了提高cpu和記憶體之間資料交換的速度,在cpu和記憶體之間增加了cache,它的速度比記憶體快,但是造價高,又由于在cpu内不能內建太多內建電路,是以一般cache比較小,以後intel等公司為了進一步提高速度,又增加了二級cache,甚至三級cache,它是根據程式的局部性原理而設計的,就是cpu執行的指令和通路的資料往往在集中的某一塊,是以把這塊内容放入cache後,cpu就不用在通路記憶體了,這就提高了通路速度。當然若cache中沒有cpu所需要的内容,還是要通路記憶體的。

緩沖(buffers)是根據磁盤的讀寫設計的,把分散的寫操作集中進行,減少磁盤碎片和硬碟的反複尋道,進而提高系統性能。linux有一個守護程序定期清空緩沖内容(即寫入磁盤),也可以通過sync指令手動清空緩沖。

簡單來說,buffer是即将要被寫入磁盤的,而cache是被從磁盤中讀出來的。 buffer是由各種程序配置設定的,被用在如輸入隊列等方面。一個簡單的例子如某個程序要求有多個字段讀入,在所有字段被讀入完整之前,程序把先前讀入的字段放在buffer中儲存。

cache經常被用在磁盤的I/O請求上,如果有多個程序都要通路某個檔案,于是該檔案便被做成cache以友善下次被通路,這樣可提高系統性能。

本文轉自歲月丶傾城部落格51CTO部落格,原文連結http://blog.51cto.com/alca0126/1582689如需轉載請自行聯系原作者

laihuadongcto

繼續閱讀