Linux 系统 /proc/meminfo 中的 DirectMap2M / DirectMap4k 是什么意思?
这和内核内存管理相关,我理解不深不细,试答。DirectMap2M / DirectMap4k指直接映射(direct mapping)的内存大小,从代码上来看,这两个值记录管理页表占用的内存(页表本身占用的内存的映射规则应是简单的)。由此可猜测,这两个值不会怎么变化的。稍细些…
这和内核内存管理相关,我理解不深不细,试答。 DirectMap2M / DirectMap4k指直接映射(direct mapping)的内存大小,从代码上来看,这两个值记录管理页表占用的内存(页表本身占用的内存的映射规则应是简单的)。 由此可猜测,这两个值不会怎么变化的。 稍细些说,/proc/meminfo对应的代码在fs/proc/meminfo.c中。DirectMap2M / DirectMap4k在arch_report_meminfo()中输出,这个函数位于arch/x86/mm/pageattr.c中,这个文件里维护了数组direct_pages_count,用来统计直接映射的内存大小,数组有三档,PG_LEVEL_4K、2M和1G。跟踪下去可知在phys_pte_init之类的地方会更新这个数组。