间接的以及引用的链接(这个
http://linuxperf.com/?p=97 )里还是说了一些的。
比如你贴的这个数据:
Active: 1308168 kB = Active(anon): 1010416 kB + Active(file): 297752 kB
然后 Active(anon) 表示 anonymous pages,Active(file)表示 file-backed pages
inactive 同理
详细参考原文,这里做一下零碎的摘抄:
它们的含义在 manpage 中只给了简单的说明,并未详细解释:
inact: the amount of inactive memory. (-a option)
active: the amount of active memory. (-a option)
fs/proc/meminfo.c:
==================
0023 static int meminfo_proc_show(struct seq_file *m, void *v)
0024 {
...
0032 unsigned long pages[NR_LRU_LISTS];
...
0051 for (lru = LRU_BASE; lru < NR_LRU_LISTS; lru++)
0052 pages[lru] = global_page_state(NR_LRU_BASE + lru);
...
0095 "Active: %8lu kB\n"
0096 "Inactive: %8lu kB\n"
0097 "Active(anon): %8lu kB\n"
0098 "Inactive(anon): %8lu kB\n"
0099 "Active(file): %8lu kB\n"
0100 "Inactive(file): %8lu kB\n"
...
0148 K(pages[LRU_ACTIVE_ANON] + pages[LRU_ACTIVE_FILE]),
0149 K(pages[LRU_INACTIVE_ANON] + pages[LRU_INACTIVE_FILE]),
0150 K(pages[LRU_ACTIVE_ANON]),
0151 K(pages[LRU_INACTIVE_ANON]),
0152 K(pages[LRU_ACTIVE_FILE]),
0153 K(pages[LRU_INACTIVE_FILE]),
...
这段代码的意思是统计所有的 LRU list,其中 Active Memory 等于 ACTIVE_ANON 与 ACTIVE_FILE 之和,Inactive Memory 等于 INACTIVE_ANON 与 INACTIVE_FILE 之和
Active/inactive memory 是针对用户进程所占用的内存而言的,内核占用的内存(包括 slab )不在其中。
ACTIVE_ANON 和 ACTIVE_FILE,分别表示 anonymous pages 和 file-backed pages。用户进程的内存页分为两种:与文件关联的内存(比如程序文件、数据文件所对应的内存页)和与文件无关的内存(比如进程的堆栈,用 malloc 申请的内存),前者称为 file-backed pages,后者称为 anonymous pages。File-backed pages 在发生换页(page-in 或 page-out)时,是从它对应的文件读入或写出; anonymous pages 在发生换页时,是对交换区进行读 /写操作。