系統(tǒng)管理員必須維護他們服務(wù)器的健康運行。其中一個重要的部分就是內(nèi)存。當(dāng)服務(wù)器內(nèi)存使用率過高時,它會降低服務(wù)器的性能。Linux有一個稱為 free 的工具,來監(jiān)控內(nèi)存使用率。
free 命令是什么
free 命令是一個顯示系統(tǒng)中空閑和已用內(nèi)存大小的工具。free 命令的輸出和 top 命令相似。大多數(shù)Linux發(fā)行版已經(jīng)含有 free 命令。
如何運行 free
想要運行,只需在控制臺輸入free 即可。不帶選項運行會顯示一個以KB為單位的默認(rèn)輸出。
$ free
從上面的截圖我們看到:
內(nèi)存 (以KB計)
■Total(全部) : 1026740
■Used(已用) : 843396
■Free(可用) : 183344
■Shared(共享) : 0
■Buffers(塊設(shè)備緩存區(qū)) : 52704
■Cached(文件緩存) : 376384
buffers是指用來給塊設(shè)備做的緩沖大小,他只記錄文件系統(tǒng)的metadata以及 tracking in-flight pages.
cached是用來給文件做緩沖。
那就是說:buffers是用來存儲,目錄里面有什么內(nèi)容,權(quán)限等等。而cached直接用來記憶我們打開的文件
Swap (以KB計)
■Total(全部) : 1045500
■Used(已用) : 3376
■Free(可用) : 1042124
當(dāng)你看見 buffer/cache 的空閑空間低或者 swap 的空閑空間低,說明內(nèi)存需要升級了。這意味這內(nèi)存利用率很高。請注意 shared(共享)內(nèi)存列應(yīng)該被忽略 ,因為它已經(jīng)被廢棄了。
以其它單元顯示內(nèi)存信息
如我們先前提到的,默認(rèn) free 會以 KB 為單位顯示信息。free 同樣提供給我們 b (B), -k (KB), -m (MB), -g (GB) and –tera (TB)這些單位。要顯示我們想要的單位,只要選擇一個并在 free 后面跟上。下面一個是以 MB 為單位的輸出樣例。
$ free -m
這個技巧同樣適用于-b, -k, -g 以及 –tera 選項。
以適于人類可讀方式顯示內(nèi)存信息
free 同樣提供了-h選項,這意味著適于人類可讀(譯注:系統(tǒng)上可能并不存在-h選項,已被-m取代)。那么這與其它的選項有什么不同呢,如-m(MB)選項? 可見的最大不同是-h選項會在數(shù)字后面加上適于人類可讀的單位。讓我們看一個例子。
$ free -h
如我們一起看到的,在1,0數(shù)字后這里是G(GB)字母。當(dāng)數(shù)字并沒有達(dá)到GB時,free足夠聰明來知道并在每個數(shù)字后面跟上合適的單位。后面的M - 數(shù)字929告訴我們它有929MB(譯注: 原文為929 number tell us its 969 Megabytes,這里應(yīng)該為輸入錯誤)。
間隔顯示 free
作為一個狀態(tài)檢查工具,最好的統(tǒng)計內(nèi)存利用率的方法是使用延遲間隔。這么做的話,我們可以使用-s選項后面跟上我們想要間隔的N秒數(shù)。我們可以在后面合并幾個選項來使輸出滿足我們的需求。假如我們想要每3秒統(tǒng)計一次內(nèi)存利用率并且適于人類可讀,那么就像這樣做:
$ free -hs 3
顯示高低內(nèi)存利用率
如果我們想要知道高低內(nèi)存統(tǒng)計,我們可以使用-l選項。下面是一個例子。
$ free -l
顯示 Linux 全部內(nèi)存
如果我們需要每列的總計信息,我們可以在 free 命令后面跟上 -t 選項。這會在字底部額外加入一行顯示。
$ free -t
總結(jié)
除了vmstat以外,free 命令也是一個用于統(tǒng)計內(nèi)存利用率的簡單統(tǒng)計工具。用這個你可以快速查看你的 Linux 內(nèi)存信息。free 命令使用 /proc/meminfo 作為基準(zhǔn)來顯示內(nèi)存利用率信息。如往常一樣,你可以在控制臺下輸入 man free來獲取更多關(guān)于 free 的信息。