内存管理-3-相关文件节点汇总

基于msm-5.4 hqx+linux

一、proc目录下文件节点

1. zoneinfo

# cat /proc/zoneinfo
Node 0, zone   Normal
  per-node stats
      nr_inactive_anon 563
      nr_active_anon 94371
      nr_inactive_file 752132
      nr_active_file 89315
      nr_unevictable 839
      nr_slab_reclaimable 89974
      nr_slab_unreclaimable 69034
      nr_isolated_anon 0
      nr_isolated_file 0
      workingset_nodes 0
      workingset_refault 0
      workingset_activate 0
      workingset_restore 0
      workingset_nodereclaim 0
      nr_anon_pages 94059
      nr_mapped    303767
      nr_file_pages 843151
      nr_dirty     43
      nr_writeback 0
      nr_writeback_temp 0
      nr_shmem     1057
      nr_shmem_hugepages 0
      nr_shmem_pmdmapped 0
      nr_file_hugepages 0
      nr_file_pmdmapped 0
      nr_anon_transparent_hugepages 0
      nr_unstable  0
      nr_vmscan_write 0
      nr_vmscan_immediate_reclaim 0
      nr_dirtied   2350141
      nr_written   2266691
      nr_kernel_misc_reclaimable 21353
      nr_unreclaimable_pages 71455
  pages free     1598111
        min      3720
        low      20708
        high     24175
        spanned  8164351
        present  3560903
        managed  3467819
        protection: (0, 0)
      nr_free_pages 1598111
      nr_zone_inactive_anon 563
      nr_zone_active_anon 94371
      nr_zone_inactive_file 752132
      nr_zone_active_file 89315
      nr_zone_unevictable 839
      nr_zone_write_pending 43
      nr_mlock     839
      nr_page_table_pages 5518
      nr_kernel_stack 11520
      nr_shadow_call_stack_bytes 2953216
      nr_bounce    0
      nr_zspages   0
      nr_free_cma  0
  pagesets
    cpu: 0
              count: 282
              high:  378
              batch: 63
  vm stats threshold: 64
    cpu: 1
              count: 59
              high:  378
              batch: 63
    ...
  node_unreclaimable:  0
  start_pfn:           716033
Node 0, zone  Movable
  pages free     0
        min      0
        low      0
        high     0
        spanned  0
        present  0
        managed  0
        protection: (0, 0)


2. meminfo

# cat /proc/meminfo
MemTotal:       13871276 kB
MemFree:         6391120 kB
MemAvailable:    9939304 kB
Buffers:            4284 kB
Cached:          3367800 kB
SwapCached:            0 kB
Active:           734332 kB
Inactive:        3010276 kB
Active(anon):     377088 kB
Inactive(anon):     2248 kB
Active(file):     357244 kB
Inactive(file):  3008028 kB
Unevictable:        3356 kB
Mlocked:            3356 kB
SwapTotal:             0 kB
SwapFree:              0 kB
Dirty:               204 kB
Writeback:             0 kB
AnonPages:        375928 kB
Mapped:          1215188 kB
Shmem:              4224 kB
KReclaimable:     445276 kB
Slab:             637184 kB
SReclaimable:     359864 kB
SUnreclaim:       277320 kB
KernelStack:       11568 kB
ShadowCallStack:    2896 kB
PageTables:        22068 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:     6935636 kB
Committed_AS:    6845840 kB
VmallocTotal:   262930368 kB
VmallocUsed:      211852 kB
VmallocChunk:          0 kB
Percpu:             7456 kB
CmaTotal:         147456 kB
CmaFree:               0 kB


3. slabinfo

