首页 > 系统服务 > 详细

linux 的proc文件系统

时间:2014-11-11 10:55:12      阅读:362      评论:0      收藏:0      [点我收藏+]
linux中的/proc文件系统是一个虚拟的文件系统,由内核在运行时动态生成。它提供了内核运行时的配置和状态信息。用户可以通过这些文件来获取、或修改内核的信息。
关于proc,可以通过 man proc 获取详细的说明。

运行 mount 命令,可以看到 proc 文件系统的挂载信息。

mount -t proc proc /proc

/proc 目录下的文件

/proc/cpuinifo       CPU的信息(型号、家族、缓存大小等)

/proc/meminfo    物理内存、交换空间
/proc/mounts      已加载的文件系统的列表
/proc/devices  可用设备的列表
/proc/filesystems   被支持的文件系统
/proc/modules   已加载的模块
/proc/virsion   内核版本
/proc/cmdline   系统启动时输入的内核命令行参数
/proc/XXX    XXX是指以数字编号的目录,有不少这样的目录,每一个目录表示一个进程(即线程组)。
/proc/swaps   要获知swap空间的使用情况
/proc/uptime   获取系统的正常运行时间
/proc/fs/nfsd/exports  列出由NFS共享的文件系统
/proc/kmsg  该文件被作为内核日志信息源,它可以被作为一个系统信息调用的接口使用
/proc/self -- 到当前进程/proc目录的符号链接,通过这个目录可以获取当前运行进程的信息。
/proc/pci -- 挂接在PCI总线上的设备
/proc/tty/driver/serial --串口配置、统计信息
/proc/version -- 系统版本信息
/proc/sys/kernel/ostype
/proc/sys/kernel/osrelease
/proc/sys/kernel/version
/proc/sys/kernel/hostname -- 主机名
/proc/sys/kernel/domainname -- 域名
/proc/partitions -- 硬盘设备分区信息
/proc/sys/dev/cdrom/info -- CDROM信息
/proc/locks -- 当前系统中所有的文件锁
/proc/loadavg -- 系统负荷信息
/proc/uptime -- 系统启动后的运行时间

----------------------------------------------------------------------------------------------------------------------------------------------------------

查看系统内存信息的命令:   cat /proc/meminfo

MemTotal:     3266180 kB
MemFree:        17456kB
Buffers:       111328kB
Cached:       2664024kB
SwapCached:         0kB
Active:        467236kB
Inactive:     2644928 kB
HighTotal:         0kB
HighFree:          0kB
LowTotal:     3266180 kB
LowFree:        17456kB
SwapTotal:    2048276kB
SwapFree:     1968116 kB
Dirty:            8kB
Writeback:         0kB
Mapped:        345360kB
Slab:         112344kB
Committed_AS:   535292kB
PageTables:      2340 kB
VmallocTotal: 536870911 kB
VmallocUsed:    272696kB
VmallocChunk: 536598175 kB
HugePages_Total:    0
HugePages_Free:     0
Hugepagesize:    2048kB

解析:

MemTotal: 所有可用RAM大小(即物理内存减去一些预留位和内核的二进制代码大小)
MemFree: LowFree与HighFree的总和,被系统留着未使用的内存
Buffers: 用来给文件做缓冲大小
Cached: 被高速缓冲存储器(cache memory)用的内存的大小(等于 diskcache minus SwapCache ).
SwapCached:被高速缓冲存储器(cache memory)用的交换空间的大小
           已经被交换出来的内存,但仍然被存放在swapfile中。用来在需要的时候很快的被替换而不需要再次打开I/O端口。
Active: 在活跃使用中的缓冲或高速缓冲存储器页面文件的大小,除非非常必要否则不会被移作他用.
Inactive: 在不经常使用中的缓冲或高速缓冲存储器页面文件的大小,可能被用于其他途径.
HighTotal:
HighFree: 该区域不是直接映射到内核空间。内核必须使用不同的手法使用该段内存。
LowTotal:
LowFree: 低位可以达到高位内存一样的作用,而且它还能够被内核用来记录一些自己的数据结构。Among many
         other things, it is where everything from the Slab is
         allocated.  Bad things happen when you‘re out of lowmem.

