linux 获取 CPU 使用信息

该博客介绍了如何在Linux系统下获取CPU使用信息。通过定义CPU信息结构体,读取`/proc/stat`文件来获取CPU的用户时间、空闲时间等各项指标,然后通过两次采样计算CPU的使用率。主要涉及到的函数包括读取CPU信息的`readCpuInfo`函数和计算CPU使用率的`getCpuUsageRates`函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在 Shell 脚本中,我们可以通过 top -n 1 来获取,获取内容如下:
 linux 获取 CPU 使用信息 - zhixingheyi - 知行合一的博客
  具体参数的意思在这里不做解释,我们主要看一下用 C 代码如何获取 CPU 的使用信息,达到命令 top 的目的。
先来了解一下内核维护的一个借口 /proc/stat 这个文件,使用命令 cat /proc/stat 得到内容如下:
linux 获取 CPU 使用信息 - zhixingheyi - 知行合一的博客
  cpu 一行从左到右参数的意思依次是(单位:jiffies):
jiffies 是内核中的一个全局变量,用来记录自系统启动以来产生的节拍数,在 linux 中,一个节拍数大致可以理解为操作系统进程调度的最小时间片,不同 linux 内核可能值有不同,通常在 1ms 到 10ms 之间。
user(103769):从系统启动开始累积到当前时刻,处于用户态的运行时间,不包含 nice 值为负进程的运行时间。
nice(0):从系统启动开始累计到当前时刻,nice 值为负的进程所占用的 CPU 时间。
system(164913):从系统启动开始累计到当前时刻,处于内核态的运行时间。
idle(1503325):从系统启动开始累计到当前时刻,除 IO 等待时间以外的其它等待时间。
iowait(0):从启动启动开始累计到当前时刻,IO 等待时间。(版本 2.5.41 后)
irq(0):从系统启动开始累计到当前时刻,硬中断时间。(版本 2.6.0 后)
softirq(15396):从系统启动开始累计到当前时刻,软中断时间。(版本 2.6.0 后)
stealstolen(0):which is the time spent in other operating systems when running in a virtualized environment.
guest (0):which is the time spent running a virtual CPU for guest operating systems under the control of the Linux kernel.(版本 2.6.24 后)
总体运行时间:TotalCPUTime = user + nice + idle + iowait + irq + softirq + stealstolen + guest。
CPU 运行时间:UserCPUTime = TotalCPUTime - idle - iowait

C 代码实现:

// CPU 信息结构体

typedef struct cpu { unsigned long long USR; unsigned long long NIC; unsigned long long SYS; unsigned long long IDLE; unsigned long long IOWAIT; unsigned long long IRQ; unsigned long long SOFTIRQ; unsigned long long STEAL;

unsigned long long TOTAL; unsigned long long USAGE; double BOGOMIPS;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值