性能分析Linux服务器CPU利用率(转)
1. 指标范围
1.1 User mode CPU utilization+ System mode CPU utilization
合理值:60-85%,如果在一个多用户系统中us+sy时间超过85%,则进程可能要花时间在运行队列中等待,响应时间和业务吞吐量会受损害;us过大,说明有用户进程占用很多cpu时间,需要进一步的分析其它软硬件因素;sy过大,说明系统管理方面花了很多时间,说明该系统中某个子系统产生了瓶颈,需要进一步分析其它软硬件因素。
1.2 Wa(wait)
参考值:小于25%,超过25%的wa的值可以表示磁盘子系统可能没有被正确平衡,也可能是磁盘密集工作负载的结果,系统的磁盘或其它I/o可能有问题,可以通过iostat/SAR –C命令进一步分解分析
1.3 Id(idle)
参考值:大于40,如果r经常大于4,且id经常小于40,表示cpu的负荷很重
1.4 r
参考值:小于4,队列大于4时,表明系统的cpu或内存可能有问题,如果r经常大于4,且id经常少于40,表示cpu的负荷很重。当队列变长时,队列中进程在等待cpu调度执行时所花的时间会变长
1.5 判断cpu瓶颈的方法
很慢的响应时间(slow response time)
Cpu的空闲时间为零(zero percent idle cpu)
过高的用户占用cpu时间(high percent user cpu)
过高的系统占用cpu时间(high percent system cpu)
长时间的有很长的运行进程队列(large run queue size sustained over time)
2. 如何查看cpu利用率
2.1 使用top命令查看
数据来自/proc/stat文件

%us =(User time + Nice time)/CPU时间*100%
%sy=(System time + Hardirq time +Softirq time)/ CPU时间*100%
%id=(Idle time)/CPU时间*100%
%ni=(Nice time)/CPU时间*100%
%wa=(Waiting time)/CPU时间*100%
%hi=(Hardirq time)/CPU时间*100%
%si=(Softirq time)/CPU时间*100%
%st=(Steal time)/CPU时间*100%
备注: top 命令默认情况下,是每 3 秒刷新一次。也可以通过 top -d <刷新时间间隔> 来指定刷新频率,如top -d 0.1 或top -d 0.01 等。top 执行时,也可以按“s ”键,修改时间间隔。
2.2 使用vmstat查看

