来源: http://blog.itpub.net/24435147/viewspace-694470/

CPU的主要指标:

CPU Utilization

CPU 使用率,CPU的使用时间百分比,75%以上就比较高了。

在任意时间内,CPU有7个状态: 
1.idle,表示CPU闲置并等待工作分配. 
2.user,表示CPU在运行用户的进程 
3.system,表示CPU在执行kernel工作 
4.nice,表示CPU花费在被nice改变过优先级的process上的时间(注意:被nice命令改变优先级的process仅指那些nice值为负的process.花费在被nice命令改变优先级的任务上的时间也将被计算在系统和用户时间内,因此整个时间加起来可能会超过百分之百) 
5.iowait,表示CPU等待IO操作完成的时间 
6.irq,表示CPU开销在响应硬中断上的时间 
7.softirq,表示CPU开销在响应软中断上的时间. 
我们一般用vmstat看到的都是四个状态:sy,us,id,wa,通过他和load avg结合,基本可以知道cpu的状态

大部分的性能工具用百分比表示CPU时间.当system时间占用很高的时候,你可以用"oprofile"工具发现时间都花费在哪里.当iowait很高的时候,你需要分析你的IO设备,比如磁盘,网卡.

Average load

平均负载,上一分钟同时处于“就绪”状态的平均进程数。

Load这个东西怎么理解呢,就像一条马路,有N个车道,如果N个进程进入车道,那么正好一人一个,再多一辆车就占不到车道,要等有一个车空出车道。 
在CPU中可以理解为CPU可以并行处理的任务数,那么就是“CPU个数 * 核数”,如果CPU Load = CPU个数 * 核数 那么就是说CPU正好满负载,再多一点,可能就要出问题了,有任务不能被及时分配处理器,那么保证性能的话,最好是小于CPU个数 * 核数 *0.7。

Load Average是 CPU的 Load,它所包含的信息是在一段时间内 CPU正在处理以及等待 CPU处理的进程数之和的统计信息,也就是 CPU使用队列的长度的统计信息。

Load Average 的值应该小于“CPU个数 * 核数 *0.7 ” ,否则就高了。

比如: 
1个1核CPU,Load Average < 1 * 1 * 0.7 = 0.7; 
1个4核的CPU,Load Average必须 < 1 * 4 * 0.7 = 2.8。 
查看cpu的信息:grep ‘model name’ /proc/cpuinfo

使用 vmstat 看到的数据中也有这个数据,vmstat 查看r(Load Average)。

另外,top命令应该是把每个核的CPU占用率加起来,算一个和,于是多核情况下会top命令会计算出超过100%。

在linux中,process有两种状态: 
1.runnable 
2.blocked waiting for an event to complete 
一个blocked状态的process可能在等待一个I/O操作获取的数据,或者是一个系统调用的结果。 
如果一个process在runnable状态,这就意味着它将同其他runnable状态的process等待CPU时间,而不是立即获得CPU时间,一个runnable状态的process不需要消耗CPU时间,只有当Linux调度进程从runnable队列中选择哪个process下次执行。 
当 process在runnable状态,当时等待CPU时间时,他们形成的等待队列称作Run Queue.Run Queue越大,表示等待的队列越长。 
性能工具通常显示runnable processes的数目和blocked processes的数目。 
还有一个很常见的系统状态是load average,系统的load是指running和runnable process的总和。 
例如:如果有两个processes在running和有三个在等待运行(runnable),那么系统的load为五。 
load average是指在指定时间内load的平均值。一般load average显示的三个数字的时间分别为1分钟,五分钟和十五分钟。

Interrupt rate

每秒内的设备中断数。CPU接收硬件驱动发出的中断请求数。

这种中断通常是下面请看被触发:

当一个驱动器有一个时间需要被kernel操作时。例如:如果一个磁盘控制器从磁盘上取得了一个数据块,kernel需要读取使用这个块,那么磁盘控制器会触发一个中断; 
kernel接收每个中断,一个中断处理器运行如果这个中断被注册,否则,这个中断被忽略。 
在系统中,中断处理器的优先级非常高,而且执行速度非常快。 
很多时候,有些中断处理并不需要很高的处理优先级,所以也有soft- interrupt handler。

如果有很多的中断,kernel需要花费大量的时间去处理中断。

可以检查/proc/interrupts能够知道中断发生在哪个CPU 上.