# cat /proc/slabinfo
slabinfo - version: 2.1
# name            <active_objs> <num_objs> <objsize> <objperslab> <pagesperslab> : tunables <limit> <batchcount> <sharedfactor> : slabdata <active_slabs> <num_slabs> <sharedavail>
f2fs_xattr_entry-254:16      0     60    536   30    4 : tunables    0    0    0 : slabdata      2      2      0
dm_verity_fec_buffers      8     14   4384    7    8 : tunables    0    0    0 : slabdata      2      2      0
dm_bufio_buffer        1     33    488   33    4 : tunables    0    0    0 : slabdata      1      1      0
kmalloc-8k           227    229  24576    1    8 : tunables    0    0    0 : slabdata    229    229      0
...


4. vmallocinfo

# cat /proc/vmallocinfo
0xffffffc000000000-0xffffffc000002000    8192 bpf_jit_binary_alloc+0x80/0x1e8 pages=1 vmalloc
0xffffffc032400000-0xffffffc032800000 4194304 vm_map_ram
0xffffffc030348000-0xffffffc03034d000   20480 dup_task_struct+0x50/0x17c pages=4 vmalloc
...


5. vmstat

# cat /proc/vmstat
nr_free_pages 1599246
nr_zone_inactive_anon 513
nr_zone_active_anon 96895
nr_zone_inactive_file 747321
nr_zone_active_file 89321
nr_zone_unevictable 839
nr_zone_write_pending 59
nr_mlock 839
nr_page_table_pages 5557
nr_kernel_stack 11648
nr_shadow_call_stack_bytes 2981888
nr_bounce 0
nr_zspages 0
nr_free_cma 32
nr_inactive_anon 513
nr_active_anon 96895
nr_inactive_file 747321
nr_active_file 89321
nr_unevictable 839
nr_slab_reclaimable 89996
nr_slab_unreclaimable 69390
nr_isolated_anon 0
nr_isolated_file 0
workingset_nodes 0
workingset_refault 0
workingset_activate 0
workingset_restore 0
workingset_nodereclaim 0
nr_anon_pages 96560
nr_mapped 304048
nr_file_pages 838345
nr_dirty 59
nr_writeback 0
nr_writeback_temp 0
nr_shmem 1056
nr_shmem_hugepages 0
nr_shmem_pmdmapped 0
nr_file_hugepages 0
nr_file_pmdmapped 0
nr_anon_transparent_hugepages 0
nr_unstable 0
nr_vmscan_write 0
nr_vmscan_immediate_reclaim 0
nr_dirtied 2355404
nr_written 2271716
nr_kernel_misc_reclaimable 21353
nr_unreclaimable_pages 71455
nr_dirty_threshold 482225
nr_dirty_background_threshold 120114
pgpgin 1960296
pgpgout 9087060
pswpin 0
pswpout 0
pgalloc_normal 283316867
pgalloc_movable 0
allocstall_normal 0
allocstall_movable 0
pgskip_normal 0
pgskip_movable 0
pgfree 284920372
pgactivate 463049
pgdeactivate 19
pglazyfree 0
pgfault 350786657
pgmajfault 2443
pglazyfreed 0
pgrefill 0
pgsteal_kswapd 0
pgsteal_direct 0
pgscan_kswapd 0
pgscan_direct 0
pgscan_direct_throttle 0
pginodesteal 0
slabs_scanned 0
kswapd_inodesteal 0
kswapd_low_wmark_hit_quickly 0
kswapd_high_wmark_hit_quickly 0
pageoutrun 0
pgrotated 58
drop_pagecache 0
drop_slab 0
oom_kill 0
pgmigrate_success 0
pgmigrate_fail 0
compact_migrate_scanned 0
compact_free_scanned 0
compact_isolated 2112
compact_stall 0
compact_fail 0
compact_success 0
compact_daemon_wake 0
compact_daemon_migrate_scanned 0
compact_daemon_free_scanned 0
unevictable_pgs_culled 842
unevictable_pgs_scanned 0
unevictable_pgs_rescued 3
unevictable_pgs_mlocked 843
unevictable_pgs_munlocked 4
unevictable_pgs_cleared 0
unevictable_pgs_stranded 0
thp_fault_alloc 0
thp_fault_fallback 0
thp_collapse_alloc 0
thp_collapse_alloc_failed 0
thp_file_alloc 0
thp_file_mapped 0
thp_split_page 0
thp_split_page_failed 0
thp_deferred_split_page 0
thp_split_pmd 0
thp_zero_page_alloc 0
thp_zero_page_alloc_failed 0
thp_swpout 0
thp_swpout_fallback 0
swap_ra 0
swap_ra_hit 0


