linux下使用free命令查看實(shí)際內(nèi)存占用(可用內(nèi)存)

linux下在終端環(huán)境下可以使用free命令看到系統(tǒng)實(shí)際使用內(nèi)存的情況,一般用free -m方式查看內(nèi)存占用情況(兆為單位)辈讶。而系統(tǒng)實(shí)際可用內(nèi)存是不是free部分呢命浴,不是的,系統(tǒng)實(shí)際內(nèi)存占用以及可用內(nèi)存有如下幾個(gè)加減法:

used=total-free??total=used+free

實(shí)際內(nèi)存占用:used-buffers-cached?total-free-buffers-cached

實(shí)際可用內(nèi)存:buffers+cached+free

?????????????????? total?????? used?????? free???? shared??? buffers???? cached

Mem:??????????? 128??????? 119????????? ?8????????? 0??????????? 1?????????????? 22

-/+ buffers/cache:????????95????????? 32

swap:????????? 255????????? ??0??????? ?255


第1行Mem數(shù)據(jù):

total 內(nèi)存總數(shù): 128

used 已經(jīng)使用的內(nèi)存數(shù): 119

free 空閑的內(nèi)存數(shù): 8

shared 當(dāng)前已經(jīng)廢棄不用贱除,總是0

buffers Buffer Cache內(nèi)存數(shù): 1

cached Page Cache內(nèi)存數(shù): 22

第2行-/+ buffers/cache:

-buffers/cache 的內(nèi)存數(shù):95 (等于第1行的 used - buffers - cached)

+buffers/cache 的內(nèi)存數(shù): 32 (等于第1行的 free + buffers + cached)

可見-buffers/cache反映的是被程序?qū)崒?shí)在在吃掉的內(nèi)存生闲,而+buffers/cache反映的是可以挪用的內(nèi)存總數(shù)。

第三行數(shù)據(jù)是交換分區(qū)SWAP的勘伺,也就是我們通常所說的虛擬內(nèi)存跪腹。

為了提高磁盤存取效率, Linux做了一些精心的設(shè)計(jì), 除了對(duì)dentry進(jìn)行緩存(用于VFS,加速文件路徑名到inode的轉(zhuǎn)換), 還采取了兩種主要Cache方式:Buffer Cache和Page Cache。前者針對(duì)磁盤塊的讀寫飞醉,后者針對(duì)文件inode的讀寫冲茸。這些Cache有效縮短了 I/O系統(tǒng)調(diào)用(比如read,write,getdents)的時(shí)間屯阀。

感興趣的可以進(jìn)一步參考文件/proc/meminfo,free命令就是根據(jù)它的信息生成的轴术。free命令的源碼可從procps-xxx-.src.rpm獲取难衰,xxx為版本號(hào),比如procps-3.2.3-5.3.src.rpm逗栽。


系統(tǒng)管理員必須維護(hù)他們服務(wù)器的健康運(yùn)行盖袭。其中一個(gè)重要的部分就是內(nèi)存。當(dāng)服務(wù)器內(nèi)存使用率過高時(shí)彼宠,它會(huì)降低服務(wù)器的性能鳄虱。Linux有一個(gè)稱為free的工具,來監(jiān)控內(nèi)存使用率凭峡。

free 命令是什么

free命令是一個(gè)顯示系統(tǒng)中空閑和已用內(nèi)存大小的工具拙已。free 命令的輸出和 top 命令相似。大多數(shù)Linux發(fā)行版已經(jīng)含有 free 命令摧冀。

如何運(yùn)行 free

想要運(yùn)行倍踪,只需在控制臺(tái)輸入free即可。不帶選項(xiàng)運(yùn)行會(huì)顯示一個(gè)以KB為單位的默認(rèn)輸出索昂。

$ free

從上面的截圖我們看到:

內(nèi)存 (以KB計(jì))

Total(全部) : 1026740

Used(已用) : 843396

Free(可用) : 183344

Shared(共享) : 0

Buffers(塊設(shè)備緩存區(qū)) : 52704

Cached(文件緩存) : 376384

譯注:關(guān)于Buffers和Cached的區(qū)別建车,來自http://www.taobaotesting.com/blogs/qa?bid=2265的一段解釋如下:

buffers是指用來給塊設(shè)備做的緩沖大小,他只記錄文件系統(tǒng)的metadata以及 tracking in-flight pages.

cached是用來給文件做緩沖椒惨。

那就是說:buffers是用來存儲(chǔ)缤至,目錄里面有什么內(nèi)容,權(quán)限等等框产。而cached直接用來記憶我們打開的文件

