Linux

vmstat 從哪裡獲得“已用記憶體”統計資訊?

  • November 30, 2016

如果您執行vmstat -s,它會顯示有關您的系統的統計資訊。我想知道它是如何計算used memory統計數據的(在下面突出顯示)。這不是我可以在 中找到的統計數據/proc/meminfo

user@machine:# vmstat -s
     7483816 K total memory
     **4740624 K used memory**
     3619096 K active memory
      800388 K inactive memory
     2743192 K free memory
      220624 K buffer memory
     1989008 K swap cache
      901116 K total swap
           0 K used swap
      901116 K free swap *snip*

如何vmstat獲取這些數據?

vmstat``/proc/meminfo從和獲取虛擬記憶體統計/proc/vmstat資訊,並從 獲取處理器相關資訊/proc/stat

% strace -fe open vmstat -s
...
open("/proc/meminfo", O_RDONLY)         = 3
open("/proc/stat", O_RDONLY)            = 4
open("/proc/vmstat", O_RDONLY)          = 5
...

對於使用的記憶體,來自https://gitlab.com/procps-ng/procps/blob/master/proc/sysinfo.c#L772

if (mem_used < 0)     
 mem_used = kb_main_total - kb_main_free;   
kb_main_used = (unsigned long)mem_used;

引用自:https://unix.stackexchange.com/questions/327105