6. iomem

# cat /proc/iomem
1b032000-1b032fff : 1b032000.uart uart@1b032000
1c090000-1c090fff : 1c090000.virtio_console
088e5000-088e511f : 88e5000.hsphy hsusb_phy_base
1cd00000-1cdfffff : 1cd00000.virtio-i2c
aee46000-aee7ffff : reserved
12ec51000-22ec4efff : System RAM
...


7. ioports

cat为空


8. pagetypeinfo

# cat /proc/pagetypeinfo
Page block order: 10
Pages per block:  1024

Free pages count per migrate type at order       0      1      2      3      4      5      6      7      8      9     10
Node    0, zone   Normal, type    Unmovable     80   1097    120     60     22      4      2      2      1      0      0
Node    0, zone   Normal, type      Movable    553    561    600     94      4      2      0      4      1      1   1550
Node    0, zone   Normal, type  Reclaimable      0      1      0      3      1      1      0      1      0      0      0
Node    0, zone   Normal, type          CMA      0      0      0      0      0      0      0      0      0      0      0
Node    0, zone   Normal, type   HighAtomic      0      0      0      0      0      0      0      0      0      0      0
Node    0, zone   Normal, type      Isolate      0      0      0      0      0      0      0      0      0      0      0

Number of blocks type     Unmovable      Movable  Reclaimable          CMA   HighAtomic      Isolate
Node 0, zone   Normal         1027         2327           88           36            0            0

Number of mixed blocks    Unmovable      Movable  Reclaimable          CMA   HighAtomic      Isolate
Node 0, zone   Normal            0            0            1            0            0            0


9. partitions

# cat /proc/partitions
major minor  #blocks  name
   1        0       8192 ram0
   1        1       8192 ram1
 254        0   10485760 vda
 254       16   96466572 vdb
 252        0    5341724 dm-0
 252        1     346024 dm-1
 ......


10. kpagecgroup

cat显示乱码


11. kpagecount

cat显示乱码


12. kpageflags

cat显示乱码


13. swaps

# cat /proc/swaps
Filename                                Type            Size    Used    Priority  //啥内容也没有


14. pressure/memory

# cat /proc/pressure/memory
some avg10=0.00 avg60=0.00 avg300=0.00 total=0
full avg10=0.00 avg60=0.00 avg300=0.00 total=0


15. buddyinfo

# cat /proc/buddyinfo
Node 0, zone   Normal    193    831    335    114     26      4      1      3      0      0   2310

显示内容分别为各个区2^0--2^10个页面的物理内存块的个数。 

 

二、/proc/sys/vm目录下文件节点

1. admin_reserve_kbytes

可读可写,cat出来值为 8192。

作用:用于配置管理员保留的内存大小,以字节为单位。这些内存页不会被分配给普通用户。


2. block_dump

可读可写,cat出来值为 0。

作用:用于启用或禁用块设备操作的跟踪日志记录。设置一个非零值,可以打开block I/O调试。将记录块设备操作的详细信息到内核的日志缓冲区中,包括读取和写入操作。

启用 block_dump 可以帮助诊断和调试系统中的块设备问题。通过分析跟踪记录,可以确定块设备的访问模式、频率和性能瓶颈。这对于性能优化和故障排除可能非常有用。

注意,启用 block_dump 会产生大量的日志信息,可能会对系统性能产生负面影响。因此,建议仅在需要跟踪块设备操作时启用它。在Documentation/laptops/laptop-mode.txt可以查看更多关于block I/O调试的内容。


