一、free 命令的選項
使用 free 命令查看服務器內存使用狀況。
free [-b|-k|-m|-g|-h] [-l] [-o] [-t] [-s delay] [-c count] [-V]
(1)-b,-k,-m,-g 表示輸出顯示的單位爲 bytes, KB, MB, or GB,不添加選項的話默認以 KB 爲單位顯示
(2)-h 以人類可讀的方式顯示,即後邊會自動帶上單位
(3)-l 顯示詳細的低內存和高內存統計信息(增長了 Low 和High 這兩行顯示)
(4)-o 使用舊的格式顯示(不顯示 -/+buffers/cache 這一行)
(5)-t 增長顯示 Total 行,Total = Mem + Swap
(6)-s delay 每 delay 秒重複打印一次,delay 爲具體的秒數
(7)-c count 重複打印 count 次後退出,count 爲具體的次數。須要配合 -s delay 使用
(8)-V 顯示版本信息node
二、free命令顯示結果
如下是咱們測試環境的參數:linux
[root@bigdata zw]# free -m total used free shared buffers cached Mem: 32107 30414 1692 0 1962 8489 -/+ buffers/cache: 19962 12144 Swap: 0 0 0
第一行Mem,表示物理內存統計:
(1)total 物理內存總量,total = used + free
(2)used 總計分配給緩存(包含 buffers 與 cache)使用的數量,但其中可能部分緩存並未實際使用
(3)free 未被分配的內存
(4)shared 共享內存,通常系統不會用到,老是0
(5)buffers 系統分配但未被使用的 buffers 數量
(6)cached 系統分配但未被使用的 cache 數量
第二行-/+ buffers/cache:
(1)used 實際使用內存,等於第一行的 used - buffers - cached
(2)free 實際可用內存,等於第一行的 free + buffers + cached
第三行Swap表示交換區的使用狀況,也就是咱們一般所說的虛擬內存。
(1)total 總量
(2)used 使用
(3)free 空閒windows
三、linux的緩存設計
(1)Linux內存管理作了不少精心的設計,除了對dentry進行緩存(用於VFS,加速文件路徑名到inode的轉換),還採起了兩種主要Cache方式:Buffer Cache 和 Page Cache,目的就是爲了提高磁盤IO的性能。
即 buffer (Buffer Cache) 用於存放要輸出到磁盤的數據,而 cache(Page Cache) 是從磁盤讀出存放到內存中等待之後使用的數據。它們的引入都是爲了提高IO的性能。
(2)從低速的塊設備(硬盤)上讀取數據會暫時保存在內存中,即便數據在當時已經再也不須要了,但在應用程序下一次訪問該數據時,它能夠從內存中直接讀取,從而繞開低速的塊設備(硬盤),從而提升系統的總體性能。
Linux會充分利用這些空閒的內存,設計思想是內存空閒還不如拿來多緩存一些數據,等下次程序再次訪問這些數據速度就快了。
(3)若是程序要使用內存而系統中內存又不足時,這時不是使用交換分區,而是快速回收部分緩存,將它們留給用戶程序使用。
所以,能夠看出,buffers/cached真是百益而無一害,真正的壞處可能讓用戶產生一種錯覺——Linux耗內存!其實否則,Linux並無吃掉你的內存,只要還未使用到交換分區,你的內存所剩無幾時,你應該感到高興,由於Linux緩存了大量的數據,也許下一次你就訪問的是這些緩存數據。
windows系統內存是軟件用多少給多少。而linux是你有多少物理內存,我所有用,正在運行的軟件佔用的活動內存以外,其他空閒內存基本都被用來預加載了一些其餘系統或者應用數據。這樣你打開軟件的時候纔會很快。
內存閒着就是浪費,不如多放點數據,指不定下次須要訪問的數據就可以直接從內存得到而不用訪問很慢的硬盤。必定程度上說,linux和mac流暢度比windows好,這個佔很重要一部分緣由。緩存