性能分析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等待而的线程数量,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操作上的总时间,与ed相似。

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运行实时进程。一个进程可以在用户方式下执行,也可以在系统(内核)方式下执行,当一个进程在内核代码中运行时,我们称其处于内核态;当一个进程正在执行用户自己的代码时,我们称其处于用户态,在用户方式下执行时,进程在它自己的应用代码中执行,不需要内核资源来进行计算、管理内存或设置变量

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主要包括: 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)

运行进程队列的长度。对于可运行状态的进程个数的大小,这些进程在内存中准备就绪

原文地址:https://www.cnblogs.com/likui360/p/9368108.html

时间: 2024-10-05 20:47:48

性能分析Linux服务器CPU利用率(转)的相关文章

性能分析_linux服务器CPU_CPU利用率

CPU度量 1.  指标范围 1.1  User mode CPU utilization+ System mode CPU utilization 合理值:60-85%,如果在一个多用户系统中us+sy时间超过85%,则进程可能要花时间在运行队列中等待,响应时间和业务吞吐量会受损害:us过大,说明有用户进程占用很多cpu时间,需要进一步的分析其它软硬件因素:sy过大,说明系统管理方面花了很多时间,说明该系统中某个子系统产生了瓶颈,需要进一步分析其它软硬件因素. 1.2  Wa(wait) 参考

[转帖]Java性能检测工具-记录一次通过jstack排查Linux服务器CPU占用率很高的实践

Java性能检测工具-记录一次通过jstack排查Linux服务器CPU占用率很高的实践 https://www.jianshu.com/p/d4e31301ba2e 一.问题描述 Linux服务器的配置是4核16G,将war包部署到tomcat后,启动tomcat,发现内存占用率不高,但是CPU一直高达100%:浏览器输入相关url也无法访问该项目,且tomcat的进程一直存在,程序的配置什么的都没问题啊,一头雾水......通过top命令查看服务器的性能状况如下: [[email prote

[性能分析]linux文件描述符(转)

1.什么是文件和文件描述符 Linux中文件可以分为4种:普通文件.目录文件.链接文件和设备文件.1.普通文件是用户日常使用最多的文件,包括文本文件.shell脚本.二进制的可执行和各种类型的数据.ls -lh 来查看某个文件的属性,可以看到有类似 -rw-r--r-- ,值得注意的是第一个符号是 - ,这样的文件在Linux中就是普通文件.这些文件一般是用一些相关的应用程序创建,比如图像工具.文档工具.归档工具... .... 或 cp工具等.这类文件的删除方式是用rm 命令:2.目录文件在l

[性能分析]linux文件描述符

1.什么是文件和文件描述符 Linux中文件可以分为4种:普通文件.目录文件.链接文件和设备文件.1.普通文件是用户日常使用最多的文件,包括文本文件.shell脚本.二进制的可执行和各种类型的数据.ls -lh 来查看某个文件的属性,可以看到有类似 -rw-r--r-- ,值得注意的是第一个符号是 - ,这样的文件在Linux中就是普通文件.这些文件一般是用一些相关的应用程序创建,比如图像工具.文档工具.归档工具... .... 或 cp工具等.这类文件的删除方式是用rm 命令:2.目录文件在l

编程实现获取linux服务器cpu、内存和磁盘使用率

proc文件系统介绍 /proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间.它以文件系统的方式为内核与进程提供通信的接口.用户和应用程序可以通过/proc得到系统的信息,并可以改变内核的某些参数.由于系统的信息,如进程,是动态改变的,所以用户或应用程序读取/proc目录中的文件时,proc文件系统是动态从系统内核读出所需信息并提交的. /proc目录中有一些以数字命名的目录,它们是进程目录.系统中当前运行的每一个进程在/proc下都对应一个以进程号为目录名的目录/proc/pi

性能分析_linux服务器CPU_中断

中断 1.  指标范围 1.1  Interrupt rate 应该与cpu利用率结合分析,如果cpu利用率在合理范围内,大量的中断也是可以接受的.一个巨大的中断值,同时伴随着缓慢的系统性能表现,指示存在硬件问题 1.2  Context Switch Rate 应该与cpu利用率结合分析,如果cpu利用率在合理范围内,大量的中断也是可以接受的. 当每次调用引起的上下文切换大于等于4时,需要结合分析 网上也有说,需要少于5000*cpu个数 2.  概念说明 CPU 是一种硬件资源,和任何其他硬

Linux服务器CPU、内存、磁盘空间、负载情况查看python脚本

网上搜,东拼西凑,组装了一个可以查Linux服务器CPU使用率.内存使用率.磁盘空间占用率.负载情况的python脚本. 脚本内容如下: # -*- coding:utf-8 -*- - import os, time last_worktime=0 last_idletime=0 def get_cpu(): global last_worktime, last_idletime f=open("/proc/stat","r") line=""

性能分析_linux服务器CPU_Load Average

CPU度量Load Average 1.  概念介绍 1.1  Linux系统进程状态 在linux中,process有以下状态: runnable (就绪状态):blocked waiting for an event to complete(阻塞等待一个时间完成,此状态的process可能在等待一个I/O操作获取的数据,或者是一个系统调用的结果等):running(正在执行). 如果一个process在runnable状态,即它和其他同样处在runnable状态的process在等待CPU时

为何我的LINUX服务器内存利用率很高?正确理解LINUX内存使用机制

今天有人告诉我说linux服务器上的内存快不够用了,128G的内存,马上要用光了.我吓了一跳,这台服务器上的应用现在负载很小啊,怎么利用率会很高呢.先用ZABBIX看了下,内存剩余空间还是很大的,还有117G的空余啊.然后又登陆到服务器上用再看下: [[email protected] ~]$ top top - 11:41:03 up 415 days, 1:06, 2 users, load average: 0.17, 0.12, 0.28 Tasks: 847 total, 1 runn