9)- 性能测试必备知识(4)- 深入理解“CPU 使用率”

CPU 使用率

灵魂拷问
1.最常用什么指标来描述系统的 CPU 性能?
回答:CPU 使用率,而不是平均负载,CPU 上下文切换

前言
Linux 作为一个多任务操作系统,将每个 CPU 的时间划分为很短的时间片,在通过调度器轮流分配给各个任务使用,因此造成多任务同时运行的错觉

了解节拍率
为了维护 CPU 时间,Linux 通过事先定义的节拍率(内核中表示为 HZ),触发时间中断,并使用全局变量 Jiffies 记录了开机以来的节拍数
每发生一次时间中断,Jiffies 的值 就加 1。
节拍率 HZ 是内核的可配选项,可以设置为 100、250、1000 等
不同的系统可能设置不同数值,你可以通过查询 /boot/config 内核选项来查看它的配置值
比如在我的系统中, 节拍率设置成了 1000,也就是每秒钟触发 1000 次时间中断。
grep ‘CONFIG_HZ=’ /boot/config-$(uname -r)

了解用户空间节拍率
因为节拍率 HZ 是内核选项,所以用户空间程序并不能直接访问
为了方便用户空间程序,内核还提供了一个用户空间节拍率 USER_HZ
它总是固定为 100,也就是 1/100 秒
这样,用户空间程序并不需要关心内核中 HZ 被设置成了多少,因为它看到的总是固定值 USER_HZ

系统 CPU 数据来源(了解)
Linux 通过 /proc 虚拟文件系统,向用户空间提供了系统内部状态的信息
而 /proc/stat 提供的就是系统的 CPU 和任务统计信息
只查看 CPU 的数据
cat /proc/stat | grep ^cpu
在这里插入图片描述
结果分析
从左往右一共 11 列哦
CPU 编号:第一行是 CPU 的累加
user(us):用户态 CPU 的时间,不包括下面的 nice 时间,但包括了 guest 时间
nice(ni):低优先级用户态 CPU 的时间,就是进程的 nice 值被调整为 1-19 之间时的 CPU 时间;注意 nice 可取值范围是 -20 到 19,数值越大,优先级反而越低
system(sys):内核态 CPU 的时间
idle(id):空闲时间,它不包括等待 I/O 的时间(iowait)
iowait(wa):等待 I/O 的 CPU 时间
irq(hi):处理硬中断的 CPU 时间
softirq(si):处理软中断的 CPU 时间
steal(st):当系统运行在虚拟机中的时间,被其他虚拟机占用的 CPU 时间
guest:通过虚拟化运行其他操作系统的时间,就是运行虚拟机的 CPU 时间
guest_nice(gnice):以低优先级运行虚拟机的时间

CPU 使用率计算公式(了解)
除了空闲时间外的其他时间占总 CPU 时间的百分比
在这里插入图片描述
灵魂拷问
1./proc/stat 的数据,算的是什么时间段的 CPU 使用率?
回答:这是开机以来的节拍数累加值,所以直接算出来的,是开机以来的平均 CPU 使用率,一般没啥参考价值

性能工具所看到的 CPU 使用率的实际计算方法

为了计算 CPU 使用率,性能工具一般都会取间隔一段时间(比如 120 秒)的两次值,作差后,再计算出这段时间内的平均 CPU 使用率
在这里插入图片描述

总结下
各种各样的性能分析工具已经帮我们计算好了 CPU 平均使用率,不需要自己单独计算
不过要注意的是,性能分析工具给出的都是间隔一段时间的平均 CPU 使用率,所以要注意间隔时间的设置,

参考:https://www.cnblogs.com/poloyy/p/13373310.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值