博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
压力测试衡量CPU的三个指标:CPU Utilization、Load Average和Context Switch Rate
阅读量:7221 次
发布时间:2019-06-29

本文共 2202 字,大约阅读时间需要 7 分钟。

 

分类:

上篇讲 ,但是关于CPU的几个指标没有搞清楚,下面就详细说说。

 

CPU Utilization 好理解,就是CPU的利用率,75%以上就比较高了(也有说法是80%或者更高)。除了这个指标外,还要结合Load Average和Context Switch Rate来看,有可能CPU高是因为后两个指标高导致的。

 

Load Average ,这个很难衡量。网上搜了一圈,还没见到几个合理的解释。我100个并发用户测试数来这两个值是:77.534%,6.108,CPU利用率比较高,Load Average也好像有点高。后来发现了如下两片博文: ,“Load Average是 CPU的 Load,它所包含的信息不是 CPU的使用率状况,而是在一段时间内 CPU正在处理以及等待 CPU处理的进程数之和的统计信息,也就是 CPU使用队列的长度的统计信息。 ”,基本解释了multi-process,multi-thread程序的原理。 ,简单说起来就一句话:

 

    Load Average < CPU个数 * 核数 *0.7

 

比如1个1核CPU,Load Average < 1 * 1 * 0.7;1个4核的CPU,Load Average必须 < 1 * 4 * 0.7 = 2.8。

 

查看cpu的信息:grep 'model name' /proc/cpuinfo

 

Context Switch Rate 。就是Process(Thread)的切换,如果切换过多,会让CPU忙于切换,也会导致影响吞吐量。《 》这篇文章的第2节就是说的是这个问题的。究竟多少算合适?google了一大圈,没有一个确切的解释。Context Switch大体上由两个部分组成:中断和进程(包括线程)切换,一次中断(Interrupt)会引起一次切换,进程(线程)的创建、激活之类的也会引 起一次切换。CS的值也和TPS(Transaction Per Second)相关的,假设每次调用会引起N次CS,那么就可以得出

 

     Context Switch Rate = Interrupt Rate + TPS* N

 

CSR减掉IR,就是进程/线程的切换,假如主进程收到请求交给线程处理,线程处理完毕归还给主进程,这里就是2次切换。也可以用CSR、IR、 TPS的值代入公式中,得出每次事物导致的切换数。因此,要降低CSR,就必须在每个TPS引起的切换上下功夫,只有N这个值降下去,CSR就能降低,理 想情况下N=0,但是无论如何如果N >= 4,则要好好检查检查。另外网上说的CSR<5000,我认为标准不该如此单一。

 

其他信息:

这三个指标在LoadRunner中可以监控到;另外,在linux中,也可以用vmstat查看r(Load Arerage),in(Interrupt)和cs(Context Switch)

#vmstat 1 5

procs --------------memory-------------    ----swap-- ---io--   -system------cpu----

 r   b   swpd   free     buff       cache         si   so    bi    bo   in   cs us sy id wa
 0  0 244644  29156 415720 2336484    0    0     1    49    2    1      1  0 98    0
 0  0 244644  29140 415720 2336484    0    0     0    28    9    115  0  0 99    1
 0  0 244644  29140 415720 2336484    0    0     0    24    62  256  0  0 100  0
 0  0 244644  29140 415720 2336484    0    0     0     0     5    93    0  0 100  0
 0  0 244644  29140 415720 2336484    0    0     0     0     58  255  0  0 100  0

 

 

Interrupt Rate包括内核由于进程的时间片中断。(在 Linux 2.6 中,系统时钟每 1 毫秒中断一次时钟频率,用 HZ 宏表示,定义为 1000,即每秒中断 1000 次。系统不一样,内核不一样配置100、250的都有。)

内核的时钟频率可以通过如下命令知道

cat /boot/config-`uname -r` | grep '^CONFIG_HZ='

CONFIG_HZ=100

每秒总的时钟中断数就是 = cpu个数 * 核数 * CONFIG_HZ

 

cat /proc/interrupts

          CPU0       CPU1       CPU2       CPU3      

LOC:   97574747   52361843  105207680   69447653   Local timer interrupts
RES:     107368     257510      98635     186294   Rescheduling interrupts
CAL:      14174      14206      14164        194   function call interrupts
TLB:    1007949     853117     992546     591410   TLB shootdowns

可以查看中断的类型以及次数 

 

后记:

发现一篇Linux性能监控的文章,特贴在这里,供参考

转载地址:http://szhym.baihongyu.com/

你可能感兴趣的文章
PingingLab传世经典系列《CCNA完全配置宝典》-4.1 HDLC基本配置
查看>>
exchange2007 升级到 sp3 很ez
查看>>
SetupDiGetDeviceInterfaceDetail 函数
查看>>
Elasticsearch Kibana安装与使用
查看>>
我的友情链接
查看>>
TODO:这是一个我的自媒体
查看>>
conn堡垒机-日志审计和录像审计
查看>>
windows server 2008 r2系统搭建wamp环境
查看>>
docker学习笔记-批量删除停止运行的容器
查看>>
linux添加用户操作日志
查看>>
lvs 持久连接 80 和443 端口iptables mangle
查看>>
Docker的CPU限制限制
查看>>
linux 系统下 snmp 服务配置
查看>>
作为一名网络工程师,我们应该如何定位自己的方向呢?
查看>>
脱口而出-特定情景下的美语反应
查看>>
条件控制语句
查看>>
HTTPS安全访问的原理及其应用
查看>>
笔记本wifi×××
查看>>
haproxy高可用web和mysql配置实例
查看>>
构建Maven工程(2)---MyEclipse安装maven插件
查看>>