本文主要是介绍OK6410A 开发板 (八) 123 linux-5.11 OK6410A rootfs中留给开发者的内存访问接口,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
与内存相关的文件系统
我们如果想用rootfs中的文件来观测内存或更改内存行为
则需要观测的文件所属的文件系统 为 内核文件系统
// https://blog.csdn.net/u011011827/article/details/119322870 中的 "linux 真实文件系统分类"
相关的文件系统有以下几种 sysfs,procfs,rootfs,devtmpfs,debugfs
可以从 /proc/filesystems中查看 当前的linux系统中注册了哪些 系统,在从中根据经验挑选出 内核文件系统
可以 利用 mount 来查看 这些文件系统挂载到哪个目录(挂载点)了
如果没有挂载,可以尝试用mount 命令挂载
与内存相关的文件系统大概有以下几种
1. sysfs
2. procfs
3. debugfs
4. udevfs
具体的文件
只读文件
pagetypeinfo
meminfo
buddyinfo
slabinfo
vmallocinfo
zoneinfo
vmstat
cmdline
// "mem = xxx" , 表示 bootloader 留给linux 的内存大小(即linux管理的内存大小)为 xxx
可写文件
/proc/sys/vm
drop_caches:
sync && echo 1 > /proc/sys/vm/drop_caches
0:0是系统默认值,默认情况下表示不释放内存,由操作系统自动管理
1:释放页缓存
2:释放dentries和inodes
3:释放所有缓存
/sys/kernel 下的 mm slab 目录
slab下有
/sys/kernel/slab/task_struct // task_struct 是一个slab 的名称
udevfs 下的 kmsg // 被挂载到了 /dev ,等价于 dmesg
// layout 关键字 中 有 内核虚拟内存布局
// tracing 相关
/sys/kernel/debug# tree |grep mem
│ ├── memory_bandwidth
│ │ ├── huge_memory
│ │ ├── kmem
│ │ │ ├── kmem_cache_alloc
│ │ │ ├── kmem_cache_alloc_node
│ │ │ ├── kmem_cache_free
│ │ │ ├── extlog_mem_event
│ │ │ ├── memory_failure_event
│ │ │ ├── sys_enter_get_mempolicy
│ │ │ ├── sys_enter_membarrier
│ │ │ ├── sys_enter_memfd_create
│ │ │ ├── sys_enter_set_mempolicy
│ │ │ ├── sys_exit_get_mempolicy
│ │ │ ├── sys_exit_membarrier
│ │ │ ├── sys_exit_memfd_create
│ │ │ ├── sys_exit_set_mempolicy
│ │ │ ├── mm_vmscan_memcg_reclaim_begin
│ │ │ ├── mm_vmscan_memcg_reclaim_end
│ │ │ ├── mm_vmscan_memcg_softlimit_reclaim_begin
│ │ │ ├── mm_vmscan_memcg_softlimit_reclaim_end
├── vmmemctl
│ ├── pat_memtype_list
├── reject_kmemcache_fail
这篇关于OK6410A 开发板 (八) 123 linux-5.11 OK6410A rootfs中留给开发者的内存访问接口的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!