英文原文: https://www.linuxatemyram.com/
做者: Vidar Holen
譯者: thinkamhtml
Linux正借用你未使用的內存來作磁盤緩存。這使你的計算機看起來可用內存不多,但事實不是這樣!一切都很正常!linux
磁盤緩存使你的系統運行更快更流暢!除了使新手感到困惑,這沒什麼缺點。它歷來沒有以任何方式從你的應用拿走內存。git
若是你的應用想要獲取更多的內存,系統會從磁盤緩存中拿走一塊被借用的內存。磁盤緩存會當即還給應用!你的計算機可用內存的並很多!github
不須要,磁盤緩存僅會借用應用目前不須要的內存。它不會使用交換分區。若是應用須要更多的內存,系統會從磁盤緩存中拿回來。系統不會使用交換分區。緩存
你不能禁用磁盤緩存。任何人想要禁用磁盤緩存的惟一理由是他認爲這從他的應用中拿走了內存,但事實不是這樣!磁盤緩存可讓應用加載更快而且運行更加流暢,但它卻歷來沒有拿走內存!所以,沒有任何理由去禁用它!bash
top
和free
命令說我全部的內存已被使用?這僅僅是用辭的差別。你和Linux系統一致認爲被應用佔用的內存稱爲used
,而沒有被任何程序使用的部分稱爲free
。koa
可是,你認爲目前被佔用但仍然能夠被應用使用的內存稱做什麼呢?測試
你可能認爲這部份內存是free
或available
。而Linux系統稱它used
或available
:code
內存 | 你稱它 | Linux稱它 |
---|---|---|
被應用使用 | used |
used |
被佔用,但可使用 | free (或available ) |
used (或available ) |
沒有用來作任何事 | free |
free |
譯註:老版
free
命令中被佔用但可使用的內存稱爲used
(used
中的一部分,即buffers
+cached
), 而新版的free
命令中稱之爲available
。htm
不嚴格來說,top
和free
命令稱這部份內存爲buffers
和cached
。由於你和Linux用辭的差別,你可能認爲你的計算機可用內存不多,不過事實並不是如此。
譯註:這部份內存準確來講是新版本
free
命令中的available
或者是新版本top
命令中的avail Mem
。
爲了弄明白除了交換分區外你的應用可使用多少內存,執行free -m
命令,而後查看available
那一列:
$ free -m total used free shared buff/cache available Mem: 1504 1491 13 0 855 792 Swap: 2047 6 2041
(2016年以前的Linux安裝版本,在-/+ buffers/cache
那排查看free
列)
這是你以MB
爲單位的答案。若是你天真地查看used
和free
,你會認爲你的內存幾乎快佔滿達到99%,然而實際僅僅只有47%!
若是想查看更詳細、更專業的關於Linux統計available
內存大小的描述,請看the commit that added the field.
一個擁有足夠內存的、運行良好的Linux系統在運行一段時間後會表現出如下預期的無害特徵:
free
內存接近於0used
內存接近總共內存available
內存(或者是free + buffers/cache
)有足夠空間(好比說:總內存的20%以上)swap used
沒有發生變化真正的內存不夠、你也許想調查緣由的情形,警告標誌以下:
available
內存(或者是free + buffers/cache
)接近於0swap used
在增長或者波動dmesg | grep oom-killer
命令顯示OutOfMemory-killer
程序正在運行若是想了解更多細節和作實驗測試磁盤緩存的影響,請看這個頁面。我作了少許的工做只是想讓你感激磁盤緩存,而不是讓你測試你的硬件速度提高了幾個數量級。