您的位置:首页 > 运维架构 > Linux

LINUX下性能分析工具简单介绍

2013-07-03 02:20 246 查看

linux下常见的性能分析工具介绍
工具介绍-vmstat

vmstat是一个很全面的性能分析工具,可以观察到系统的进程状态、内存使用、虚拟内存使用、磁盘的IO、中断、上下问切换、CPU使用等。系统性能分析工具中,我使用最多的是这个,除了 sysstat 工具包外,这个工具能查看的系统资源最多。

     对于 Linux 的性能分析,100%理解 vmstat 输出内容的含义,那你对系统性能分析的能力就算是基本掌握了。

    我这里主要说明一下这个命令显示出的部分数据代表的含义,和它反映出系统相关资源的状况。输出内容共有 6 类,分别说明如下。

Procs

r:

   运行的和等待(CPU时间片)运行的进程数,这个值也可以判断是否需要增加CPU(长期大于1)

b:

   处于不可中断状态的进程数,常见的情况是由IO引起的

   

Memory

swpd: 切换到交换内存上的内存(默认以KB为单位)

如果 swpd 的值不为0,或者还比较大,比如超过100M了,但是 si, so 的值长期为 0,这种情况我们可以不用担心,不会影响系统性能。

free: 空闲的物理内存

buff: 作为buffer cache的内存,对块设备的读写进行缓冲

cache: 作为page cache的内存, 文件系统的cache

如果 cache 的值大的时候,说明cache住的文件数多,如果频繁访问到的文件都能被cache住,那么磁盘的读IO bi 会非常小。

Swap

si: 交换内存使用,由磁盘调入内存

so: 交换内存使用,由内存调入磁盘

内存够用的时候,这2个值都是0,如果这2个值长期大于0时,系统性能会受到影响。磁盘IO和CPU资源都会被消耗。

我发现有些朋友看到空闲内存(free)很少或接近于0时,就认为内存不够用了,实际上不能光看这一点的,还要结合si,so,如果free很少,但是si,so也很少(大多时候是0),那么不用担心,系统性能这时不会受到影响的。

Io

bi: 从块设备读入的数据总量(读磁盘) (KB/s),

bo: 写入到块设备的数据总理(写磁盘) (KB/s)

随机磁盘读写的时候,这2个 值越大(如超出1M),能看到CPU在IO等待的值也会越大

System

in: 每秒产生的中断次数

cs: 每秒产生的上下文切换次数

上面这2个值越大,会看到由内核消耗的CPU时间会越多

Cpu

us: 用户进程消耗的CPU时间百分比

us 的值比较高时,说明用户进程消耗的CPU时间多,但是如果长期超过50% 的使用,那么我们就该考虑优化程序算法或者进行加速了(比如 PHP/Perl)

sy: 内核进程消耗的CPU时间百分比

sy 的值高时,说明系统内核消耗的CPU资源多,这并不是良性的表现,我们应该检查原因。

wa: IO等待消耗的CPU时间百分比

wa 的值高时,说明IO等待比较严重,这可能是由于磁盘大量作随机访问造成,也有可能是磁盘的带宽出现瓶颈(块操作)。

id: CPU处在空闲状态时间百分比

情景分析

   这个vmstat的输出那些信息值得关注?

Procs r: 运行的进程比较多,系统很繁忙

Io bo: 磁盘写的数据量稍大,如果是大文件的写,10M以内基本不用担心,如果是小文件写2M以内基本正常

Cpu us: 持续大于50,服务高峰期可以接受

Cpu wa: 稍微有些高

Cpu id:持续小于50,服务高峰期可以接受

///////////////////////

工具介绍-top

这个命令可以查看系统中运行的进程的状况,CPU使用状况,系统负载,内存使用等。它是检查系统进程运行状况最方便的工具了,它默认显示部分活动的进程,并且按照进程使用CPU的多少排序。它可以显示全部CPU的使用状况,也可以显示每个进程都运行在那个CPU上面。

   

    我习惯使用这个命令查看那些进程或者那类进程占用CPU和内存资源最多,以此迅速定位存在性能问题的进程,以及运行异常的进程。

用 top 看到的内存的说明(Mem的第2行)

actv

   active 活跃的内存页,正在映射给进程使用

in_d

   inactive_dirty 非活跃的内存页,并且内存数据被修改,需要写回磁盘

in_c

   inactive_clean 非活跃的内存页,干净的数据,可以被重新分配使用

用 top 看到的进程所处的几种状态(STAT列)。

D 不可中断休眠,通常是 IO 操作所处的状态

R 正在执行的或者处在等待执行的进程队列中

S 休眠中

T 暂停刮起的(比如Ctrl+Z),也可能是被 strace 命令调用中的状态

Z 僵尸进程,进程执行完成,但由于其父进程没有销毁该进程,而被init进程接管进行销毁。

W 没有使用物理内存,所占用的物理内存被切换到交换内存

高优先级的进程

N 低优先级

有时候一个进程会有多个状态的标志,比如SWN,SW

情景分析

   前面两次top的输出那些信息值得关注?

图1)

Load average: 系统负载有降低的趋势,但仍然较高

Running: 有3个进程正在运行,正常,因为系统有4颗CPU

Cpu user: 接近200%了,有些大,服务高峰时可以接受

Cpu idle: 小于200%了,需要注意

图2)

Cpu iowait:接近200%了,很大

工具介绍-free

free命令显示系统内存的使用状况(物理内存和交换内存)

通过这个命令我们可以看到系统进程实际使用的物理内存,buffer和cache使用的物理内存

free命令输出的第二行(Mem)

   这行分别显示了物理内存的总量(total)、已使用的(used)、空闲的(free)、共享的(shared)、buffer、cache的内存。

free命令输出的第三行(-/+ buffers/cache)

    这行最容易让人迷惑。

    它显示的第一个值(used这一列)是这样得来的:

   Mem行used列 - Mem行buffers列 - Mem行cached列

           

    它显示的第二个值(free这一列)是这样得来的:

   Mem行free列 + Mem行buffers列 + Mem行cached列

free命令输出的第四行(Swap)

   这行显示交换内存的总量、已使用量、空闲量

   通常 buffer 和 cache 可以使用的内存空间越大,系统 IO 和 文件系统访问的性能越好。

工具介绍-uptime

最简便的查看系统负载的工具,系统负载越小,系统运行状况越好,对于系统负载处在什么范围内比较合适,我想是没有定论的,我介绍一下我的习惯。

   

    我一般以15分钟负载的值来评估系统的健康度,以10为这个值的临界点,如果系统负载持续高于10,通常是存在某个资源长期紧张的原因,我们需要重视,并且得开始着手解决这个问题了。

   

    如果偶尔高于10,应该开始留意它出现的频度,这往往是前面一种状况的先兆。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: