Linux操作系统性能监控工具和分析

本章带大家了解常见的Linux性能分析工具,为大家在性能排查问题上带来帮助

Linux性能分析的目的

性能优化的最终目的是:在一定范围内使系统的各项资源使用趋于合理并保持一定的平衡,即系统运行良好的时候恰恰就是系统资源达到一个平衡状态的时候。而在操作系统中,任何一项资源的过度使用都会破坏这种平衡状态,从而导致系统响应缓慢或者负载过高。例如:CPU资源的过度使用会导致系统中出现大量的等待进程,导致应用程序响应缓慢,而进程的大量增加又会导致系统内存资源的增加,当物理内存耗尽时,系统就会使用虚拟内存,而虚拟内存的使用又会造成磁盘I/O的增加并加大CPU的开销。因此,系统性能的优化就是硬件、操作系统、应用软件之间找到一个平衡点

Linux常用的性能分析工具

uptime 服务器已经运行的时长和当前登录的用户数,以及服务器在过去的1分钟、5分钟、15分钟的系统平均负载值,与CPU的内核有关。
Top(htop) 提供了实时的对系统处理器的状态监控。显示系统中CPU最"敏感"的任务列表.该命令可以按CPU使用,内存使用和执行事件对任务进行排序;而且该命令的很多特性都可以通过交互式命令或者在个人定制文件中进行设定
mpstat mpstat时MultiProcessor Statistics的缩写,是实时系统监控工具。
iostat 用于监控系统设备的io负载情况,iostat首次运行时显示自系统启动开始的各项统计信息,之后运行iostat将显示自上次运行命令以后的统计信息。
vmstat 展示给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交互情况,IO读写情况。
free 显示Linux系统的内存详细情况,包括已使用内存,可用内存,和Buffer及Cache的占用实际情况。
dstat dstat是一个用来替换vmstat,iostat netstat,nfsstat 和 ifstat这些命令的工具,是一个全能系统信息统计工具,与sysstat相比,dstat拥有一个彩色的界面,在手动观察性能的状态下,数据比较显眼容易观察;而且dstat支持即时刷新。
sar sar是(System Activity Reporter 系统活动情况报告)是目前Linux上最为全面的系统性能分析工具之一,可用从多方面对系统的活动进行报告,包括:文件的读写情况、系统调用的使用情况、磁盘I/O、CPU效率、内存使用状况、进程活动及IPC有关的活动等

Linux操作系统性能监控工具和分析

Linux操作系统性能监控工具和分析

针对这些命令,划分为如下几大类常用命令:

CPU性能分析工具: Memory性能分析工具: I/O性能分析工具 Network性能分析工具:
vmstat vmstat vmstat netstat
sar top iostat tcpdump
mpstat free iotop ip
top dstat blktrace nicestat
dstat slabtop dtrace dtrace
pidstat trace stap dstat

Linux操作系统性能指标分析

1,CPU性能评估标准

CPU是否有瓶颈需要针对不同类型的架构来判断,常规的判断标准是CPU的利用率小于80%,那么Idle要大于20%
以下以Sar和vmstat命令讲解为例,简单的分析CPU问题:sar -u [interval] [iterations] 示例:sar -u 5 30

  • 步骤1:%Idle 是否很低?这是CPU未在运行任何进程的时间百分比。在一端时间内 %idle 为零可能是 CPU 瓶颈的第一个指示。不是 -> 系统未发生CPU瓶颈。转至步骤3。是 -> 系统可能发生了CPU、内存或I/O瓶颈,转至步骤2
  • 步骤2:%usr是否较高?很多系统正常情况下花费80%的CPU时间于用户,20%用于系统。其他系统通常会使用80%左右的用户时间。不是->系统可能遇到CPU、内存或I/O瓶颈。转至步骤3
  • 步骤3:%wio 的值是否大于15?是->以后记住这个值。它可能表示磁盘或磁带瓶颈。不是->转至步骤4
  • 步骤4:# sar -d [interval] [interactions]
    用于任何磁盘的%busy是否都大于50?(请记住,50%指示一个大概的指南,它可能远远高于您系统的正常值。在某些系统上,甚至%busy值为20可能就表示发生了磁盘瓶颈,而其他系统正常情况下可能就为50%busy。)对于同一磁盘上,avwait是否大于avserv?不是->很可能不是磁盘瓶颈,转至步骤6。是->此设备上好像发生了IO瓶颈。转至步骤5。
  • 步骤5:系统上存在磁盘瓶颈,发生瓶颈的磁盘上有哪些内容?调整发生磁盘IO瓶颈的系统。Swap->可能是由于内存瓶颈导致的。转至步骤6.
  • 步骤6:#vmstat [interval] [interactions] 在很长的一端时间内,po是否总是大于0,对于一个s800系统(free4k)是否小于2MB,(对于s700系统free4k是否小于1MB)?(值2MB和1MB指示大概的指南,真正的LOTSFREE值,即系统开始发生paging的值是在系统引导时计算的,它是基于系统内存的大小的。)不是->如果步骤1中的%idle较低,系统则很可能发生了CPU瓶颈,存在其他瓶颈。是->系统上存在内存瓶颈,调整发生内存瓶颈的系统。

2,Memory性能评估标准

内存的使用首先我们要自己系统的可用内存是多少,一般情况下,记录的free memory并不是实际性的可用内存,实际可用内存=free memory + buffers + cached :
一般情况下分析内存是否有问题,先要了解内核的模块在分配资源,为了提高效率和资源的利用率,都是透过slab来分配的,我们通过slab的信息,再配合源码能粗粗了解系统的运行情况,比如说什么资源有没有不正常的多,或者什么资源有没有泄露,linux系统透过/proc/slabinfo来向用户暴露slab的使用情况的。
对于物理内存一直上涨的问题,一般是需要实时监控来详细说明,那个可以使用监控软件,得到周期性的数据来分析:**内存常规判断标准是物理内存利用率小于75% **

3,磁盘性能评估标准

磁盘比内存慢得多,所以过多的磁盘u轰动是许多应用程序性能低下的原因。磁盘活动可能源于交换,也可能源于应用程序或操作系统的请求。过多的日志记录活动也会争用磁盘。
分析磁盘瓶颈的最佳命令是iostat。这个命令可以指出再特定时间点发生了多少读写操作,以及磁盘控制器的饱和程度有多大。如果有多个磁盘,那么把负载分配到不同的磁盘上是加快读写的有效方法,因为磁盘延迟的最大组成部分是寻道时间。不断增长的文件(比如日志文件和数据库日志)应该放在单独的磁盘上,与应用程序的磁盘和数据库分开。
vmstat和iostat报告系统在等待IO方面花费的时间百分比,也就是CPU空闲而系统正在等待IO返回的时间。iowait值高就意味着磁盘缓慢或负载过大。
与磁盘密切相关的是可以打开的文件描述符数量。如果用光了文件描述符,那么打开文件的操作就会失败。通常,ulimit命令可以增加可用的文件描述符数量,但是操作系统对于ulimit可能有内核限制。
下面以iostat和vmstat命令来讲,它列出了idle和tps,一般情况下判断I/O是否有问题,除了上面两个指标还需要看util,%util是磁盘繁忙率,大于60%的时候IO操作已经很频繁了,需要详细分析一下。

4,Network性能评估标准

网络情况一般用写shell脚本跟踪,因为它会把网络的上传和下载都记录下来,网络高级命令可可以用dstat跟踪,接受和发送都显示的很清楚,当发现网络发送和接受不正常的时候可以供排查!

5,监控工具

对资源的使用状况进行长期的监控和数据采集nagios、cacti,还可以用开源的IBM Nmon该工具,需要依据不同的操作系统,使用不同的版本;

相关文章: