cat /proc/meminfo 各字段詳解
/proc/meminfo是了解Linux系統內存使用狀況的主要接口,我們最常用的”free”、”vmstat”等命令就是通過它獲取數據的 ,/proc/meminfo所包含的信息比”free”等命令要豐富得多,因此需要了解這些字段的含義。
/ $ cat /proc/meminfo
MemTotal: 877368 kB :所有可用RAM大小(即物理內存減去一些預留位和內核的二進制代碼大小)
(HighTotal + LowTotal),系統從加電開始到引導完成,BIOS等要保留一些內存,內核要保留一些內存,
最后剩下可供系統支配的內存就是MemTotal。這個值在系統運行期間一般是固定不變的。MemFree: 22516 kB :LowFree與HighFree的總和,被系統留著未使用的內存,MemFree是說的系統層面
MemAvailable: 470244 kB :應用程序可用內存數。系統中有些內存雖然已被使用但是可以回收的,
比如cache/buffer、slab都有一部分可以回收,所以MemFree不能代表全部可用的內存,
這部分可回收的內存加上MemFree才是系統可用的內存,即:MemAvailable≈MemFree+Buffers+Cached,
它是內核使用特定的算法計算出來的,是一個估計,MemAvailable是說的應用程序層面Buffers: 1772 kB :用來給文件做緩沖大小
Cached: 459224 kB :被高速緩沖存儲器(cache memory)用的內存的大小(等于 diskcache minus SwapCache )
SwapCached: 16 kB :被高速緩沖存儲器(cache memory)用的交換空間的大小,
已經被交換出來的內存,但仍然被存放在swapfile中。用來在需要的時候很快的被替換而不需要再次打開I/O端口Active: 333148 kB :在活躍使用中的緩沖或高速緩沖存儲器頁面文件的大小,
除非非常必要否則不會被移作他用. (Active(anon) + Active(file))Inactive: 330384 kB :在不經常使用中的緩沖或高速緩沖存儲器頁面文件的大小,
可能被用于其他途徑. (Inactive(anon) + Inactive(file))Active(anon): 104368 kB :活躍的與文件無關的內存(比如進程的堆棧,用malloc申請的內存)
(anonymous pages),anonymous pages在發生換頁時,是對交換區進行讀/寫操作
Inactive(anon): 104508 kB :非活躍的與文件無關的內存(比如進程的堆棧,用malloc申請的內存)
Active(file): 228780 kB :活躍的與文件關聯的內存(比如程序文件、數據文件所對應的內存頁)
(file-backed pages) File-backed pages在發生換頁(page-in或page-out)時,是從它對應的文件讀入或寫出
Inactive(file): 225876 kB :非活躍的與文件關聯的內存(比如程序文件、數據文件所對應的內存頁)
Unevictable: 6708 kB :
Mlocked: 1428 kB :
HighTotal: 261888 kB :高位內存總大小(Highmem是指所有內存高于860MB的物理內存,Highmem區域供用戶程序使用,
或用于頁面緩存。該區域不是直接映射到內核空間。內核必須使用不同的手法使用該段內存)HighFree: 5680 kB :未被使用的高位內存大小
LowTotal: 615480 kB :低位內存總大小,低位可以達到高位內存一樣的作用,而且它還能夠被內核用來記錄一些自己的數據結構
LowFree: 16836 kB :未被使用的低位大小
SwapTotal: 614396 kB :交換空間的總大小
SwapFree: 611044 kB :未被使用交換空間的大小
Dirty: 40 kB :等待被寫回到磁盤的內存大小
Writeback: 0 kB :正在被寫回到磁盤的內存大小
AnonPages: 209224 kB :未映射頁的內存大小
Mapped: 280668 kB :設備和文件等映射的大小
Shmem: 1084 kB :
Slab: 59840 kB :內核數據結構緩存的大小,可以減少申請和釋放內存帶來的消耗
SReclaimable: 34196 kB :可收回Slab的大小
SUnreclaim: 25644 kB :不可收回Slab的大小(SUnreclaim+SReclaimable=Slab)
KernelStack: 7504 kB :常駐內存,每一個用戶線程都會分配一個kernel stack(內核棧)
PageTables: 15508 kB :管理內存分頁頁面的索引表的大小
NFS_Unstable: 0 kB :不穩定頁表的大小
Bounce: 0 kB :
WritebackTmp: 0 kB :
CommitLimit: 1053080 kB :根據超額分配比率('vm.overcommit_ratio'),
這是當前在系統上分配可用的內存總量,這個限制只是在模式2('vm.overcommit_memory')時啟用。CommitLimit用以下公式計算:CommitLimit =('vm.overcommit_ratio'*物理內存)+交換
例如,在具有1G物理RAM和7G swap的系統上,當`vm.overcommit_ratio` = 30時 CommitLimit =7.3GCommitted_AS: 16368536 kB :目前在系統上分配的內存量。
是所有進程申請的內存的總和,即時所有申請的內存沒有被完全使用,
例如一個進程申請了1G內存,僅僅使用了300M,但是這1G內存的申請已經被 "committed"給了VM虛擬機,進程可以在任何時間使用。
如果限制在模式2('vm.overcommit_memory')時啟用,分配超出CommitLimit內存將不被允許VmallocTotal: 245760 kB :可以vmalloc虛擬內存大小
VmallocUsed: 0 kB :vmalloc已使用的虛擬內存大小
VmallocChunk: 0 kB :最大的連續未被使用的vmalloc區域
free
/ $ free -htotal used free shared buff/cache available
Mem: 94Gi 29Gi 9.2Gi 1.0Mi 55Gi 63Gi
Swap: 63Gi 11Gi 52Gi總內存 (Mem: total): 94GiB
已用內存 (Mem: used): 29GiB
空閑內存 (Mem: free): 9.2GiB
共享內存 (Mem: shared): 1.0MiB
緩存/緩沖區使用的內存 (buff/cache): 55GiB
可用內存 (available): 63GiB
總交換空間 (Swap: total): 63GiB
已用交換空間 (Swap: used): 11GiB
空閑交換空間 (Swap: free): 52GiB
參考:
https://blog.csdn.net/qq_42139745/article/details/127302222