Interrupt Rate中包括内核由于进程的时间片中断。 
在 Linux 2.6 中,系统时钟每 1 毫秒中断一次时钟频率,用 HZ 单位表示(即每秒中断 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

用vmstat查看的 in(Interrupt)就是这个参数

Context Switch Rate

大部分现在的CPU在同一时间只能运行一个process。 
虽然也有一些CPU,例如超线程技术的CPU,能实现同时运行超过一个process。linux把这种CPU看作多个单线程CPU。 
linux内核不断的在不同process间切换,造成一个错觉,让人感觉一个单CPU同时处理多个任务。 
不同process之间的切换称作 Context Switch。 
当系统做Context Switch时,CPU保存所有old process的context信息并获得new process的所有context信息。 
Context信息包括大量的linux追踪每个process信息,尤其是一些资源: 
那些process正在执行,被分配了哪些内存,它打开了那些文件,等等。 
切换Context会触发大量的信息移动,这是比较高的开销。 
如果可能的话尽量保持很小的 context switches。

为了尽可能的减小context switches,你首先需要知道它们是怎么产生的。 
首先,kernel调度触发context switches。为了保证每个process平等的共享CPU时间,kernel周期性中断running的process,如果合适, 
kernel调度器会开始一个其他的process而不是让当前的process继续执行,每次的周期性中断或者定时中断都可能触发context switch。 
每秒定时中断的次数因不同架构和不同的kernel版本而不同。 
获取每秒中断次数的一个简单办法是通过监控 /proc/interrupts文件,看下面的例子: 
root@localhost asm-i386]# cat /proc/interrupts | grep timer; sleep 10 ; cat /proc/interrupts | grep timer 
0: 24060043 XT-PIC timer 
0: 24070093 XT-PIC timer 
上面可以看到在指定的时间内timer次数的变化,每秒产生的中断次数为1000次。 
如果你的context switch比timer中断大很多。那么context switch更多的可能是I/O请求或者其他长时间的系统调用(比如sleep)产生。 
当一个应用请求一个操作不能立即实现时,kernel开始 context switch操作: 
存入请求的process并且试着切换到其他runnable process。这将使得CPU保持工作状态.

Context Switch大体上由两个部分组成: 
中断和进程(包括线程)切换,一次中断(Interrupt)会引起一次切换,进程(线程)的创建、激活之类的也会引起一次切换。 
Context Switch 的值也和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,则要好好检查检查。

用vmstat查看 cs(Context Switch)就是这个参数

参考资料:

Loadrunner 监控Unix系统性能指标的解释 
http://blog.csdn.net/marising/archive/2010/01/08/5160210.aspx

压力测试衡量CPU的三个指标:CPU Utilization、Load Average和Context Switch Rate 
http://blog.csdn.net/marising/archive/2010/01/12/5182771.aspx

LoadRunner压力测试时监控服务器Linux的资源情况 
http://blog.csdn.net/marising/archive/2010/01/08/5160210.aspx

理解Load Average做好压力测试 
http://www.blogjava.net/cenwenchu/archive/2008/06/30/211712.html

CPU负载的分析 
http://www.penglixun.com/tech/system/cpu_load_analyse.html

linux cpu相关性能指标 
http://www.51testing.com/?uid-3787-action-viewspace-itemid-5527

