系統管理者必須維護他們伺服器的健康運作。其中一個重要的部分就是記憶體。當伺服器記憶體使用率過高時,它會降低伺服器的性能。Linux有一個稱為 free 的工具,來監控記憶體使用率。
free 指令是什麼
free 指令是一個顯示系統中空閑和已用記憶體大小的工具。free 指令的輸出和 top 指令相似。大多數Linux發行版已經含有 free 指令。
如何運作 free
想要運作,隻需在控制台輸入free 即可。不帶選項運作會顯示一個以KB為機關的預設輸出。
$ free
從上面的截圖我們看到:

記憶體 (以KB計)
■Total(全部) : 1026740
■Used(已用) : 843396
■Free(可用) : 183344
■Shared(共享) : 0
■Buffers(塊裝置緩存區) : 52704
■Cached(檔案緩存) : 376384
buffers是指用來給塊裝置做的緩沖大小,他隻記錄檔案系統的metadata以及 tracking in-flight pages.
cached是用來給檔案做緩沖。
那就是說:buffers是用來存儲,目錄裡面有什麼内容,權限等等。而cached直接用來記憶我們打開的檔案
Swap (以KB計)
■Total(全部) : 1045500
■Used(已用) : 3376
■Free(可用) : 1042124
當你看見 buffer/cache 的空閑空間低或者 swap 的空閑空間低,說明記憶體需要更新了。這意味這記憶體使用率很高。請注意 shared(共享)記憶體列應該被忽略 ,因為它已經被廢棄了。
以其它單元顯示記憶體資訊
如我們先前提到的,預設 free 會以 KB 為機關顯示資訊。free 同樣提供給我們 b (B), -k (KB), -m (MB), -g (GB) and –tera (TB)這些機關。要顯示我們想要的機關,隻要選擇一個并在 free 後面跟上。下面一個是以 MB 為機關的輸出樣例。
$ free -m
這個技巧同樣适用于-b, -k, -g 以及 –tera 選項。
以适于人類可讀方式顯示記憶體資訊
free 同樣提供了-h選項,這意味着适于人類可讀(譯注:系統上可能并不存在-h選項,已被-m取代)。那麼這與其它的選項有什麼不同呢,如-m(MB)選項? 可見的最大不同是-h選項會在數字後面加上适于人類可讀的機關。讓我們看一個例子。
$ free -h
如我們一起看到的,在1,0數字後這裡是G(GB)字母。當數字并沒有達到GB時,free足夠聰明來知道并在每個數字後面跟上合适的機關。後面的M - 數字929告訴我們它有929MB(譯注: 原文為929 number tell us its 969 Megabytes,這裡應該為輸入錯誤)。
間隔顯示 free
作為一個狀态檢查工具,最好的統計記憶體使用率的方法是使用延遲間隔。這麼做的話,我們可以使用-s選項後面跟上我們想要間隔的N秒數。我們可以在後面合并幾個選項來使輸出滿足我們的需求。假如我們想要每3秒統計一次記憶體使用率并且适于人類可讀,那麼就像這樣做:
$ free -hs 3
顯示高低記憶體使用率
如果我們想要知道高低記憶體統計,我們可以使用-l選項。下面是一個例子。
$ free -l
顯示 Linux 全部記憶體
如果我們需要每列的總計資訊,我們可以在 free 指令後面跟上 -t 選項。這會在字底部額外加入一行顯示。
$ free -t
總結
除了vmstat以外,free 指令也是一個用于統計記憶體使用率的簡單統計工具。用這個你可以快速檢視你的 Linux 記憶體資訊。free 指令使用 /proc/meminfo 作為基準來顯示記憶體使用率資訊。如往常一樣,你可以在控制台下輸入 man free來擷取更多關于 free 的資訊。