从proc目录下的zoneinfo认识Linux内存管理
最近在看Linux内核内存管理,从head.S汇编到main.c一路过来。最好发现有一本书:深入理解Linux虚拟内存管理
可惜书上的介绍的内核是Linux 2.4和2.6,我现在的代码都3.4了,稍微有一些差别。不过作为参考,对分析内存管理
有很大的帮助。
看的过程,发现proc目录下很多有用的接口:
/ # cat /proc/zoneinfo
[ 37.543024] Dean kernel/fork.c 1155 copy_process
[ 37.548415] Dean pid=121 tpid=121 name=sh
Node 0, zone Normal
pages free 56749
min 501
low 626
high 751
scanned 0
spanned 65536
present 62976
nr_free_pages 56749
nr_inactive_anon 0
nr_active_anon 67
nr_inactive_file 1837
nr_active_file 235
nr_unevictable 0
nr_mlock 0
nr_anon_pages 74
nr_mapped 282
nr_file_pages 2072
nr_dirty 0
nr_writeback 0
nr_slab_reclaimable 324
nr_slab_unreclaimable 645
nr_page_table_pages 17
nr_kernel_stack 57
nr_unstable 0
nr_bounce 0
nr_vmscan_write 0
nr_vmscan_immediate_reclaim 0
nr_writeback_temp 0
nr_isolated_anon 0
nr_isolated_file 0
nr_shmem 0
nr_dirtied 0
nr_written 0
nr_anon_transparent_hugepages 0
protection: (0, 0)
pagesets
cpu: 0
count: 50
high: 90
batch: 15
all_unreclaimable: 0
start_pfn: 262144
inactive_ratio: 1
还有这些:vmallocinfo 、vmstat、pagetypeinfo、slabinfo、stat、meminfo等等
都能在内核中找到对应生成代码,从这些代码入手分析内核内存管理会更加容易。
更多推荐
所有评论(0)