admin 管理员组文章数量: 887042
2024年1月13日发(作者:华为数据线接口类型)
Linux操作系统性能监控工具和指标分析
目 录
第一章
绪论 ........................................................................................................................... 2
1.1 Linux性能分析的目的 ................................................................................................................. 2
1.2Linux性能指标分析的命令 ........................................................................................................... 2
第二章
性能分析 ................................................................................................................... 5
2.1 CPU性能评估标准 ......................................................................................................................... 5
2.2Memory性能评估标准 ..................................................................................................................... 5
2.3磁盘性能评估标准 ......................................................................................................................... 7
2.4Network性能评估标准 ................................................................................................................... 8
2.5 监控工具 ........................................................................................................................................ 9
总结 ............................................................................................................................................. 10
参考文献 ...................................................................................................................................... 11
1
第一章 绪论
Linux是一套免费使用和自由传播的类Unix操作系统,它主要用于基于Intel x86系列CPU的计算机上。这个系统是由全世界各地的成千上万的程序员设计和实现的。其目的是建立不受任何商品化软件的版权制约的、全世界都能自由使用的Unix兼容产品。
Linux之所以受到广大计算机爱好者的喜爱,主要原因有两个,一是它属于自由软件,用户不用支付任何费用就可以获得它和它的源代码,并且可以根据自己的需要对它进行必要的修改,无偿对它使用,无约束地继续传播。另一个原因是,它具有Unix的全部功能,任何使用Unix操作系统或想要学习 Unix操作系统的人都可以从Linux中获益。
然而Linux下面的版本相当的多,Radhat、Ubuntu、CentOS、Debian、SUSE、Gentoo等都是Linux内核,我们下面主要针对Linux内核下,监控工具和命令的讲解(部份命令,需要下载不同的操作系统所对应的插件!!)。
1.1 Linux性能分析的目的
Linux操作系统是一个开源产品,也是一个开源软件的实践和应用平台,在这个平台下由无数的开源软件支撑,常见的有Apache、Tomcat、MySQL、PHP等。开源软件的最大理念是自由、开放,那么Linux作为一个开源平台,最终要实现的是通过这些开源软件的支持,以最低廉的成本,达到应用性能的最优化。但是,系统的性能问题并非是孤立的,解决了一个性能瓶颈,可能会出现另一个性能瓶颈,所以说性能优化的最终目的是:在一定范围内使系统的各项资源使用趋于合理并保持一定的平衡,即系统运行良好的时候恰恰就是系统资源达到了一个平衡状态的时候。而在操作系统中,任何一项资源的过度使用都会破坏这种平衡状态,从而导致系统响应缓慢或者负载过高。例如,CPU资源的过度使用会造成系统中出现大量的等待进程,导致应用程序响应缓慢,而进程的大量增加又会导致系统内存资源的增加,当物理内存耗尽时,系统就会使用虚拟内存,而虚拟内存的使用又会造成磁盘I/O的增加并加大CPU的开销。因此,系统性能的优化就是在硬件、操作系统、应用软件之间找到一个平衡点。
我们本次所讲的Linux性能分析都是基于Linux的基本命令和使用一些免费工具来完成。
1.2 Linux性能指标分析的命令
性能调优的第一步是性能分析,下面从性能分析着手进行一些介绍,尤其对Linux性能分析工具基础命令的用法和实践进行详细介绍
命令
uptime
Top(htop)
解释
服务器已经运行的时长和当前登录的用户数,以及服务器在过去的1分钟、5分钟、15分钟的系统平均负载值,与CPU的内核有关。
提供了实时的对系统处理器的状态监视。显示系统中CPU最“敏感”的任务列表.该命令可以按CPU使用.内存使用和执行时间对任务进行排序;而且该命令的很多特性都可以通过交互式命令或者在个人定制文件中进行设定。
mpstat是MultiProcessor Statistics的缩写,是实时系统监控工具。
用于监控系统设备的IO负载情况,iostat首次运行时显示自系统启动开始的各项统计信息,之后运行iostat将显示自上次运行该命令以后的统计信息。
展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况。
显示Linux系统的内存详细情况,包括已使用内存,可用内存,和Buffer及Cache的占用实际情况。
dstat是一个用来替换 vmstat,iostat netstat,nfsstat和ifstat这些命令的工具,
是一个全能系统信息统计工具. 与sysstat相比, dstat拥有一个彩色的界面,
在手动观察性能状况时, 数据比较显眼容易观察; 而且dstat支持即时刷新。
2
mpstat
iostat
vmstat
free
dstat
sar Sar是(System Activity Reporter系统活动情况报告)是目前 Linux 上最为全面的系统性能分析工具之一,可以从多方面对系统的活动进行报告,包括:文件的读写情况、系统调用的使用情况、磁盘I/O、CPU效率、内存使用状况、进程活动及IPC有关的活动等。
还有一些高级工具,详见下图:
Linux性能监控工具及对应的内核层
内核层性能分析工具
3
针对这些命令,划分为如下几大类常用命令:
CPU性能分析工具:
vmstat
sar
mpstat
top
dstat
pidstat
Memory性能分析工具:
vmstat
top
free
dstat
slabtop
trace
I/O性能分析工具:
vmstat
iostat
iotop
blktrace
dtrace
stap
Network性能分析工具:
netstat
tcpdump
ip
nicestat
dtrace
dstat
4
第二章 Linux操作系统性能指标分析
由于非图形化操作系统,性能的监控和分析除了依靠一些监控工具,操作系统本身也提供了很多的命令本章主要讲解一些操作系统自带的命令的使用和简要的分析,2.5章节简单的介绍了一下监控工具。在使用过程中,可以依靠实际情况来使用;
2.1 CPU性能评估标准
CPU的速度与性能很大一部分决定了系统整体的性能,先确定是否使用SMP(多核处理器),当然大部分使用的都是多核处理器,那么在做性能分析分析的时候,我们需要分析整体CPU的性能,那么需要长期监控CPU,2.5章节是推荐的工具;
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。
是->系统可能由于用户进程遇到CPU瓶颈。调整系统的CPU瓶颈。
步骤3:%wio的值是否大于15?是->以后记住这个值。它可能表示磁盘或磁带瓶颈。不是->转至步骤4。
步骤4:# sar -d [interval] [iterations]
用于任何磁盘的%busy是否都大于50? (请记住,50%指示一个大概的指南,它可能远远高于您系统的正常值。在某些系统上,甚至%busy值为20可能就表示发生了磁盘瓶颈,而其他系统正常情况下可能就为50% busy。)对于同一个磁盘上,avwait是否大于avserv?不是->很可能不是磁盘瓶颈,转至步骤6。是->此设备上好像发生了IO瓶颈。转至步骤5。
步骤5:系统上存在磁盘瓶颈,发生瓶颈的磁盘上有哪些内容?调整发生磁盘IO瓶颈的系统。Swap ->可能是由于内存瓶颈导致的。转至步骤6。
步骤6:# vmstat [interval] [iterations]在很长的一端时间内,po是否总是大于0?对于一个s800系统(free
* 4k)是否小于2 MB,(对于s700系统free * 4k是否小于1 MB)?(值2 MB和1 MB指示大概的指南,真正的LOTSFREE值,即系统开始发生paging的值是在系统引导时计算的,它是基于系统内存的大小的。)不是->如果步骤1中的%idle较低,系统则很可能发生了CPU瓶颈。调整发生了CPU瓶颈的系统。如果%idle不是很低,则可能不是CPU、磁盘IO或者内存瓶颈。存在其他瓶颈。是->系统上存在内存瓶颈,调整发生内存瓶颈的系统。
2.2 Memory性能评估标准
内存的使用首先我们要自己系统的可用内存是多少,一般情况下,记录的free memory并不是实际性的可用内存,实际可用内存=free memory+buffers+cached如下图:
5
实际可用内存是22859MB,已使用内存是9249M;
一般情况下分析内存是否有问题,先要了解内核的模块在分配资源,为了提高效率和资源的利用率,都是透过slab来分配的。我们通过slab的信息,再配合源码能粗粗了解系统的运行情况,比如说什么资源有没有不正常的多,或者什么资源有没有泄漏。linux系统透过/proc/slabinfo来向用户暴露slab的使用情况的,我们来看下:
那么我们用slabtop比对一下系统中的指标
6
Slabtop的值可以和上图的值做比对,看看是否有问题,逐一排查!
对于物理内存一直上涨的问题,一般是需要实时监控来详细说明,那个可以使用监控软件,得到周期性的数据来分析;内存常规判断标准是物理内存利用率小于75%,下面以sar命令为列讲解内存分页
kbmemfree
kbmemused
%memused
kbcommit
%commit
这个值和free命令中的free值基本一致,所以它不包括buffer和cache的空间
这个值和free命令中的used值基本一致,所以它包括buffer和cache的空间
这个值是kbmemused和内存总量(不包括swap)的一个百分比
保证当前系统所需要的内存,即为了确保不溢出而需要的内存(RAM+swap)
这个值是kbcommit与内存总量(包括swap)的一个百分比
kbbuffers和kbcached
这两个值就是free命令中的buffer和cache
2.3 磁盘性能评估标准
7
磁盘比内存慢得多,所以过多的磁盘活动是许多应用程序性能低下的原因。磁盘活动可能源于交换,也可能源于应用程序或操作系统的请求。过多的日志记录活动也会争用磁盘。
分析磁盘瓶颈的最佳命令是iostat。这个命令可以指出在特定时间点发生了多少读写操作,以及磁盘控制器的饱和程度有多大。如果有多个磁盘,那么把负载分配到不同的磁盘上是加快读写速度的有效方法,因为磁盘延迟的最大组成部分是寻道时间。不断增长的文件(比如日志文件和数据库日志)应该放在单独的磁盘上,与应用程序的磁盘和数据库分开。
vmstat 和 iostat 报告系统在等待 IO 方面花费的时间百分比,也就是 CPU 空闲而系统正在等待 IO
返回的时间。iowait 值高就意味着磁盘缓慢或负载过大。
与磁盘密切相关的是可以打开的文件描述符数量。如果用光了文件描述符,那么打开文件的操作就会失败。通常,ulimit 命令可以增加可用的文件描述符数量,但是操作系统对于 ulimit 可能有内核限制。
下面以iostat和vmstat命令为例
它例出和的idle和tps;一般情况下判断I/O是否有问题除了看上面两个指标还需要看一下Util
%util是磁盘繁忙率,大于60%的时候IO操作已经很频繁了,需要详细分析一下;
2.4 Network性能评估标准
网络情况一般用写shell脚本跟踪,因为它会把网络的上传和下载都记录下来,当超过一定数据会有提示;如果有需要可以找我,当然网络上也有;大概显示的结果如下图:
8
网络高级命令可以用dstat跟踪,如下图:
接受和发送都显示的很清楚,当发现网络发送或接受不正常的时候可以供排查!
2.5 监控工具
对资源的使用状况进行长期的监控和数据采集nagios、cacti,还可以用开源的IBM Nmon该工具,需要依据不同的操作系统,使用不同的版本;
以下简要说明一下IBM的Nmon工具,nmon是IBM开发,对操作系统层的性能监控工具,有aix和linux两种版本,该工具是一个二进制的文件,是一个非常高效的工具可以工作于哑屏幕、telnet 会话、甚至拨号线路。另外,它并不会消耗大量的 CPU 周期,通常低于百分之二。在更新的计算机上,其 CPU 使用率将低于百分之一。
使用哑屏幕,在屏幕上对数据进行显示,并且每隔两秒钟对其进行更新。然而,您可以很容易地将
9
这个时间间隔更改为更长或更短的时间段。如果您拉伸窗口,并在X Windows、VNC、PuTTY 或类似的窗口中显示这些数据,nmon 工具可以同时输出大量的信息。
nmon 工具还可以将相同的数据捕获到一个文本文件,便于以后对报告进行分析和绘制图形。输出文件采用电子表格的格式 (.csv)。
以下是nmon生成的的CPU信息图形展示;
总结
针对之前工作经验总结出上述Linux性能监控和分析文档;文档仅对CPU,Memory,Disk和NetWork中部分功能进行讲解。多处参考网络资料部分列出资料出处。参见附录《参考文献》
10
参考文献
[1] IBM developerworks 中国
[2] 百度文库
[3] Byrendangregg博客
11
版权声明:本文标题:《Linux操作系统性能监控工具和指标分析V1.0》 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1705123810h473727.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论