3. compact_memory

只可写。

该参数用于启用或禁用内存的同区压缩(memory compaction)。同区压缩是一种特定的内存管理策略,通过重新组织内存页来减少内存碎片化,提高内存利用率。
可能的取值为 0(表示禁用)或 1(表示启用)。用户可以通过修改这个参数来控制系统是否使用同区压缩来优化内存布局。


4. compact_unevictable_allowed

可读可写,cat出来值为 1。

这个参数用于配置是否允许压缩不可被驱逐的内存(unevictable memory)。不可被驱逐的内存是一种无法从内存中移除的内存,例如被锁定的内存或内核数据结构等。
设置为 1 表示允许压缩不可被驱逐的内存,设置为 0 则表示禁止压缩这部分内存。用户可以通过修改这个参数来调整系统对不可被驱逐内存的处理策略。


5. dirty_background_bytes

可读可写,cat出来值为 0。

该参数定义了当系统中脏页达到此阈值时,后台写回进程(内核线程)将开始写回脏页到磁盘。单位为字节,这个参数用于控制在后台写回脏页时可用内存的阈值。


6. dirty_background_ratio

可读可写,cat出来值为 5。

与 dirty_background_bytes 类似,这个参数定义了后台写回进程开始写回脏页的内存使用比率阈值。以系统可用内存的百分比来表示。


7. dirty_bytes

可读可写,cat出来值为 0。

这个参数定义了在脏页被强制回写之前脏页的数量上限。当脏页的数量超过此阈值时,内核将启动写回脏页的操作。


8. dirty_expire_centisecs

可读可写,cat出来值为 200。

该参数设置了脏页被认为"过期"的时间,单位为100毫秒,过期的脏页将被写回到磁盘。当脏页在内存中存在时间超过这个阈值时,它将被认为是过期的。


9. dirty_ratio

可读可写,cat出来值为 20。

定义了内存中可以被脏页占用的最大比例。当这个比例被超过时,进程将被阻塞,以等待脏页写回磁盘。


10. dirty_writeback_centisecs

可读可写,cat出来值为 500。

用于配置脏页刷新到磁盘的时间间隔,单位为百分之一秒。


11. dirtytime_expire_seconds

可读可写,cat出来值为 43200。

这个参数定义了脏页存在时间的上限,在这个时间之后,脏页将被写回到磁盘。


12. drop_caches

只可写。

该参数并非用于配置脏页,而是用于清空文件系统缓存和页缓存,以释放内存。可以通过在这个文件中写入不同的数值来执行不同的清理操作。

echo 1 > /proc/sys/vm/drop_caches //释放页缓存
echo 2 > /proc/sys/vm/drop_caches //释放dentries和inodes
echo 3 > /proc/sys/vm/drop_caches //释放所有缓存


13. extfrag_threshold

可读可写,cat出来值为 500。

这个参数用于控制系统分配连续内存页面的策略。当内存分配请求被满足时,内核会尽量提供连续的物理内存页。“extfrag_threshold” 就是设置内核认为内存碎片过大的阈值。


14. extra_free_kbytes

可读可写,cat出来值为 54675。

此参数通过增加每个区域的最小水位线和低水位线之间的差距,告诉虚拟机保持额外的可用内存量。patch: https://lkml.org/lkml/2013/2/17/210


15. kswapd_threads

可读可写,cat出来值为 1。


16. laptop_mode

可读可写,cat出来值为 0。

这个参数是针对笔记本电脑而设计的,用于控制系统在省电模式下的行为。当启用 “laptop_mode” 时,系统会尽量降低功耗,延长电池续航时间。

此参数只会影响直接内存回收,为0表示允许直接内存回收对匿名页lru链表中的页进行回写操作,并且允许直接内存回收唤醒flush内核线程,非0表示直接内存回收不会对匿名页lru链表中的页进行回写操作


17. legacy_va_layout

可读可写,cat出来值为 0。

这个参数用于启用或禁用内核在用户态地址空间中使用传统的 “VA = PA + PAGE_OFFSET” 布局。通常情况下,不需要手动修改此参数。


18. lowmem_reserve_ratio

可读可写,cat出来值为 32 0。

这个参数决定了系统在低内存条件下要保留多少内存以供内核使用。默认情况下,内核会保留一部分内存,以便能够应对低内存压力和系统任务的需要。


19. max_map_count

可读可写,cat出来值为 65530。

这个参数限制了每个进程能够创建的内存映射区(vma)的数量。通过限制这个数量,可以提高系统的安全性和稳定性。


20. min_free_kbytes

可读可写,cat出来值为 14881。

该参数用于设置最小空闲内存的阈值。它表示内核将尽量保留的空闲内存量,以确保系统具有足够的可用内存来应对突发的内存需求。以页的数量为单位。当内存使用量接近 min_free_kbytes 时,内核会避免分配更多的内存页面,以保留一定的空闲内存。这样做的目的是避免系统因为内存不足而陷入频繁的页面置换操作,以及在处理突发内存需求时能够有一些缓冲空间。


21. mmap_min_addr

可读可写,cat出来值为 32768。

这个参数用于限制被非特权进程用于 mmap() 系统调用的地址范围。它指定了 mmap() 返回的映射地址的最小值,防止用户空间进程随意映射低地址空间。


22. mmap_rnd_bits

可读可写,cat出来值为 24。

该参数指定了 mmap 映射地址的位数。


23. mmap_rnd_compat_bits

可读可写,cat出来值为 16。

指定了与其他架构上的二进制兼容时的位数,和上面参数一起控制 mmap 映射地址的随机化。


24. oom_dump_tasks

可读可写,cat出来值为 1。

这是一个控制开关,用于启用或禁用当系统内存不足时将 oom_score_adj 值为负的任务信息写入到 /proc/sys/kernel/panic_on_oom 中。当启用时,内核会将这些进程的信息记录下来,并可用于诊断系统内存用尽的情况。


25. oom_kill_allocating_task

可读可写,cat出来值为 0。

此参数控制是否允许内核在 Out-Of-Memory 条件下终止分配内存的进程。当启用时,内核会尝试终止正在分配内存的进程以尝试释放内存。当禁用时,内核会尝试终止具有最高 OOM 分数的进程。


26. overcommit_kbytes

可读可写,cat出来值为 0。

这是一个用于控制过度承诺内存的参数,用于指定系统允许的过度承诺的总内存(以 kBytes 为单位)。


27. overcommit_memory

可读可写,cat出来值为 1。

该参数用于控制内存过度承诺策略。可取值为0 1 2:

OVERCOMMIT_GUESS (0): 这个选项是默认的设置。在这种模式下,内核会根据系统中可用的物理内存和已分配的虚拟内存的大小来判断是否允许超额分配。例如,当虚拟内存的总量超过物理内存加上交换
空间的大小时,会禁止超额分配。这种模式下的行为通常是比较合理且安全的。

OVERCOMMIT_ALWAYS (1): 这个选项表示内核始终允许超额分配。不论物理内存和已分配的虚拟内存之间是否有足够的空间,内核都会允许进程进行超额分配。这样做的话,即使系统实际内存不足,也不会阻止进程进行内存分配操作。但是,当实际可用内存超出物理内存大小时,可能会导致应用程序在使用超额内存时发生页错误(page fault)。

OVERCOMMIT_NEVER (2): 这个选项表示内核不允许超额分配。当进程请求内存超过操作系统实际可用的物理内存大小时,内核会阻止超额分配,并抛出 Out-Of-Memory (OOM) 错误,使进程能够适当地处理内存不足的情况。


28. overcommit_ratio

可读可写,cat出来值为 50。

这个参数用于指定内存过度承诺的比率。它表示了系统内存大小与所允许的过度承诺内存大小之间的比率。


