procfs
简介
proc - process information pseudo-filesystem
关于详细说明解释,如下:
$ vim Documentation/filesystems/proc.rst
or
$ man proc在proc文件系统中有对每个进程维护一个目录/proc/[pid]/,其中/proc/self 指向 打开此文件的进程
Memory
/proc/[pid]/pagemap文件展示了该进程的物理帧与虚拟页的映射关系
## Documentation/vm/pagemap.txt
...
* Bits 0-54 page frame number (PFN) if present
* Bits 0-4 swap type if swapped
* Bits 5-54 swap offset if swapped
* Bit 55 pte is soft-dirty (see Documentation/vm/soft-dirty.txt)
* Bit 56 page exclusively mapped (since 4.2)
* Bits 57-60 zero
* Bit 61 page is file-page or shared-anon (since 3.5)
* Bit 62 page swapped
* Bit 63 page present
.../proc/meminfo 提供内存信息
Documentation/filesystems/proc.rst
/proc/vmstat 统计内存使用次数
/proc/buddyinfo 显示 linux kernel buddy 分配器的分布情况
如下,整个系统有一个 Node 0,三个 zone(DMA、DMA32、Normal),其中 Normal zone 有 1424 个 order 0 的物理页,20607 个 order 1 的物理页, 43125 个 order 2 的物理页 ... 183 个 order 10 的物理页。
/proc/pagetypeinfo,对 /proc/buddyinfo 的进一步详细解析
如上,Normal zone 的 Movable page 有 391 个 order 0 的物理页, 18682 个 order 1 的物理页,41829 个 order 2 的物理页 ... 183 个 order 10 的物理页。
page block order 等于 9,每一个 page block 有 512 个物理页,其中 Normal zone 的 Movable page 总共有 6460 个 page block。
/proc/zoneinfo 内存区域使用情况
每一个 zone 区域的 min/low/high 水位值,如下:
/proc/slabinfo
/proc/vmallocinfo 虚拟内存分配信息
/proc/swaps swap分区使用情况
/proc/mtd 内存设备分区表信息
/proc/dma DMA(直接内存访问)通道的列表
/proc/mtrr 系统使用的Memory Type Range Registers (MTRRs)
/proc/kpagecount
/proc/kpageflags
IO
/proc/diskstats 显示块设备的 I/O 统计信息
第 1 列,代表 major number
第 2 列,代表 minor number
第 3 列,代表 device name
第 4 列,代表 reads completed successfully
第 5 列,代表 reads merged
第 6 列,代表 sectors read
第 7 列,代表 time spent reading (ms)
第 8 列,代表 writes completed
第 9 列,代表 writes merged
第 10 列,代表 sectors written
第 11 列,代表 time spent writing (ms)
第 12 列,代表 I/Os currently in progress
第 13 列,代表 time spent doing I/Os (ms)
第 14 列,代表 weighted time spent doing I/Os (ms)
第 15 列,代表 discards completed successfully
第 16 列,代表 discards merged
第 17 列,代表 sectors discarded
第 18 列,代表 time spent discarding
第 19 列,代表 flush requests completed successfully
第 20 列,代表 time spent flushing
/proc/filesystems 目前系统支持的文件系统
/proc/ioports 当前系统硬件设备使用的IO端口列表
/proc/iomem I/O 内存映射
/proc/locks 当前被内核锁定的文件
/proc/mounts 当前挂载信息
CPU
/proc/cpuinfo cpu相关信息
/proc/loadavg 当前系统负载
/proc/softirqs 系统软中断信息
/proc/schedstat 调度器信息
/proc/sched_debug 调度器debug信息
Kernel
/proc/cmdline 在引导启动时传递给Linux内核的参数
/proc/crypto 内核支持的加密方式
/proc/modules 当前系统已经加载的模块(lsmod)
/proc/version 内核版本信息
/proc/stat 系统和内核的统计信息
/proc/fb 内核编译期间帧缓冲信息
/proc/kmsg 内核日志信息
/proc/kcore 表示系统物理内存,可以用gdb检查内核数据结构的当前状态
/proc/kallsyms 内核符号信息,主要用于调试
/proc/timer_list 内核各种计时器信息
/proc/timer_stats
/proc/sysrq-trigger 内核触发器(危险!!!)
/proc/execdomains Linux内核当前支持的execution domains
Other
/proc/[pid]/stat文件展示了该进程的状态
第1列, 表示 进程的PID
第2列, 表示 进程的名称
第3列, 表示 进程的状态(S表示Sleep)
第4列, 表示 进程的PPID,即父进程的PID
...
第15列, 表示 进程在内核空间 running 的时间
...
第41列, 表示 进程调度策略(0: TS, 1: FF)
...
/proc/interrupts 中断表
/proc/uptime 系统运行时间
/proc/devices 设备信息(主设备号等)
/proc/mdstat 虚拟设备信息(软raid等)
/proc/misc 其他的主要设备(设备号为10)上注册的驱动
/proc/cgroup cgroup相关信息
/proc/consoles
Last updated
Was this helpful?