Linux 中的 free 命令,會輸出:緩存
total 總量性能
used 已使用操作系統
free 空閒設計
shared 共享內存內存
buffers it
cachedsed
前面四項都比較好理解,一看我也就知道啥意思了。可是buffer 和 cached 我就一直不很理解,終於看到某篇文章寫的很詳細,因而記下來;程序
·A buffer is something that has yet to be "written" to disk. ---buffer 寫緩存,數據存儲時,先保存到磁盤緩衝區,而後再寫入到永久空間數據
·A cache is something that has been "reed" from the disk adn stored for later use. --cache 讀緩存,數據從磁盤讀出後,暫留在緩衝區,預備程序接下來的使用,英文
英文好點的,應該已經看出了端倪,
buffer 用於存放要輸出到磁盤的數據,而cache是從磁盤讀出存放到內存中待從此使用的數據。它們的引入均是爲了提供IO的性能。
內存:從用戶和操做系統的角度來看,其大小空間是有區別的。像buffer/cached的內存,因爲這塊內存從操做系統的角度確實被使用,但若是用戶要使用,這塊內存是能夠很快被回收而被用戶空間程序使用,所以從用戶角度而言這塊內存應被劃爲空閒狀態。
爲何Linux 會有這種機制呢?
其實這是一種很是優秀的設計,目的就是爲了提高磁盤IO的性能,從低速的塊設備上讀取的數據會暫時保存在內存中,即便數據在當時已經再也不須要了,但在應用程序下一次訪問該數據時,它能夠從內存中直接讀取,從而繞開低速的塊設備,從而提升系統的總體性能。