29. page-cluster

可读可写,cat出来值为 3。

这个参数用于设置内存页合并的阈值。内核会尝试合并空闲内存页,以减少内存碎片和提高内存使用效率。


30. panic_on_oom

可读可写,cat出来值为 2。

此参数是一个开关,用于控制当系统内存不足时是否触发 kernel panic。当启用时,系统将在内存耗尽时触发panic,当禁用时,系统会尝试通过终止进程或其他手段来尝试恢复。


31. percpu_pagelist_fraction

可读可写,cat出来值为 0。

作用参考:https://zhuanlan.zhihu.com/p/583060023?utm_id=0


32. reap_mem_on_sigkill

可读可写,cat出来值为 1。


33. stat_interval

可读可写,cat出来值为 1。

用于设置内存统计信息输出到 /proc/zoneinfo 文件的时间间隔。更新 vm 统计信息的时间间隔。默认值为 1 秒。


34. stat_refresh

可读可写,cat出来没有值。

控制在刷新内存统计信息时是否清零统计数据。设置为 1 时表示清零,设置为 0 时表示不清零。


35. swappiness

可读可写,cat出来的值是 60。

设置交换偏好,0 最大限度使用交换空间,1 最大限度释放缓存到交换空间。


36. unprivileged_userfaultfd

可读可写,cat出来的值是 0。

决定是否允许非特权用户创建和使用 userfaultfd 文件描述符(用于处理用户态页缺失异常)。


37. user_reserve_kbytes

可读可写,cat出来的值是 131072。

为非特权进程保留的物理内存页大小,确保非特权用户总是能分配到一定数量的内存页。


38. vfs_cache_pressure

可读可写,cat出来的值是 100。

用于控制内核释放缓存页的速度。较高的值会导致更积极地释放缓存,以腾出更多的内存。


39. want_old_faultaround_pte

可读可写,cat出来的值是 1。


40. watermark_boost_factor

可读可写,cat出来的值是 15000。

是一个与内存分配和回收相关的参数。它代表了一个提升因子,用于调整内核在当系统内存紧张时触发内存回收的水位线。
水位线是内核用于判断是否需要触发内存回收的阈值。当空闲内存低于水位线时,内核会启动内存回收机制以释放内存并避免系统内存耗尽。水位线通常分为三个等级:min、low 和 high。
watermark_boost_factor 是一个浮点数,其默认值为1.0。它决定了在内存紧张时,内核将水位线向下调整的程度。较大的值将降低水位线,使内核更频繁地触发内存回收,从而提高内存的利用率和系统的响应性能。较小的值将增加水位线,使内核更少地触发内存回收,从而减少系统的开销。
调整 watermark_boost_factor 的值可以根据系统的需求来平衡内存利用率和响应性能。一般情况下,较大的值适用于高负载系统,而较小的值适用于资源充足的系统。


41. watermark_scale_factor

可读可写,cat出来的值是 10。

这是一个与内存管理相关的参数。它用于调整内核在计算内存水位线时考虑的“内存压力”因素的比例。
内存水位线是内核用于判断是否需要触发内存回收的阈值。当系统内存紧张时,内核将调整水位线,并启动内存回收机制以释放内存并避免系统内存资源耗尽。内核根据多个因素来计算水位线,其中之一就是“内存压力”。
watermark_scale_factor 是一个浮点数,默认值为1.0。它决定了内核在计算水位线时将“内存压力”因素乘以多少。较大的值将增加内存压力对水位线的影响,使内核更敏感地触发内存回收。较小的值则减少内存压力对水位线的影响,使内核更少地触发内存回收。
调整该值可以根据系统的需求来平衡内存利用率和系统的响应性能。较大的值适用于对内存利用率敏感的系统,例如服务器;而较小的值适用于对系统响应性能敏感的系统,例如桌面计算机或移动设备。
值得注意的是,调整该值需要慎重,因为过高或过低的值可能导致系统的性能问题或内存资源管理不足。建议在根据实际情况进行调整之前,先进行充分的测试和评估。

 