Swap (以KB計(jì))

Total(全部) : 1045500

Used(已用) : 3376

Free(可用) : 1042124

當(dāng)你看見 buffer/cache 的空閑空間低或者 swap 的空閑空間低凄杯,說明內(nèi)存需要升級(jí)了。這意味這內(nèi)存利用率很高秉宿。請(qǐng)注意shared(共享)內(nèi)存列應(yīng)該被忽略戒突,因?yàn)樗呀?jīng)被廢棄了。

以其它單元顯示內(nèi)存信息

如我們先前提到的描睦,默認(rèn) free 會(huì)以 KB 為單位顯示信息膊存。free 同樣提供給我們b (B), -k (KB), -m (MB), -g (GB) and –tera (TB)這些單位。要顯示我們想要的單位忱叭,只要選擇一個(gè)并在 free 后面跟上隔崎。下面一個(gè)是以 MB 為單位的輸出樣例。

$ free -m

這個(gè)技巧同樣適用于-b, -k, -g以及–tera選項(xiàng)韵丑。

以適于人類可讀方式顯示內(nèi)存信息

free 同樣提供了-h選項(xiàng)爵卒,這意味著適于人類可讀(譯注:系統(tǒng)上可能并不存在-h選項(xiàng),已被-m取代)撵彻。那么這與其它的選項(xiàng)有什么不同呢钓株,如-m(MB)選項(xiàng)实牡? 可見的最大不同是-h選項(xiàng)會(huì)在數(shù)字后面加上適于人類可讀的單位。讓我們看一個(gè)例子轴合。

$ free -h

如我們一起看到的创坞,在1,0數(shù)字后這里是G(GB)字母。當(dāng)數(shù)字并沒有達(dá)到GB時(shí)受葛,free足夠聰明來知道并在每個(gè)數(shù)字后面跟上合適的單位题涨。后面的M- 數(shù)字929告訴我們它有929MB(譯注: 原文為929 number tell us its 969 Megabytes,這里應(yīng)該為輸入錯(cuò)誤)总滩。

間隔顯示 free

作為一個(gè)狀態(tài)檢查工具纲堵,最好的統(tǒng)計(jì)內(nèi)存利用率的方法是使用延遲間隔。這么做的話咳秉,我們可以使用-s選項(xiàng)后面跟上我們想要間隔的N秒數(shù)婉支。我們可以在后面合并幾個(gè)選項(xiàng)來使輸出滿足我們的需求。假如我們想要每3秒統(tǒng)計(jì)一次內(nèi)存利用率并且適于人類可讀澜建,那么就像這樣做:

$ free -hs 3

顯示高低內(nèi)存利用率

如果我們想要知道高低內(nèi)存統(tǒng)計(jì),我們可以使用-l選項(xiàng)蝌以。下面是一個(gè)例子炕舵。

$ free -l

顯示 Linux 全部內(nèi)存

如果我們需要每列的總計(jì)信息,我們可以在 free 命令后面跟上-t選項(xiàng)跟畅。這會(huì)在字底部額外加入一行顯示咽筋。

$ free -t

總結(jié)

除了vmstat以外,free 命令也是一個(gè)用于統(tǒng)計(jì)內(nèi)存利用率的簡單統(tǒng)計(jì)工具徊件。用這個(gè)你可以快速查看你的 Linux 內(nèi)存信息奸攻。free 命令使用/proc/meminfo作為基準(zhǔn)來顯示內(nèi)存利用率信息。如往常一樣虱痕,你可以在控制臺(tái)下輸入man free來獲取更多關(guān)于 free 的信息睹耐。




前段時(shí)間有個(gè)項(xiàng)目的用C寫的,性能測(cè)試時(shí)發(fā)現(xiàn)內(nèi)存泄露問題部翘。關(guān)于怎么觀察內(nèi)存使用問題硝训,free是很好用的一個(gè)命令。

bash-3.00$ free

total?????? used?????? free???? shared??? buffers???? cached

Mem:?????? 1572988??? 1509260????? 63728????????? 0????? 62800???? 277888

-/+ buffers/cache:??? 1168572???? 404416

Swap:????? 2096472????? 16628??? 2079844


Mem:表示物理內(nèi)存統(tǒng)計(jì)

-/+ buffers/cached:表示物理內(nèi)存的緩存統(tǒng)計(jì)

Swap:表示硬盤上交換分區(qū)的使用情況新思,這里我們不去關(guān)心窖梁。

