性能测试——CPU占用率的计算原理
cpu
关于性能测试中cpu数据抛出以下4个问题?
1.CPU的占比是什么含义,是怎么计算的?
2.为什么在日常性能测试中开发最认可的数据是cycle数(windows性能测试报告中的产出数据之一),而非cpu占用率?
3.变频对CPU占比的影响是什么,为什么变频会影响最终的性能测试数据?
4.Perfdog中的normalized cpu的计算方式是什么,为什么说这个数据比normalized cpu比正常的cpu数据更准?
针对以上的问题,做了一些调研和思考,
首先是cpu是怎么工作的,cpu本质上是集成电路(详情参考:https://www.cnblogs.com/cation/p/11192289.html),另一方面,程序是用高级语言编写的,运行的时候会转化为机器语言(0/1);
图中的电路中可以通过改变电压调整电路走向,0或者1的信号就是用于控制电压的大小,如果电压达到阈值,会走"线路a",未达到,会走"线路b";
那么这些电压是如何控制的,电信号(脉冲)是如何发出的?引入一个新的实体硬件,石英晶体振荡器(详细介绍参考https://blog.csdn.net/delacroix_xu/article/details/4640401),
压电效应及晶振原理(详情见https://www.cnblogs.com/sunshine-jackie/p/8137293.html):
在石英晶体的两个电极上加一电场,晶片就会产生机械变形。
反之,若在晶片的两侧施加机械压力,则在晶片相应的方向上将产生电场,这种物理现象称为压电效应。
从上述的晶振可以了解到,对石英晶体施加外力即可发出电信号,我们常说的cpu频率实际上就是这个晶振频率,"cpu频率 = 晶振频率 = 脉冲频率 = 时钟频率 = F"
脉冲发生的时间间隔定义为 "时钟周期(clock tick)= T = 1/F" ,这个数据也是cpu 中的时间单位
cpu在运算的时候是怎么计算cpu占比的,
举一个实例:QQ运行了1s 的cpu占比
QQ运行时会向CPU发送指令,指令转化为机器可以理解的机器语言(0/1),控制器会按指令发送脉冲;1s中之内发送了n个脉冲,假设cpu的频率是1Ghz,即1s中该cpu在满载的情况下会发送1Ghz个脉冲
QQ CPU占比的计算公式 为 “CPU占比=n/1Ghz”
根据上述的公式和概念解释可以回答最初的4个问题:
问题1:CPU的占比是什么含义,是怎么计算的?
答:
1.CPU的占比可以理解为 “单位时间内进程占用CPU的时间占比”
1s中内 进程a发送了 n个脉冲信号,"cpu的占比 = (n*时钟间隔)/1s = n*T/1s = n/F"
2.也可以理解为 “单位时间内进程发送的脉冲数量占用cpu在单位时间可以发送的最大脉冲数的占比”
"cpu的占比 = n/F"
问题2&3:为什么开发最认可的数据是cycle数?变频对CPU占比的影响是什么,为什么变频会影响最终的性能测试数据?
答:
1.变频实际上就是F的变化,假设我需要获取 2s 的CPU占用率,第一秒频率为F,第二秒频率为2F;进程是稳定运行状态,每秒都需要发n次脉冲; 那么 cpu1=2n/F ,cpu2 = 2n/2F,cpu1->cpu2 占用率会缩减一半,我们可以说进程性能变好了吗,显然不行,因为不论是cpu1还会cpu2,进程需要CPU每秒发n次脉冲,都需要这么多次电路逻辑运算,所以变频的对CPU的占比数据有直接影响,导致cpu占比不能客观反映进程的性能状况。
2.开发认可cycle数是因为cylcle数就是上文描述的 进程在单位时间内发送的脉冲数,不管cpu频率如何变化,进程就是需要在单位时间内做这些逻辑运算。
问题4:perfdog中的normalized cpu的计算方式是什么,为什么说这个数据比normalized cpu比正常的cpu数据更准?
答:问题2&3的解答中的实例,假设我需要获取 2s 的CPU占用率,第一秒频率为F,第二秒频率为2F;进程是稳定运行状态,每秒都需要发n次脉冲; 那么 cpu1=2n/F ,cpu2 = 2n/2F,由此得出的结论是cpu1和cpu2的不同是频率的变化导致的;
根据perfdog官网对normalized cpu的定义 , normalized cpu = cpu*(实时频率/最大频率);
假设机器的最大频率是4F,
normalized cpu1=(2n/F) * (F/4F) = n/2F
normalized cpu2=(2n/2F) * (2F/4F) = n/2F
由此可以得出 normalized cpu1 = normalized cpu2,
通过上述的案例分析可以得出这个结论:
normalized cpu不能反馈cpu的实时占比,但是它可以反馈进程客观的性能状况。
cpu性能测试工具开发指南:
通过上面4个问题的解释我们可以了解到写一个cpu性能测试脚本需要做什么操作;
1.获取到运行进程的各个线程的clock tick 总数 n1;
2.等待1s后获取运行进程下各个线程的clock tick 总数 n2;
3.获取这1s内cpu所有核的频率之合F1,获取cpu所有核的满载频率之合F2(如果机器可以定频,该步骤无需操作)
4.开始计算 CPU 占比 ={ [(n2-n1)/F1] *(F1/F2)}/CPU逻辑核数
以上4个步骤依赖于对各个操作系统的掌握情况,需要找到系统方法获取这些性能数据完成计算,windows开发可以参考 https://www.cnblogs.com/gatsby123/p/11127158.html
性能测试——CPU占用率的计算原理相关推荐
- c++ 计算cpu占用率
计算CPU占用率就是获取系统总的内核时间 用户时间及空闲时间 其中空闲时间就是内核空转 所以内核时间包含空闲时间 然后计算 运行时间 = 内核时间 加 用户时间 减去 空闲时间 间隔时间 = 内核时 ...
- 降低指定进程的CPU占用率(适合游戏多开)
应用场景举例 推荐BES软件 应用场景举例 游戏多开,比如<天书世界>网页游戏,单开占用CPU30%左右:最小化能够降低到10%以下. 如果多开,那么CPU就是叠加累计,非常占用CPU资源 ...
- hint ksql oracle_性能测试中发现oracle11g数据库每天22点,oralce进程CPU占用率突增
你的位置: 问答吧 -> Oracle -> 问题详情 性能测试中发现oracle11g数据库每天22点,oralce进程CPU占用率突增 每天都会报以下信息(alert.log): CJ ...
- 银行手机APP软件做性能测试吗,20家农村商业银行个人手机APP评测:CPU占用率差距最大可达32倍 流量消耗成重灾区...
为持续跟踪和检测手机银行APP的兼容性和易用性等方面的表现,为行业发展提供有益参考,中国电子银行网联合CFCA兼容和性能测试平台对20家农村商业银行客户端进行测试.今年测试范围首次加入IOS系统,与安 ...
- 慢慢欣赏linux CPU占用率和负载
CPU使用率如何计算,可以参考busybox的实现 其原理是每隔5s读一次/proc/stat,两次的值相减作为CPU占用率. /proc/stat的含义详见附件. int top_main(int ...
- 关于vmstat,top,ps aux查看的cpu占用率不一致的问题
问题: 用vmstat,top,和ps aux三个命令查看进程对cpu的占用率,数值差异很大. 例: 用 vmstat 查看系统cpu空闲率, id是cpu的空闲率,可以看出,空闲率一直在73%以上 ...
- c语言程序会使cpu变高,用 C 语言写个程序,运行时,cpu占用率一直保持50%
好记性不如烂笔头 --东西太多,脑子永远不够用 问题 用 C 语言写个程序,运行时,cpu占用率一直保持50% 解决方案 一看题目好眼熟!<编程之美>!然而已经记不清楚了,果然东西需要经常 ...
- idea java cpu100_intellij idea cpu占用率太大太满 运行速度太慢 使了五个解决方法最终成功...
突然发现,intellij idea 特别卡,在代码间移动的时候,居然刷新都跟不上,然后打开任务管理器一看,CPU占用率100%...intellij idea自己一个程序的占用率就高达80~90,这 ...
- XP中CPU占用率100%原因及解决方法
我们在使用Windows XP操作系统的时候,用着用着系统就变慢了,一看"任务管理器"才发现CPU占用达到100%.这是怎么回事情呢?遇到病毒了,硬件有问题,还是系统设置有问题,在 ...
最新文章
- CCNA和四级网工的对比
- vba 您正和其他用户尝试修改同一条数据_专辑二 | Moodle学习之Moodle添加用户
- 北京通州拟3年培训技能人才5万人次 服务城市副中心行政办公区等
- Codeforces Round #580 (Div. 2)
- linux(fedora) 下dvwa 建筑环境
- equals与hashcode的区别与联系
- Hadoop生态Flume(四)拦截器(Interceptor)介绍与使用(2)
- Android Studio 安装 NDK(Mac OX)
- Linux —— shell认识与基础命令
- 每个特征图1各因子和一个偏置_nlp中的概率图模型
- 解决报错: The name tf.app.run is deprecated. Please use tf.compat.v1.app.run instead.
- 被果树点名做一个Blog游戏,答案如下...接下来换我点名了~~!!!
- 清除网页缓存的快捷键
- 手把手教大家基于开源的GB28181-WVP搭建一个视频监控系统
- 鸿蒙形容欣欣向荣发展,形容发展迅速的12个成语
- kotlin expecting a top leveleclaration
- 米2距离感应器的设置问题。无法挂断电话等问题的解决
- 国外注册域名有哪些缺点?国外域名怎么转入国内?
- 学科实践活动感悟50字_初中学科实践活动记录50字3篇
- mysql2008百度云_SQLServer数据库之SQL Server 2008R2 企业版 百度云下载地址