三、/sys/kernel下的文件节点


1. ion/total_heaps_kb


2. ion/total_pools_kb


3. iommu_groups

/sys/kernel # ls iommu_groups
0 1 2 3

4. mm/swap/vma_ra_enabled

/sys/kernel # cat mm/swap/vma_ra_enabled
true

5. slab

ls可以看到有大量创建slab对应的节点:

/sys/kernel/slab # ls
PING                      bio-1                      erofs_inode               f2fs_xattr_entry-254:16  jbd2_inode            mm_struct            shmem_inode_cache
UDP-Lite                  biovec-64                  ext4_groupinfo_4k         fs_cache                 key_jar               nsproxy              task_struct
...

每一个子节点又有下面文件:

/sys/kernel/slab/task_struct # ls
aliases      cpu_partial  destroy_by_rcu  min_partial  objects_partial  partial          red_zone       slab_size          store_user     usersize
align        cpu_slabs    free_calls      object_size  objs_per_slab    poison           sanity_checks  slabs              total_objects  validate
alloc_calls  ctor         hwcache_align   objects      order            reclaim_account  shrink         slabs_cpu_partial  trace


6. software_nodes

是个空目录名


四、/sys/kernel/debug目录下的文件节点

1. memblock/memory

/sys/kernel/debug # cat memblock/memory
   0: 0x00000000aed01000..0x00000000bb500fff
   1: 0x00000000e3148000..0x00000000f4bfffff
   2: 0x00000000f7000000..0x00000000f7147fff
   ...
   7: 0x0000000800000000..0x00000008780fffff


2. memblock/reserved

/sys/kernel/debug # cat memblock/reserved
   0: 0x00000000aee46e70..0x00000000aee7fffc
   1: 0x00000000aee80000..0x00000000b2599fff
   2: 0x00000000ebc00000..0x00000000f4bfffff
   ...
  26: 0x00000008764d29e0..0x00000008780fffff


3. slab/alloc_trace

/sys/kernel/debug # cat slab/alloc_trace
alloc_list: call_site=spi_init+0x28/0xa4 count=1 object_size=128 slab_size=640 slab_name=kmalloc-128
spi_init+0x28/0xa4
do_one_initcall+0xe0/0x39c
do_initcall_level+0xc0/0x1cc
do_basic_setup+0x34/0x50
kernel_init_freeable+0x10c/0x1ac
kernel_init+0x1c/0x2d0
ret_from_fork+0x10/0x18
alloc_list: call_site=create_kmalloc_cache+0x40/0xd4 count=14 object_size=464 slab_size=1024 slab_name=kmem_cache
create_kmalloc_cache+0x40/0xd4
new_kmalloc_cache+0xec/0x11c
create_kmalloc_caches+0x6c/0xa4
kmem_cache_init+0xd4/0x148

记录每个slab分配的次数、大小、调用栈。


4. dma_buf/bufinfo

/sys/kernel/debug # cat dma_buf/bufinfo

Dma-buf Objects:
size            flags           mode            count           exp_name        ino
00262144        00000002        00080007        00000004        hgsl_memory     00833330
        Attached Devices:
        hab
Total 1 devices attached

00032768        00000002        00080007        00000002        ion_dma_buf     00833261
        Attached Devices:
Total 0 devices attached

18698240        00000002        00080007        00000001        ion_dma_buf     00833260
...


5. dma_buf/dmaprocs

/sys/kernel/debug # cat dma_buf/dmaprocs

surfaceflinger (PID 591) size: 285820
DMA Buffers:
Name            Size (KB)
(null)          18440
(null)          18440
...
composer@2.4-se (PID 506) size: 178352
DMA Buffers:
Name            Size (KB)
(null)          18440
(null)          5424
...