系統(tǒng)的總物理內(nèi)存:255268Kb(256M),但系統(tǒng)當(dāng)前真正可用的內(nèi)存b并不是第一行free 標(biāo)記的 16936Kb夹囚,它僅代表未被分配的內(nèi)存纵刘。

第1行 Mem:?total:表示物理內(nèi)存總量。

used:表示總計(jì)分配給緩存(包含buffers 與cache )使用的數(shù)量荸哟,但其中可能部分緩存并未實(shí)際使用假哎。

free:未被分配的內(nèi)存瞬捕。

shared:共享內(nèi)存,一般系統(tǒng)不會(huì)用到位谋,這里也不討論山析。

buffers:系統(tǒng)分配但未被使用的buffers 數(shù)量。

cached:系統(tǒng)分配但未被使用的cache 數(shù)量掏父。buffer 與cache 的區(qū)別見后面笋轨。?total = used + free?第2行 -/+ buffers/cached:?used:也就是第一行中的used - buffers-cached 也是實(shí)際使用的內(nèi)存總量。

free:未被使用的buffers 與cache 和未被分配的內(nèi)存之和赊淑,這就是系統(tǒng)當(dāng)前實(shí)際可用內(nèi)存爵政。?free 2= buffers1 + cached1 + free1 //free2為第二行、buffers1等為第一行

buffer 與cache 的區(qū)別

A buffer is something that has yet to be “written” to disk.?A cache is something that has been “read” from the disk and stored for later use?第3行:?第三行所指的是從應(yīng)用程序角度來看陶缺,對(duì)于應(yīng)用程序來說钾挟,buffers/cached 是等于可用的,因?yàn)閎uffer/cached是為了提高文件讀取的性能饱岸,當(dāng)應(yīng)用程序需在用到內(nèi)存的時(shí)候掺出,buffer/cached會(huì)很快地被回收。

所以從應(yīng)用程序的角度來說苫费,可用內(nèi)存=系統(tǒng)free memory+buffers+cached.

接下來解釋什么時(shí)候內(nèi)存會(huì)被交換汤锨,以及按什么方交換。

當(dāng)可用內(nèi)存少于額定值的時(shí)候百框,就會(huì)開會(huì)進(jìn)行交換.

如何看額定值(RHEL4.0):

#cat /proc/meminfo

交換將通過三個(gè)途徑來減少系統(tǒng)中使用的物理頁面的個(gè)數(shù):

1.減少緩沖與頁面cache的大小闲礼,

2.將系統(tǒng)V類型的內(nèi)存頁面交換出去,

3.換出或者丟棄頁面铐维。(Application 占用的內(nèi)存頁柬泽,也就是物理內(nèi)存不足)。

事實(shí)上嫁蛇,少量地使用swap是不是影響到系統(tǒng)性能的锨并。

下面是buffers與cached的區(qū)別。

buffers是指用來給塊設(shè)備做的緩沖大小棠众,他只記錄文件系統(tǒng)的metadata以及 tracking in-flight pages.

cached是用來給文件做緩沖琳疏。

那就是說:buffers是用來存儲(chǔ),目錄里面有什么內(nèi)容闸拿,權(quán)限等等空盼。

而cached直接用來記憶我們打開的文件,如果你想知道他是不是真的生效新荤,你可以試一下揽趾,先后執(zhí)行兩次命令#man X ,你就可以明顯的感覺到第二次的開打的速度快很多。

實(shí)驗(yàn):在一臺(tái)沒有什么應(yīng)用的機(jī)器上做會(huì)看得比較明顯苛骨。記得實(shí)驗(yàn)只能做一次篱瞎,如果想多做請(qǐng)換一個(gè)文件名苟呐。

#free

#man X

#free

#man X

#free

你可以先后比較一下free后顯示buffers的大小。

另一個(gè)實(shí)驗(yàn):

#free

#ls /dev

#free

你比較一下兩個(gè)的大小俐筋,當(dāng)然這個(gè)buffers隨時(shí)都在增加牵素,但你有l(wèi)s過的話,增加的速度會(huì)變得快澄者,這個(gè)就是buffers/chached的區(qū)別笆呆。

因?yàn)長inux將你暫時(shí)不使用的內(nèi)存作為文件和數(shù)據(jù)緩存,以提高系統(tǒng)性能粱挡,當(dāng)你需要這些內(nèi)存時(shí)赠幕,系統(tǒng)會(huì)自動(dòng)釋放(不像windows那樣,即使你有很多空閑內(nèi)存,他也要訪問一下磁盤中的pagefiles)

使用free命令

