最近在看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等等

都能在内核中找到对应生成代码,从这些代码入手分析内核内存管理会更加容易。


GitHub 加速计划 / li / linux-dash
10.39 K
1.2 K
下载
A beautiful web dashboard for Linux
最近提交(Master分支:2 个月前 )
186a802e added ecosystem file for PM2 4 年前
5def40a3 Add host customization support for the NodeJS version 4 年前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