SwapTotal: 交换空间的总大小
SwapFree: 未被使用交换空间的大小
Dirty: 等待被写回到磁盘的内存大小。
Writeback: 正在被写回到磁盘的内存大小。
AnonPages:未映射页的内存大小
Mapped: 设备和文件等映射的大小。
Slab: 内核数据结构缓存的大小,可以减少申请和释放内存带来的消耗。
SReclaimable:可收回Slab的大小
SUnreclaim:不可收回Slab的大小(SUnreclaim+SReclaimable=Slab)
PageTables:管理内存分页页面的索引表的大小。
NFS_Unstable:不稳定页表的大小
VmallocTotal: 可以vmalloc虚拟内存大小
VmallocUsed: 已经被使用的虚拟内存大小。
VmallocChunk: largest contigious block of vmalloc area which is free

------------------------------------------------------------------------------------------------------

/proc/stat 文件的字段解析:

 user    systemnice    idle      iowait  irq    softirq
cpu  17906755 86377 53312329 1322524322 29311124 101704 1096939
cpu0 4665564  22883  13417357330376020  7206071 99986  297154
cpu1 4488897  20352  13351971330749128  7202582 0     271926
cpu2 4434851  22675  13302518330622140  7455115 1718   245786
cpu3 4317443  20467  13240483330777034  7447356 0     282073
输出解释
CPU 以及CPU0、CPU1、CPU2、CPU3每行的每个参数意思(以第一行为例)为:

参数 解释
user (432661) 从系统启动开始累计到当前时刻,用户态的CPU时间(单位:jiffies) ,不包含 nice值为负进程。1jiffies=0.01秒
nice (13295) 从系统启动开始累计到当前时刻,nice值为负的进程所占用的CPU时间(单位:jiffies)
system (86656) 从系统启动开始累计到当前时刻,核心时间(单位:jiffies)
idle (422145968) 从系统启动开始累计到当前时刻,除硬盘IO等待时间以外其它等待时间(单位:jiffies)
iowait (171474) 从系统启动开始累计到当前时刻,硬盘IO等待时间(单位:jiffies) ,
irq (233) 从系统启动开始累计到当前时刻,硬中断时间(单位:jiffies)
softirq (5346) 从系统启动开始累计到当前时刻,软中断时间(单位:jiffies)

CPU时间=user+system+nice+idle+iowait+irq+softirq

“intr”这行给出中断的信息,第一个为自系统启动以来,发生的所有的中断的次数;然后每个数对应一个特定的中断自系统启动以来所发生的次数。
“ctxt”给出了自系统启动以来CPU发生的上下文交换的次数。
“btime”给出了从系统启动到现在为止的时间,单位为秒。
“processes (total_forks) 自系统启动以来所创建的任务的个数目。
“procs_running”:当前运行队列的任务的数目。
“procs_blocked”:当前被阻塞的任务的数目。

那么CPU利用率可以使用以下两个方法。先取两个采样点,然后计算其差值:
cpu usage=(idle2-idle1)/(cpu2-cpu1)*100
cpu usage=[(user_2 +sys_2+nice_2) - (user_1 + sys_1+nice_1)]/(total_2 - total_1)*100

以下用分别用bash和perl做的一个cpu利用率的计算:
total_0USER[0]+NICE[0]+SYSTEM[0]+IDLE[0]+IOWAIT[0]+IRQ[0]+SOFTIRQ[0]
total_1=USER[1]+NICE[1]+SYSTEM[1]+IDLE[1]+IOWAIT[1]+IRQ[1]+SOFTIRQ[1]
cpu usage=(IDLE[0]-IDLE[1]) / (total_0-total_1) * 100


linux 的proc文件系统

原文:http://blog.csdn.net/fengyelengfeng/article/details/41006727

踩
(0)
赞
(0)
   
举报
评论 一句话评论(0)
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!