將used的值減去 ? buffer和cache的值就是你當(dāng)前真實(shí)內(nèi)存使用?————–?對(duì)操作系統(tǒng)來講是Mem的參數(shù).buffers/cached 都是屬于被使用,所以它認(rèn)為free只有16936.

對(duì)應(yīng)用程序來講是(-/+ buffers/cach).buffers/cached 是等同可用的询筏,因?yàn)閎uffer/cached是為了提高?程序執(zhí)行的性能榕堰,當(dāng)程序使用內(nèi)存時(shí),buffer/cached會(huì)很快地被使用嫌套。?所以,以應(yīng)用來看看,以(-/+ buffers/cache)的free和used為主.所以我們看這個(gè)就好了.另外告訴大家?一些常識(shí).Linux為了提高磁盤和內(nèi)存存取效率, Linux做了很多精心的設(shè)計(jì), 除了對(duì)dentry進(jìn)行緩存(用于?VFS,加速文件路徑名到inode的轉(zhuǎn)換), 還采取了兩種主要Cache方式:Buffer Cache和Page Cache逆屡。?前者針對(duì)磁盤塊的讀寫,后者針對(duì)文件inode的讀寫踱讨。這些Cache能有效縮短了 I/O系統(tǒng)調(diào)用(比如read,write,getdents)的時(shí)間康二。記住內(nèi)存是拿來用的,不是拿來看的.不象windows,無論你的真實(shí)物理內(nèi)存有多少,他都要拿硬盤交換?文件來讀.這也就是windows為什么常常提示虛擬空間不足的原因.你們想想,多無聊,在內(nèi)存還有大部分?的時(shí)候,拿出一部分硬盤空間來充當(dāng)內(nèi)存.硬盤怎么會(huì)快過內(nèi)存.所以我們看linux,只要不用swap的交換?空間,就不用擔(dān)心自己的內(nèi)存太少.如果常常swap用很多,可能你就要考慮加物理內(nèi)存了.這也是linux看?內(nèi)存是否夠用的標(biāo)準(zhǔn)哦.

https://www.cnblogs.com/pengdonglin137/p/3315124.html

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市勇蝙,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌挨约,老刑警劉巖味混,帶你破解...
    沈念sama閱讀 217,277評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異诫惭,居然都是意外死亡翁锡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門夕土,熙熙樓的掌柜王于貴愁眉苦臉地迎上來馆衔,“玉大人,你說我怎么就攤上這事怨绣〗抢#” “怎么了?”我有些...
    開封第一講書人閱讀 163,624評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵篮撑,是天一觀的道長减细。 經(jīng)常有香客問我,道長赢笨,這世上最難降的妖魔是什么未蝌? 我笑而不...
    開封第一講書人閱讀 58,356評(píng)論 1 293
  • 正文 為了忘掉前任驮吱,我火速辦了婚禮,結(jié)果婚禮上萧吠,老公的妹妹穿的比我還像新娘左冬。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,402評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著阵幸,像睡著了一般鸥拧。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上球恤,一...
    開封第一講書人閱讀 51,292評(píng)論 1 301
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼皂岔。 笑死,一個(gè)胖子當(dāng)著我的面吹牛展姐,可吹牛的內(nèi)容都是我干的躁垛。 我是一名探鬼主播,決...
    沈念sama閱讀 40,135評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼圾笨,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼教馆!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起擂达,我...
    開封第一講書人閱讀 38,992評(píng)論 0 275
  • 序言:老撾萬榮一對(duì)情侶失蹤土铺,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后板鬓,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體悲敷,經(jīng)...
    沈念sama閱讀 45,429評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,636評(píng)論 3 334
  • 正文 我和宋清朗相戀三年俭令,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了后德。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,785評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡抄腔,死狀恐怖瓢湃,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情赫蛇,我是刑警寧澤绵患,帶...
    沈念sama閱讀 35,492評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站棍掐,受9級(jí)特大地震影響藏雏,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,092評(píng)論 3 328
  • 文/蒙蒙 一掘殴、第九天 我趴在偏房一處隱蔽的房頂上張望赚瘦。 院中可真熱鬧,春花似錦奏寨、人聲如沸起意。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽揽咕。三九已至,卻和暖如春套菜,著一層夾襖步出監(jiān)牢的瞬間亲善,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評(píng)論 1 269
  • 我被黑心中介騙來泰國打工逗柴, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留蛹头,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,891評(píng)論 2 370
  • 正文 我出身青樓戏溺,卻偏偏與公主長得像渣蜗,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子旷祸,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,713評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容