CPU性能的主要指标的更多相关文章

  1. intel和AMD CPU性能对比(2016年CPU天梯图)组装电脑必读!

    http://www.365pcbuy.com/article-411.html 特别提示:此文已经于2016年10月12日更新!内容变动较大,请细细品鉴! 如何为客户推荐高性价比机型是我站的重要工作 ...

  2. linux查看CPU性能及工作状态的指令

    http://www.aikaiyuan.com/9347.html http://blog.csdn.net/jk110333/article/details/8683478 http://www. ...

  3. (转)linux查看CPU性能及工作状态的指令mpstat,vmstat,iostat,sar,top

    衡量CPU性能的指标: 1,用户使用CPU的情况:CPU运行常规用户进程CPU运行niced processCPU运行实时进程 2,系统使用CPU情况:用于I/O管理:中断和驱动用于内存管理:页面交换 ...

  4. ARM CPU与Intel x86 CPU性能比较

    Qualcomm ARM CPU与Intel x86 CPU性能比较 随着移动互联网时代的到来,Qualcomm(高通).Texas Instruments(德州仪器)等基于ARM架构的CPU受到越来 ...

  5. CPU性能分析

    CPU性能分析工具 lscpu:查看CPU硬件信息 lscpu Architecture: x86_64 CPU op-mode(s): 32-bit, 64-bit Byte Order: Litt ...

  6. CPU性能过剩提升乏力影响未来行业发展吗?

    导读 虽然CPU仍然在不断发展,但是它的性能已经不再仅仅受限于单个处理器类型或制造工艺上了.和过去相比,CPU性能提升的步伐明显放缓了,接下来怎么办,成为横亘在整个行业面前的大问题. 虽然CPU仍然在 ...

  7. AMD Cpu 性能分析

    未完待续... 首先,几款APU系列的cpu: A8-: 一款低功耗的移动版处理器,四核心主频最高2.5GHz,二级缓存2MB, 图形核心Radeon R5 内存频率DDR3-1866,热设计功耗12 ...

  8. Sql Server CPU 性能排查及优化的相关 Sql

    Sql Server CPU 性能排查及优化的相关 Sql 语句,非常好的SQL语句,记录于此: --Begin Cpu 分析优化的相关 Sql --使用DMV来分析SQL Server启动以来累计使 ...

  9. linux查看CPU性能及工作状态的指令mpstat,vmstat,iostat,sar,top

    转载:http://www.cnblogs.com/xianghang123/archive/2011/08/25/2153591.html 衡量CPU性能的指标: 1,用户使用CPU的情况:CPU运 ...

随机推荐

  1. ubuntu 18.04下greenplum安装笔记(一)Linux下基础环境的搭建

    背景 需要构建一个用于数据仓库的分布式数据库集群. 每一个节点暂时不需要进行备份,同时也不考虑坏掉的情况. 每一个数据节点最好都不用进行过多的配置,安装起来方便. Greenplum的Shared-N ...

  2. 【Leetcode_easy】669. Trim a Binary Search Tree

    problem 669. Trim a Binary Search Tree 参考 1. Leetcode_easy_669. Trim a Binary Search Tree; 完

  3. 第十章 会话管理——《跟我学Shiro》

    转发地址:https://www.iteye.com/blog/jinnianshilongnian-2028675 目录贴:跟我学Shiro目录贴 Shiro提供了完整的企业级会话管理功能,不依赖于 ...

  4. Andrew Ng机器学习课程17(2)

    Andrew Ng机器学习课程17(2) 声明:引用请注明出处http://blog.csdn.net/lg1259156776/ 说明:主要介绍了利用value iteration和policy i ...

  5. Andrew Ng机器学习课程17(1)

    Andrew Ng机器学习课程17(1) 声明:引用请注明出处http://blog.csdn.net/lg1259156776/ 说明:主要介绍了强化学习与监督学习的设定上的区别,以及强化学习的框架 ...

  6. 洛谷 题解 UVA10048 【噪音恐惧症 Audiophobia】

    [题意] 输入一个\(C\)个点\(S\)条边 \((C<=100)\) \((S<=1000)\)的无向带权图,边权表示该路径上的噪声值.当噪声太大时,耳膜可能会收到损伤,所以当你从某点 ...

  7. 学习笔记:yaml语言教程

    目录 1.YAML基本概念 1.1 简介 1.2 基本语法 1.3 支持的数据结构: 1.4 注意点 2.数据结构 2.1 字典 2.2 数组 2.3 纯量 2.4 强制类型转换,双! 2.5 字符串 ...

  8. 第一个web 程序(servlet 和 jsp )&

    开发工具是便于程序员的编写,真正运行的代码不是编写的代码,而是tomcat服务器中部署好的代码.tomcat 会根据请求自动调用对应的代码进行请求处理. 可能遇到的问题: 1. 没有classes文件 ...

  9. java多线程上篇(一)

    操作系统与程序运行以及进程简介 一.线程与操作系统 操作系统是对计算机硬件资源的管理程序,是应用程序与计算机硬件交互的中间层,其本质仍旧是运行于硬件电路上的程序 对计算机硬件来说不存在操作系统,只是处 ...

  10. 使用 IDEA 创建 maven 项目

    文章目录 第一步 第二步 第三步 目录结构的设置 看下 web.xml 配置文件 第一步 点击 maven : 勾选从模板创建 : 选择 webapp : 第二步 第三步 如果你自己对 maven 进 ...