proc文件系统简介
/proc文件系统是一个伪文件系统。它是唯一的,其中存储器,如果不采取外部存储空间。
它是文件系统提供了与内核进程进行通信的接口的方法。用程序能够通过/proc得到系统的信息。并能够改变内核的某些參数。
因为系统的信息。如进程。是动态改变的,所以用户或应用程序读取/proc文件夹中的文件时。proc文件系统是动态从系统内核读出所需信息并提交的。
/proc文件夹中有一些以数字命名的文件夹。它们是进程文件夹。系统中当前执行的每个进程在/proc下都相应一个以进程号为文件夹名的文件夹/proc/pid,它们是读取进程信息的接口。
此外,在Linux 2.6.0-test6以上的版本号中/proc/pid文件夹中有一个task文件夹,/proc/pid/task文件夹中也有一些以该进程所拥有的线程的线程号命名的文件夹/proc/pid/task/tid,它们是读取线程信息的接口。
CPU使用率
要想计算CPU使用率,首先要了解文件/proc/stat中的内容,例如以下是本人所使用server中该文件里的内容:
CPU 以及CPU0、CPU1、CPU2、CPU3、CPU4中每行的每一个參数意思(以第一行为例)解释:
user (28201) :从系统启动開始累计到当前时刻。用户态的CPU时间(单位:jiffies) ,不包括 nice值为负进程。1jiffies=0.01秒
nice (389) :从系统启动開始累计到当前时刻,nice值为负的进程所占用的CPU时间(单位:jiffies)
system (10975) :从系统启动開始累计到当前时刻,核心时间(单位:jiffies)
idle (6552431) :从系统启动開始累计到当前时刻,除硬盘IO等待时间以外其他等待时间(单位:jiffies)
iowait (19704) :从系统启动開始累计到当前时刻,硬盘IO等待时间(单位:jiffies) 。
irq (0) :从系统启动開始累计到当前时刻。硬中断时间(单位:jiffies)
softirq (208): 从系统启动開始累计到当前时刻。软中断时间(单位:jiffies)
获取cpu使用率的方法:
1、记录某个时刻cpu的使用情况
2、等上一个时间段
3、再记录此刻的cpu使用情况
4、计算总的时间片
把第一次的全部cpu使用情况求和。得到j1,把第二次的全部cpu使用情况求和,得到j2。则j2-j1得到这个时间段的全部时间片。即total=j2-j1=第二次的全部列的和-第一次的全部列的和
5、计算idle时间
idle相应第五列的数据,用第二次的减去第一次的就可以。idle=第二次的第五列-第一次的第五列
6、计算cpu使用率
ate=(total-idle)/total
在代码里实现例如以下所看到的:
SysCPUInfo* _GetHostCPUInfo() { SysCPUInfo *cpuinfo = (SysCPUInfo *)malloc(sizeof(SysCPUInfo)); if (cpuinfo == NULL) err_dump("_GetCPUInfo: malloc struct SysCPUInfo error"); FILE *fd; char buff[256]; memset(buff, '