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的性能,從低速的塊裝置上讀取的資料會暫時儲存在記憶體中,即使資料在當時已經不再需要了,但在應用程式下一次通路該資料時,它可以從記憶體中直接讀取,進而繞開低速的塊裝置,進而提高系統的整體性能。