r表示运行队列的大小,b表示由于IO等待而block的线程数量,in表示中断的数量,cs表示上下文切换的数量。
2.3 其它查看方式
Iostat、sar -q、sar –u等
3. CPU介绍
3.1 内核中的时间
HZ是系统时钟在一秒内固定发出时钟中断的次数。HZ在编译内核前是可以进行配置的,因此通过下述命令就可以查看当前系统的时钟中断频率:cat /boot/config-`uname -r` | grep CONFIG_HZ
tick为系统时钟每“滴答“一次的时间,其值为(1/HZ)秒。也就是连续两次时钟中断之间的时间间隔。
jiffies用来计算自系统启动以来tick的次数,也就是说系统时钟每产生一次时钟中断,该变量的值就增加一次。
3.2 CPU时间组成
CPU的工作时间由三部分组成:用户态时间、系统态时间和空闲态时间。具体的组成为:
CPU时间包含User time、System time、Nice time、Idle time、Waiting time、Hardirq time、Softirq time、Steal time
空闲态时间==idle time
用户态时间==user time+ Nice time。
内核态时间==system time+ Hardirq time+ Softirq time。
user time。指CPU在用户态执行进程的时间。
system time。指CPU在内核运行的时间。
nice time。指系统花费在调整进程优先级上的时间。
idle time。系统处于空闲期,等待进程运行。
waiting time。指CPU花费在等待I/O操作上的总时间,与blocked相似。
steal time。指当前CPU被强制(involuntary wait )等待另外虚拟的CPU处理完毕时花费的时间,此时 hypervisor 在为另一个虚拟处理器服务。
Softirq time 、Hardirq time。分别对应系统在处理软硬中断时候所花费的CPU时间。
3.3 User mode CPU utilization
%usr。显示了用户方式下所花费CPU时间的百分比,用户使用CPU的进程包括:cpu运行常规用户进程,cpu运行niced process,cpu运行实时进程。一个linux进程可以在用户方式下执行,也可以在系统(内核)方式下执行,当一个进程在内核代码中运行时,我们称其处于内核态;当一个进程正在执行用户自己的代码时,我们称其处于用户态,在用户方式下执行时,进程在它自己的应用程序代码中执行,不需要内核资源来进行计算、管理内存或设置变量
3.4 System mode CPU utilization
显示了系统方式下所花费cpu时间的百分比,包括内核进程(kprocs)和其他需要访问内核资源的进程所消耗的cpu资源,系统使用cpu的进程包括:用于系统调用,用于I/O管理(中断和驱动),用于内存管理(paging and swapping),用于进程管理(context switch and process start),如果一个进程需要内核资源,它必须执行一个系统调用,并由此切换到系统方式从而使该资源可用。
3.5 %wa(wait)
显示了暂挂本地磁盘I/O和NFS加载的磁盘的cpu空闲百分比,是由于进程等待I/O而使cpu处于空闲状态的比率,I/O主要包括:block I/O,raw I/O,VM-paging/swapins。如果在wait运行时至少有一个未完成的磁盘I/O,该事件就归为I/O等待时间,对磁盘的I/O请求会导致调用的进程阻塞(或睡眠),直到请求完成为止,一旦进程的I/O请求完成,该进程就放入运行队列中。如果I/O很快完成,该进程可以使用更多的cpu时间。
3.6 %id(idle)
除了上面的WIO以外的空闲情况,显示了没有本地磁盘I/O时cpu空闲或等待的时间百分比。如果没有线程可以执行(运行队列为空),系统分派一个叫做wait的线程,可称为idle kproc。如果ps报告显示这个线程的总计时间较高,这表明存在时间段,其中没有其它线程准备在cpu上运行或等待执行。系统因此大部分时间空闲或等待新任务。
3.7 r(runq-sz)
运行进程队列的长度。对于可运行状态的进程个数的大小,这些进程在内存中准备就绪
性能分析Linux服务器CPU利用率(转)的更多相关文章
- 性能分析Linux服务器CPU利用率
CPU度量 1. 指标范围 1.1 User mode CPU utilization+ System mode CPU utilization 合理值:60-85%,如果在一个多用户系统中us+ ...
- 性能分析_linux服务器CPU_CPU利用率
CPU度量 1. 指标范围 1.1 User mode CPU utilization+ System mode CPU utilization 合理值:60-85%,如果在一个多用户系统中us+ ...
- jstack来分析linux服务器上Java应用服务性能异常
使用jdk自带的jstack来分析linux服务器上应用服务性能异常: 1.top查找出哪个进程消耗的系统资源情况 [op1@jira ~]$ top top - 19:23:43 up 22 day ...
- 性能分析_linux服务器CPU_中断
中断 1. 指标范围 1.1 Interrupt rate 应该与cpu利用率结合分析,如果cpu利用率在合理范围内,大量的中断也是可以接受的.一个巨大的中断值,同时伴随着缓慢的系统性能表现,指示 ...
- 查看linux服务器CPU相关
查看linux服务器CPU相关: 1.查看物理CPU个数 cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l 2.查看 ...
- Linux服务器CPU、内存、磁盘空间、负载情况查看python脚本
[本文出自天外归云的博客园] 网上搜,东拼西凑,组装了一个可以查Linux服务器CPU使用率.内存使用率.磁盘空间占用率.负载情况的python脚本. 脚本内容如下: # -*- coding:utf ...
- 查看Linux服务器CPU总核数
下面介绍查看Linux服务器CPU总核数的方法. 通过/proc/cpuinfo可查看CPU个数及总核数. [root@kevin ~]# grep processor /proc/cpuinfo | ...
- 性能分析_linux服务器CPU_Load Average
CPU度量Load Average 1. 概念介绍 1.1 Linux系统进程状态 在linux中,process有以下状态: runnable (就绪状态):blocked waiting fo ...
- 浅谈Linux下CPU利用率和CPU负载【转】
转自:https://blog.csdn.net/Alisa_xf/article/details/71430406 在Linux/Unix下,CPU利用率(CPU utilization)分为用户态 ...
随机推荐
- 『Python基础-1 』 编程语言Python的基础背景知识
#『Python基础-1 』 编程语言Python的基础背景知识 目录: 1.编程语言 1.1 什么是编程语言 1.2 编程语言的种类 1.3 常见的编程语言 1.4 编译型语言和解释型语言的对比 2 ...
- arping命令用法
arping命令使用说明 BusyBox v1.17.3 (2011-07-20 17:01:30 CST) multi-call binary. Usage: arping [-fqbDUA] [- ...
- 利用谷歌翻译网站和Adobe Acrobat翻译英文文档,且鼠标放置后显示英文原文(无字数限制)(18/12/11更新)
软件:Adobe Acrobat 网页:https://translate.google.cn/?tr=f&hl=zh-CN 方法: 第一步:用Adobe Acrobat 打开英文 ...
- 007---TCP VS UDP
- DevExpress 学习链接
http://blog.csdn.net/u013816709/article/category/3114039 http://blog.csdn.net/david_520042/article/c ...
- 杭州优步uber司机第三组奖励政策
-8月9日更新- 优步杭州第三组: 定义为激活时间在2015/8/3之后(含)的车主(以优步后台数据显示为准) 滴滴快车单单2.5倍,注册地址:http://www.udache.com/如何注册Ub ...
- Mysql忘记密码处理办法
找回密码的步骤如下: 1.停止mysql服务器 sudo /opt/lampp/lampp stopmysql 2.使用`--skip-grant-tables' 参数来启动 mysqld sudo ...
- 一步一步学习JNI
本文来自网易云社区 作者:孙有军 前言 本篇的主要目的就是JNI开发入门,使大家对JNI开发流程有一个大致的了解,后续再进行深入学习. JNI不是Android特有的,JNI是Java Native ...
- 「日常训练」All Friends(POJ-2989)
题意 分析 代码 #include <iostream> #include <cstring> #include <algorithm> #define MP ma ...
- Jenkis 无法下载插件问题解决
在新机器上安装jenkins后,安装插件报如下错误 sun.security.provider.certpath.SunCertPathBuilderException: unable to find ...