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占用率的计算原理相关推荐

  1. c++ 计算cpu占用率

    计算CPU占用率就是获取系统总的内核时间 用户时间及空闲时间 其中空闲时间就是内核空转 所以内核时间包含空闲时间 然后计算 运行时间 = 内核时间 加 用户时间 减去 空闲时间 间隔时间 =  内核时 ...

  2. 降低指定进程的CPU占用率(适合游戏多开)

    应用场景举例 推荐BES软件 应用场景举例 游戏多开,比如<天书世界>网页游戏,单开占用CPU30%左右:最小化能够降低到10%以下. 如果多开,那么CPU就是叠加累计,非常占用CPU资源 ...

  3. hint ksql oracle_性能测试中发现oracle11g数据库每天22点,oralce进程CPU占用率突增

    你的位置: 问答吧 -> Oracle -> 问题详情 性能测试中发现oracle11g数据库每天22点,oralce进程CPU占用率突增 每天都会报以下信息(alert.log): CJ ...

  4. 银行手机APP软件做性能测试吗,20家农村商业银行个人手机APP评测:CPU占用率差距最大可达32倍 流量消耗成重灾区...

    为持续跟踪和检测手机银行APP的兼容性和易用性等方面的表现,为行业发展提供有益参考,中国电子银行网联合CFCA兼容和性能测试平台对20家农村商业银行客户端进行测试.今年测试范围首次加入IOS系统,与安 ...

  5. 慢慢欣赏linux CPU占用率和负载

    CPU使用率如何计算,可以参考busybox的实现 其原理是每隔5s读一次/proc/stat,两次的值相减作为CPU占用率. /proc/stat的含义详见附件. int top_main(int ...

  6. 关于vmstat,top,ps aux查看的cpu占用率不一致的问题

    问题: 用vmstat,top,和ps aux三个命令查看进程对cpu的占用率,数值差异很大. 例: 用 vmstat 查看系统cpu空闲率, id是cpu的空闲率,可以看出,空闲率一直在73%以上 ...

  7. c语言程序会使cpu变高,用 C 语言写个程序,运行时,cpu占用率一直保持50%

    好记性不如烂笔头 --东西太多,脑子永远不够用 问题 用 C 语言写个程序,运行时,cpu占用率一直保持50% 解决方案 一看题目好眼熟!<编程之美>!然而已经记不清楚了,果然东西需要经常 ...

  8. idea java cpu100_intellij idea cpu占用率太大太满 运行速度太慢 使了五个解决方法最终成功...

    突然发现,intellij idea 特别卡,在代码间移动的时候,居然刷新都跟不上,然后打开任务管理器一看,CPU占用率100%...intellij idea自己一个程序的占用率就高达80~90,这 ...

  9. XP中CPU占用率100%原因及解决方法

    我们在使用Windows XP操作系统的时候,用着用着系统就变慢了,一看"任务管理器"才发现CPU占用达到100%.这是怎么回事情呢?遇到病毒了,硬件有问题,还是系统设置有问题,在 ...

最新文章

  1. CCNA和四级网工的对比
  2. vba 您正和其他用户尝试修改同一条数据_专辑二 | Moodle学习之Moodle添加用户
  3. 北京通州拟3年培训技能人才5万人次 服务城市副中心行政办公区等
  4. Codeforces Round #580 (Div. 2)
  5. linux(fedora) 下dvwa 建筑环境
  6. equals与hashcode的区别与联系
  7. Hadoop生态Flume(四)拦截器(Interceptor)介绍与使用(2)
  8. Android Studio 安装 NDK(Mac OX)
  9. Linux —— shell认识与基础命令
  10. 每个特征图1各因子和一个偏置_nlp中的概率图模型
  11. 解决报错: The name tf.app.run is deprecated. Please use tf.compat.v1.app.run instead.
  12. 被果树点名做一个Blog游戏,答案如下...接下来换我点名了~~!!!
  13. 清除网页缓存的快捷键
  14. 手把手教大家基于开源的GB28181-WVP搭建一个视频监控系统
  15. 鸿蒙形容欣欣向荣发展,形容发展迅速的12个成语
  16. kotlin expecting a top leveleclaration
  17. 米2距离感应器的设置问题。无法挂断电话等问题的解决
  18. 国外注册域名有哪些缺点?国外域名怎么转入国内?
  19. 学科实践活动感悟50字_初中学科实践活动记录50字3篇
  20. mysql2008百度云_SQLServer数据库之SQL Server 2008R2 企业版 百度云下载地址

热门文章

  1. OpenMV感光元件参数设置
  2. 当代年轻人该如何跨越阶层?
  3. 手机控制电脑远程开机,笔记本与老电脑都能实现
  4. 志愿者系统/新时代文明实践平台
  5. 还在手写CURD代码?这三件套任意一套都能免去手写CURD确定不来看看?——JPA+MP+TK 免手写CURD三件套
  6. 运营商大数据丨电销行业如何高效获得精准客户
  7. 机器人开发--设计范式
  8. webpack手摸手学习系列之配置详解的 entry、output、module、resolve、devServer 和 optimization
  9. 用css3属性如何来做一个动态螺旋丸
  10. leetcode_54. 螺旋矩阵