菜单

kaoqi
kaoqi
发布于 2026-10-09 / 6 阅读
0
0

proc下的文件们

近期由于DPDK的学习,了解到EAL初始化过程中针对大页内存的查询依托于/proc/mounts文件下的一个特殊的机制进行,具体来说就是:

1、使用下面这个命令进行大页内存的申请,注意是只要写入就会申请:

echo 1024 > /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages

对应的cat效果是:

只要是对这个文件里写入数字,就会自动触发内存的分配。

可以使用cat /proc/meminfo、cat /proc/buddyinfo来进行大页内存分配。

2、使用mount -t hugetlbfs nodev /mnt/huge命令,来将具体的文件系统路径写入到/proc/mounts文件内。

这里就可以看出这个机制的典型作用——就是用于在/proc文件夹下,以mounts文件来向所有的用户态程序展示一些关键的参数。

后续在DPDK中,就是通过mounts文件中的描述,用于给EAL初始化中进行路径描述的。EAL初始化会在其描述的路径中,使用mmap函数中填充对应此处路径的方式,在已经被申请到的大页内存中于此路径进行mmap的创立。

各种文件一览

  • buddyinfo

显示内核伙伴系统中空闲内存块的分布情况

  • cgroups

列出当前系统中已挂载的控制组

  • cmdline

显示内核启动时传递的命令行参数

  • consoles

显示当前系统注册的控制台设备列表及其状态

  • cpuinfo

显示CPU硬件信息

  • crypto

列出内核中已注册的所有加密算法和密码模块

  • devices

显示当前内核已加载的字符设备和块设备

  • diskstats

提供每块磁盘设备的详细IO统计信息

  • dma

显示当前正在使用注册的ISA DMA通道信息

  • execdomains

列出内核当前支持的执行域

  • fb

列出系统注册的帧缓冲设备

  • filesystems

列出当前内核支持的文件系统类型

  • interrupts

显示每个IRQ的中断计数和分布情况

  • iomem

展示物理内存地址空间的分配映射情况

  • ioports

列出当前已注册的IO端口范围

  • kallsyms

导出内核中所有导出的符号及其地址

  • kcore

提供整个物理内存和内核空间的ELF格式核心转储镜像

  • keys

列出当前会话中已加载到内核密钥环中的密钥

  • key-users

显示每个用户ID在内核密钥子系统中占用的资源配额统计

  • kmsg

提供内核环形缓冲区中的日志消息的流式接口

  • kpagecgroup

按物理页框号索引,显示每个物理页所属的Memory Cgroup ID

  • kpagecount

按物理页框号索引,显示每个物理页被映射的次数

  • kpageflags

按物理页框号索引,显示每个物理页的标志位

  • loadavg

显示系统的平均负载

  • locks

列出当前内核持有的所有文件锁

  • mdstat

RAID子系统的状态

  • meminfo

提供系统物理内存和交换空间的详细统计信息

  • misc

列出注册在杂项字符设备主号下的所有设备号及其对应驱动名称

  • modules

已加载的可加载模块

  • mounts

显示当前系统所有已挂载的文件系统列表

  • mtrr

显示x86架构下的内存类型范围寄存器设置

  • net

这是一个目录,包含大量网络子系统的统计信息和状态文件

  • pagetypeinfo

提供伙伴系统中页面类型和碎片化的详细统计

  • partitions

列出内核识别到的所有块设备分区及其大小

  • sched_debug

提供linux调度器的内部实时状态快照

  • schedstat

提供调度器的统计摘要信息,通常比sched_debug更轻量,侧重于累积统计数据

  • self

这是一个符号链接,指向当前访问该文件的进程对应的目录

  • slabinfo

展示slab分配器中各个缓存的详细统计信息

  • softirqs

显示每个CPU核心上各类软中断的处理计数

  • stat

提供系统自启动依赖的全局CPU时间统计及其他核心内核计数器

  • swaps

列出当前系统已启用的交换分区和交换文件

  • sysrq-trigger

允许用户空间程序触发内核的SysRq功能,向此文件写入特定字符可执行紧急内核操作,常用于系统死机或无响应时的调试和恢复

  • thread-self

类似于self的文件指向,但是这个会指向当前线程对应的目录

  • timer_list

列出内核中所有活跃的高精度定时器和时钟事件设备状态

  • uptime

显示系统启动至今的时间和累计空闲时间

  • version

显示编译当前内核的GCC版本和编译时间

  • version_signature

提供内核版本的签名或构建标识符

  • vmallocinfo

展示内核vmalloc区域的分配详情,列出每个vmalloc分配的起始地址、结束地址、大小、调用者、页面属性等

  • vmstat

提供虚拟内存子系统的详细统计计数器

  • zoneinfo

展示每个内存区域的详细状态


评论