6. memcg_slabinfo

/sys/kernel/debug # cat memcg_slabinfo
# <name> <css_id[:dead|deact]> <active_objs> <num_objs> <active_slabs> <num_slabs> //什么内容也没有


7. regmap

它是一个目录:

/sys/kernel/debug # ls regmap/
dummy-syscon@0x1fd8000  dummy-syscon@0x1fdd000  dummy-syscon@0x1fdf000  spmi0-00  spmi0-04  spmi0-08  spmi0-0c
/sys/kernel/debug # ls regmap/dummy-syscon@0x1fd8000/
access  name  range  registers

/sys/kernel/debug/regmap/dummy-syscon@0x1fd8000 # cat access
000: y y y n
004: y y y n
...
/sys/kernel/debug/regmap/dummy-syscon@0x1fd8000 # cat name
nodev
/sys/kernel/debug/regmap/dummy-syscon@0x1fd8000 # cat range
0-ffc
/sys/kernel/debug/regmap/dummy-syscon@0x1fd8000 # cat registers
000: 00000000
004: 00000000
...


8. iommu

/sys/kernel/debug # ls iommu
io-pgtable  testbus  tests
/sys/kernel/debug # cat iommu/io-pgtable/pages
8


9. swiotlb

/sys/kernel/debug # cat swiotlb/io_tlb_nslabs
4096
/sys/kernel/debug # cat swiotlb/io_tlb_used
0


10. cma

/sys/kernel/debug # ls cma/
cma-cnss_wlan_r  cma-linux,cma  cma-mem_dump_re
/sys/kernel/debug # ls cma/cma-cnss_wlan_r/
alloc  base_pfn  bitmap  count  free  maxchunk  order_per_bit  used


11. ion

/sys/kernel/debug # ls ion/
ion_system_heap  qsecom  qsecom_ta  secure_heap  system
/sys/kernel/debug # ls ion/ion_system_heap/
alloc_bytes_wm  ion_system_heap_shrink  num_of_alloc_bytes  num_of_buffers
/sys/kernel/debug # ls ion/qsecom
alloc_bytes_wm  num_of_alloc_bytes  num_of_buffers
/sys/kernel/debug # ls ion/qsecom_ta/
alloc_bytes_wm  num_of_alloc_bytes  num_of_buffers
/sys/kernel/debug # ls ion/secure_heap/
alloc_bytes_wm  num_of_alloc_bytes  num_of_buffers  secure_heap_shrink
/sys/kernel/debug # ls ion/system/
alloc_bytes_wm  num_of_alloc_bytes  num_of_buffers  system_shrink  system_stats


12. page_owner

/sys/kernel/debug # cat page_owner
Page allocated via order 0, mask 0x112cca(GFP_HIGHUSER_MOVABLE|__GFP_NOWARN|__GFP_NORETRY), pid 4570, ts 47271373745714 ns
PFN 2863025 type Movable Block 2795 type Movable Flags 0x16(referenced|uptodate|lru)
 prep_new_page+0x10c/0x188
 get_page_from_freelist+0x22c/0x244
 __alloc_pages_nodemask+0x100/0x37c
 __do_page_cache_readahead+0x118/0x1f4
 ondemand_readahead+0x1e8/0x278
 page_cache_async_readahead+0xc4/0x108
 generic_file_buffered_read+0x13c/0xc90
 generic_file_read_iter+0x60/0x1e8
 __vfs_read+0x1a8/0x218
 vfs_read+0xc0/0x160
 ksys_read+0x84/0xf0
 __arm64_sys_read+0x24/0x34
 el0_svc_common+0xcc/0x1c4
 el0_svc_handler+0x34/0xa0
 el0_svc+0x8/0x300
...

cat打印无数这样的栈回溯信息。


13. show_mem_notifier

可读可写,cat为0.

 

posted on 2024-04-12 16:19  Hello-World3  阅读(9)  评论(0编辑  收藏  举报

导航