【Linux】Linux 的快取記憶體
Linux與Win的記憶體管理不同,linux會盡量快取記憶體以提高讀寫效能,通常叫做Cache Memory。通常使用free 命令檢視記憶體的使用時,free 的值往往比較小!檢視系統的 /proc/meminfo 檔案,值Cached 就是快取記憶體。
[root@rac3 ~]# cat /proc/meminfo
MemTotal: 4044784 kB
MemFree: 303340 kB
Buffers: 58196 kB
Cached: 3287252 kB
SwapCached: 27792 kB
Active: 1611588 kB
Inactive: 2021116 kB
HighTotal: 0 kB
HighFree: 0 kB
LowTotal: 4044784 kB
LowFree: 303340 kB
SwapTotal: 4192956 kB
SwapFree: 3652160 kB
Dirty: 16 kB
Writeback: 0 kB
AnonPages: 259492 kB
Mapped: 480964 kB
Slab: 62224 kB
PageTables: 23276 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
CommitLimit: 6215348 kB
Committed_AS: 2194196 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 264968 kB
VmallocChunk: 34359472887 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
Hugepagesize: 2048 kB
使用free 命令檢視記憶體:
[root@rac3 ~]# free
total used free shared buffers cached
Mem: 4044784 3740080 304704 0 56744 3286972
-/+ buffers/cache: 396364 3648420
Swap: 4192956 540900 3652056
其中第一行用全域性角度描述系統使用的記憶體狀況:
total 總實體記憶體 !
used 已使用記憶體,一般情況這個值會比較大,因為這個值包括了cache+應用程式使用的記憶體 即是used=buffers+cached
free 完全未被使用的記憶體
shared 應用程式共享記憶體
buffers 快取,主要用於目錄方面,inode值等(ls大目錄可看到這個值增加)
cached 快取,用於已開啟的檔案!
第二行描述應用程式的記憶體使用:
-/+ buffers/cache: 396364 3648420
-buffers/cache 396364 前個值表示應用程式使用的記憶體大小,used減去快取值 即:-buffers/cache=used-buffers-cached
+buffers/cache 3648420 後個值表示所有可供應用程式使用的記憶體大小,free加上快取值 即: +buffers/cache=free+buffers+cached
第三行表示swap的使用:
used——已使用
free——未使用
執行free 命令的結果中,used數值偏大,free數值偏小,free的值總是比較小是因為每當操作檔案的時候,Linux都會盡可能的把檔案快取到記憶體裡,當再次訪問此資料的時候,可以直接從記憶體中取資料,避免磁碟操作!所以cached的數值非常的大,cache 部分記憶體是可回收的,作業系統會按照LRU演算法淘汰冷資料。buffers也是可回收的,buffers和cache的區別,“Cache和Buffer是兩個不同的概念,簡單的說,Cache是加速“讀”,而buffer是緩衝“寫”,前者解決讀的問題,儲存從磁碟上讀出的資料,後者是解決寫的問題,儲存即將要寫入到磁碟上的資料。”
參考文章
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22664653/viewspace-714330/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Linux手動釋放快取記憶體Linux快取記憶體
- Linux系統手動釋放記憶體快取Linux記憶體快取
- 獲取linux可用記憶體 剩餘記憶體Linux記憶體
- CPU快取記憶體快取記憶體
- Glide - 記憶體快取與磁碟快取IDE記憶體快取
- 獲取Linux 記憶體頁大小的命令Linux記憶體
- DDD 和 記憶體快取記憶體快取
- 記憶體快取選型記憶體快取
- 多核cpu、cpu快取記憶體、快取一致性協議、快取行、記憶體快取記憶體協議
- MRAM快取記憶體的組成快取記憶體
- Android記憶體優化之記憶體快取Android記憶體優化快取
- docker部署redis快取記憶體DockerRedis快取記憶體
- 談談CPU快取記憶體快取記憶體
- CPU快取和記憶體屏障快取記憶體
- django 快取表格到記憶體Django快取記憶體
- Java記憶體快取-通過Google Guava建立快取Java記憶體快取GoGuava
- 記憶體上的linux記憶體Linux
- linux的記憶體管理Linux記憶體
- Linux 記憶體管理:記憶體對映Linux記憶體
- 高效能記憶體快取 ristretto記憶體快取
- 清理linux記憶體Linux記憶體
- linux記憶體管理Linux記憶體
- LINUX 記憶體管理Linux記憶體
- linux共享記憶體Linux記憶體
- ASP.NET Core - 快取之記憶體快取(上)ASP.NET快取記憶體
- ASP.NET Core - 快取之記憶體快取(下)ASP.NET快取記憶體
- Linux共享記憶體的管理Linux記憶體
- Linux中的記憶體管理Linux記憶體
- linux記憶體管理(一)實體記憶體的組織和記憶體分配Linux記憶體
- Java記憶體快取-通過Map定製簡單快取Java記憶體快取
- iOS開發之記憶體與快取iOS記憶體快取
- 建立快取記憶體機制-java版快取記憶體Java
- 記憶體資料庫快取介紹記憶體資料庫快取
- Linux記憶體使用的體會(轉)Linux記憶體
- Linux 虛擬記憶體Linux記憶體
- Linux共享記憶體(二)Linux記憶體
- Linux 使用記憶體分析Linux記憶體
- linux記憶體機制Linux記憶體