文章目录
前言
本文主要关于Linux下/proc目录的理解及一些用法。
背景
在做YARN改造优化时,需要自动判断NM是否部署在docker上,采用的方法是读/proc/1/cgroup文件,发现在/proc下有很多对NM改造有用的信息如meminfo, cpuinfo,并且即使是root用户也是无法手动修改这些内容。
一、作用和意义
每个进程在/proc/下都有自己的文件夹,会存放一些环境变量、依赖、cgroup等等。
而/proc/中也有会meminfo、cpuinfo、diskstats等常用信息,也是我们熟知的free、top、iostat等工具的底层数据来源。
1. 目录解析
① /proc
-r--r--r-- 1 root root 0 Feb 26 19:49 buddyinfo
cat buddyinfo 使用buddy算法解决物理内存的外碎片问题,用11个链表记录内存空余,大小为2的n次方的page,如Node 0第二列为915*(2^2)*PAGE_SIZE
Node 0, zone DMA 1 1 0 1 1 0 0 0 1 1 3
Node 0, zone DMA32 196 4546 2646 1914 457 143 126 34 11 1 0
Node 0, zone Normal 11994 915 0 0 0 0 0 0 0 0 0
Node 1, zone Normal 23136 47404 19481 683 114 51 4 0 0 0 0
dr-xr-xr-x 4 root root 0 Feb 26 19:49 bus
-r--r--r-- 1 root root 0 Feb 26 19:49 cgroups
-r--r--r-- 1 root root 0 Jun 22 2017 cmdline
内核启动的命令行,和/proc/PID/cmdline用于进程的cmdline项非常相似。
-r--r--r-- 1 root root 0 Feb 26 19:49 consoles
-r--r--r-- 1 root root 0 Feb 26 19:49 cpuinfo
cpu相关信息,每一颗的型号,制造商、型号、版本、频率等。
-r--r--r-- 1 root root 0 Feb 26 19:49 crypto
内核使用的所有已安装的加密密码及细节
-r--r--r-- 1 root root 0 Feb 26 19:49 devices
这个文件列出字符和块设备的主设备号,以及分配到这些设备号的设备名称
-r--r--r-- 1 root root 0 Feb 26 19:49 diskstats
-r--r--r-- 1 root root 0 Feb 26 19:49 dma
每个正在使用且注册的ISA DMA(Direct Memory Access)通道的信息列表
dr-xr-xr-x 2 root root 0 Feb 26 19:49 driver
-r--r--r-- 1 root root 0 Feb 26 19:49 execdomains
当前支持的execution domains
-r--r--r-- 1 root root 0 Feb 26 19:49 fb
帧缓冲设备列表,包括数量和控制它的驱动
-r--r--r-- 1 root root 0 Feb 26 19:49 filesystems
内核当前支持的文件系统类型
dr-xr-xr-x 6 root root 0 Feb 26 19:49 fs
-r--r--r-- 1 root root 0 Feb 26 19:49 interrupts
每个IRQ中断数,哪些中断正在使用和每个处理器各被中断了多少次
-r--r--r-- 1 root root 0 Feb 26 19:49 iomem
每个物理设备当前在系统内存中的映射
-r--r--r-- 1 root root 0 Feb 26 19:49 ioports
dr-xr-xr-x 3 root root 0 Feb 26 19:49 ipmi
dr-xr-xr-x 112 root root 0 Feb 26 19:49 irq
-r--r--r-- 1 root root 0 Feb 26 19:49 kallsyms
-r-------- 1 root root 140737486266368 Feb 26 19:49 kcore
128T一个文件?kcore和其他文件一样只是一个虚拟文件,没有占用实际空间,它代表内核最多能分配的内存数。
-r--r--r-- 1 root root 0 Feb 26 19:49 keys
-r--r--r-- 1 root root 0 Feb 26 19:49 key-users
密钥相关
-r-------- 1 root root 0 Feb 26 19:49 kmsg
内核日志,可以通过dmesg查看
-r-------- 1 root root 0 Feb 26 19:49 kpagecount
-r-------- 1 root root 0 Feb 26 19:49 kpageflags
-r--r--r-- 1 root root 0 Feb 26 19:49 loadavg
cpu和io负载统计
-r--r--r-- 1 root root 0 Feb 26 19:49 locks
这个文件包含在打开的文件上的加锁信息。文件中的每一行描述了特定文件和文档上的加锁信息以及对文件施加的锁的类型。内核也可以需要时对文件施加强制性锁。
-r--r--r-- 1 root root 0 Feb 26 19:49 mdstat
磁盘RAID信息,没做raid:
Personalities :
unused devices: <none>
-r--r--r-- 1 root root 0 Feb 26 19:49 meminfo
内存详细信息,YARN统计vmem、pmem就是读取这个文件,free命令也是
-r--r--r-- 1 root root 0 Feb 26 19:49 misc
记录内核函数misc_regist