上篇讲如何用LoadRunner监控Linux的性能指标 ,但是关于CPU的几个指标没有搞清楚,下面就详细说说。

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

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

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://blog.csdn.net/tianlesoftware/archive/2011/02/21/6198780.aspx

==========================================================================

性能相关的系列文章:

LoadRunner利用ODBC编写MySql脚本
LoadRunner压力测试时监控服务器Linux的资源情况
压力测试衡量CPU的三个指标:CPU Utilization、Load Average和Context Switch Rate
高性能服务器架构(High-Performance Server Architecture)
网站性能测试PV到TPS的转换以及TPS的波动
用GTmetrix来优化你的网页(集成了YSlow、FireBug的功能)

压力测试衡量CPU的三个指标:CPU Utilization、Load Average和Context Switch Rate相关推荐

  1. 衡量CPU的三个指标:CPU Utilization、Load Average和Context Switch Rate

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

  2. 压力测试衡量CPU的三个指标CPU Utilization、Load Average和ContextSwitch Rate

    压力测试衡量CPU的三个指标:CPU Utilization.Load Average和ContextSwitch Rate 上篇讲如何用LoadRunner监控Linux的性能指标,但是关于CPU的 ...

  3. 压力测试衡量CPU的三个指标

    压力测试衡量CPU的三个指标:CPU Utilization.Load Average和ContextSwitch Rate 上篇讲如何用LoadRunner监控Linux的性能指标,但是关于CPU的 ...

  4. 压力测试最大QPS瓶颈定位——CPU利用率与Load Average的区别(压测)

    通过下面的几个部分的了解,可以一步一步的找出Load Average在压力测试中真正的作用. CPU利用率和Load Average的区别 0.压力测试:压力测试不仅需要对业务场景的并发用户等压力参数 ...

  5. 压力测试中 4 个常见面试题总结

    今天来说 4 个关于压力测试的面试题,如果你有更好的回答也可以给小编留言. 1.简述压力测试步骤 (1)测试环境准备:压测机资源(8核CPU.16G内存.机器数量4-7台).被测系统服务器资源.数据库 ...

  6. Android App压力测试(Monkey和ADB)

    压力测试简介 压力测试是一种基本的质量保证行为,它是每个重要软件测试工作的一部分.压力测试的基本思路很简单:不是在常规条件下运行手动或自动测试,而是在计算机数量较少或系统资源匮乏的条件下运行测试.通常 ...

  7. WEB网站压力测试方案 压力测试如何换算并发用户数

    http://wenku.baidu.com/view/bedf1a93daef5ef7ba0d3c29.html 压力测试通过确定一个系统的瓶颈或者不能接收的性能点,来获得系统能提供的最大的服务级别 ...

  8. Apache ab压力测试说明

    转自: http://leepiao.blog.163.com/blog/static/485031302010234352282/ 压力测试是一种基本的质量保证行为,它是每个重要软件测试工 作的一部 ...

  9. 软件测试员必知!压力测试总共需要几个步骤?思路总结篇

    在运维工作中,压力测试是一项很重要的工作.比如在一个网站上线之前,能承受多大访问量.在大访问量情况下性能怎样,这些数据指标好坏将会直接影响用户体验.今天我们就来深入了解下压力测试! 首先, 什么是压力 ...

最新文章

  1. gdb常用调试命令汇总!
  2. shell 编程 判断语句参数
  3. map赋值给另一个map_Java学习(十六): Lambda操作Map
  4. 简述力法计算弹性固定无铰拱的原理_《隧道结构体系设计》PPT课件.ppt
  5. c++学习笔记之指针
  6. 实现将字符串转换为指令执行
  7. 通过邮箱远程控制电脑
  8. JavaScript-Iterable迭代
  9. tar命令解压jdk.tar.gz包 报错 gzip: stdin: not in gzip format
  10. 函数自执行-一元运算符
  11. 我收藏的PDF电子书第一部分
  12. Linux内核网络udp数据包发送(一)
  13. studio3t到期解决办法
  14. 数据过多/DOM操作导致页面卡顿和请求突增导致页面崩溃
  15. 2017-2018-1 现代偏微分方程导论
  16. 视频播放器(二):视频解码
  17. 【SSL_1715】计算面积
  18. ixed php,「」解决PHP script * is protected by SourceGuardian
  19. Windows11 安装教程(ultraiso制作启动盘)
  20. 根据每个国家的数据绘制世界地图(以全球疫情为例)

热门文章

  1. 案例---int和String相互转化
  2. 计算机网络-奈氏准则
  3. 腾讯网关TGW基础原理入门
  4. org.apache.poi.xwpf.usermodel不存在问题
  5. APIO2016 Fireworks
  6. 我抄我自己的论文,能算学术不端吗?有学者做了一份论文复用指南
  7. SQL2017 安装教程图解(详细到每一个细节)
  8. UnityShader_泳池实现
  9. mysql创建函数的权限_MySQL创建用户和权限管理的方法
  10. 男生和女生(思维建图,最大独立集问题)