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?