编程获取linuxservercpu、内存和磁盘使用

摘要:
proc文件系统简介/proc文件系统是一个伪文件系统。如果外部存储空间不占用内存,这是唯一的。这是一种文件系统提供与内核进程通信的接口的方法。程序可以通过/proc获取系统信息。它还可以更改内核的一些参数。因为系统信息。例如过程。它是动态变化的,因此当用户或应用程序读取/proc文件夹中的文件时。proc文件系统从系统内核动态读取所需信息并提交它/proc文件夹中有一些数字命名的文件

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中该文件里的内容:

编程获取linuxservercpu、内存和磁盘使用第1张

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, '

免责声明:内容来源于网络,仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇nginx+vue+thinkphp5.1部署,解决前端刷新404,以及前端404解决后,后台又404的问题一沙框架(yishaadmin) 前端引入VUE的实现方法下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

SqlLite 简明教程

LIMIT运算符LIMIT子句指定要返回的记录数。WHERE表达式LIMITnumberLIKE运算符LIKE操作符用于在WHERE子句的列中搜索指定的模式。SELECT可以是简单的,也可以是复合的。请注意,UNION中的SELECT语句必须具有相同数量的字段。NOT NULL约束强制字段始终包含值。SQLNULL约束NULL值缺少未知数据。SQLPRIMA...

sql 加减时间

另外,MySQL中还有两个函数subdate(),subtime(),建议,用date_sub()来替代。MySQLperiod_add(P,N):日期加/减去N月。mysql˃selectperiod_add,period_add|period_add|period_add|结果|200810|20080806|MySQLperiod_diff:日期P1-...

Cesium深入浅出之视频投影【转】

通常,我们使用矩形,因为视频形状是方形的。据怀疑,视频标签隐藏了这段关系。如果再次显示,视频将再次移动。此处使用VideoSynchronizer。它可以使视频元素与铯的模拟时钟同步。让我们看看它的构造函数:name type description optionsObject option子属性:name type默认值description用于驱动视频的...

SpringBoot工程通过Maven引入自定义Jar包

A工程为:common工程打成jar包:common-0.0.1-SNAPSHOT.jar注意:A工程打包时要使用maven的插件进行打包,不然会打成SpringBoot的Jar包,无法使用。--字符集编码--˃打包时跳过测试配置1.8˂!...

汇编指令MOV

格式:MOVDST,SRC例如:MOVEAX,#050aH;将十六进制050a传送到通用寄存器eax中MOVDI,BXMOVES,AXMOVAX,DSMOVAL,23HMOV[2000H],02HMOV[2061H],BX...

Excel数据透视表、高级筛选

目录:1.数据透视表:数据透视表格式和操作说明:多个表一起创建数据透视表创建组创建计算字段创建计算项值显示方法切片器2。高级过滤:高级过滤和或关系精确过滤和模糊过滤通配符过滤原则查询不重复值(使用高级过滤)高级过滤区分大小写使用高级过滤查找空数据使用高级过滤查询两个表中相同的记录或未使用的记录过滤记录1和数据透视表1.正确的数据透视表格式:① 数据源的第一行...