Linux 中的 free 命令,會輸出:
total 總量
used 已使用
free 空閑
shared 共享內存
buffers
cached
前面四項都比較好理解,一看我也就知道啥意思了。但是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的性能,從低速的塊設備上讀取的數據會暫時保存在內存中,即使數據在當時已經不再需要了,但在應用程序下一次訪問該數據時,它可以從內存中直接讀取,從而繞開低速的塊設備,從而提高系統的整體性能。
