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

本文涉及的产品
性能测试 PTS,5000VUM额度
简介: 性能测试必备知识(7)- 深入理解“CPU 使用率”

做性能测试的必备知识系列,可以看下面链接的文章哦

https://www.cnblogs.com/poloyy/category/1806772.html

 

回顾


CPU 使用率是单位时间内 CPU 使用情况的统计,以百分比的方式展示

 

灵魂拷问

最常用什么指标来描述系统的 CPU 性能?

 

回答

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)

image.png

了解用户空间节拍率

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

 

系统 CPU 数据来源(了解)


  • Linux 通过 /proc 虚拟文件系统,向用户空间提供了系统内部状态的信息
  • /proc/stat 提供的就是系统的 CPU 和任务统计信息

只查看 CPU 的数据

cat /proc/stat | grep ^cpu

image.png

结果分析

从左往右一共 11 列哦

  1. CPU 编号:第一行是 CPU 的累加
  2. user(us):用户态 CPU 的时间,不包括下面的 nice 时间,但包括了 guest 时间
  3. nice(ni):低优先级用户态 CPU 的时间,就是进程的 nice 值被调整为 1-19 之间时的 CPU 时间;注意 nice 可取值范围是 -20 到 19,数值越大,优先级反而越低
  4. system(sys):内核态 CPU 的时间
  5. idle(id):空闲时间,它不包括等待 I/O 的时间(iowait)
  6. iowait(wa):等待 I/O 的 CPU 时间
  7. irq(hi):处理硬中断的 CPU 时间
  8. softirq(si):处理软中断的 CPU 时间
  9. steal(st):当系统运行在虚拟机中的时间,被其他虚拟机占用的 CPU 时间
  10. guest:通过虚拟化运行其他操作系统的时间,就是运行虚拟机的 CPU 时间
  11. guest_nice(gnice):以低优先级运行虚拟机的时间

 

CPU 使用率计算公式(了解)


除了空闲时间外的其他时间占总 CPU 时间的百分比

image.png

灵魂拷问

/proc/stat 的数据,算的是什么时间段的 CPU 使用率?

 

回答

这是开机以来的节拍数累加值,所以直接算出来的,是开机以来的平均 CPU 使用率,一般没啥参考价值

 

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

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

image.png

总结下

  • 各种各样的性能分析工具已经帮我们计算好了 CPU 平均使用率,不需要自己单独计算
  • 不过要注意的是,性能分析工具给出的都是间隔一段时间的平均 CPU 使用率,所以要注意间隔时间的设置,
相关实践学习
通过性能测试PTS对云服务器ECS进行规格选择与性能压测
本文为您介绍如何利用性能测试PTS对云服务器ECS进行规格选择与性能压测。
相关文章
|
10月前
|
SQL 数据管理 网络安全
数据管理DMS操作报错合集之DMS的CPU使用率达到100%,如何解决
数据管理DMS(Data Management Service)是阿里云提供的数据库管理和运维服务,它支持多种数据库类型,包括RDS、PolarDB、MongoDB等。在使用DMS进行数据库操作时,可能会遇到各种报错情况。以下是一些常见的DMS操作报错及其可能的原因与解决措施的合集。
|
10月前
|
Web App开发 Java 测试技术
ChaosBlade常见问题之演练场景页面乱码cpu使用率图片显示不出来如何解决
ChaosBlade 是一个开源的混沌工程实验工具,旨在通过模拟各种常见的硬件、软件、网络、应用等故障,帮助开发者在测试环境中验证系统的容错和自动恢复能力。以下是关于ChaosBlade的一些常见问题合集:
137 0
|
10月前
|
监控 算法 Linux
【C/C++ 实用工具】CPU使用率监控工具对比
【C/C++ 实用工具】CPU使用率监控工具对比
222 0
|
10月前
|
监控 Java 索引
cpu使用率过高和jvm old占用过高排查过程
cpu使用率过高和jvm old占用过高排查过程
219 2
|
Shell
我来教你如何将cpu使用率up起来(shell脚本[含注释])
我来教你如何将cpu使用率up起来(shell脚本[含注释])
681 0
|
Shell 测试技术 Linux
通过shell脚本进行linux服务器的CPU和内存压测
通过shell脚本进行linux服务器的CPU和内存压测
399 0
|
2月前
|
SQL 监控 测试技术
一次压测引发的数据库CPU飙升...
一次压测过程中,当数据库的qps和tps都正常时,如果cpu利用率异常的高,应该如何排查?希望通过这篇文章,给你一些启发。
|
Linux
模拟Linux服务器高cpu使用率
模拟Linux服务器高cpu使用率
|
8月前
|
运维 监控 Linux
解决CPU与带宽高使用率问题:深入分析与应对策略
引言:性能问题的诊断与优化 在运维工作中,操作系统性能问题如影随形,典型代表是CPU使用率高和带宽使用率高的问题,它们直接影响应用的性能和响应时间。这篇记录将逐个分析这两个问题的产生原因和解决方法。
解决CPU与带宽高使用率问题:深入分析与应对策略
|
8月前
|
监控 算法 Java

热门文章

最新文章