Chinaunix首页 | 论坛 | 博客
  • 博客访问: 7175211
  • 博文数量: 510
  • 博客积分: 12019
  • 博客等级: 上将
  • 技术积分: 6836
  • 用 户 组: 普通用户
  • 注册时间: 2005-08-01 16:46
文章分类

全部博文(510)

文章存档

2022年(2)

2021年(6)

2020年(59)

2019年(4)

2018年(10)

2017年(5)

2016年(2)

2015年(4)

2014年(4)

2013年(16)

2012年(47)

2011年(65)

2010年(46)

2009年(34)

2008年(52)

2007年(52)

2006年(80)

2005年(22)

分类: LINUX

2006-07-19 17:42:01

工具介绍-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时,系统性能会受到影响。磁盘IOCPU资源都会被消耗。

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

 

Io

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

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

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

 

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 低优先级

 

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

 

 

情景分析

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

1)

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

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

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

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

2)

Cpu iowait:接近200%了,很大

 

 

工具介绍-free

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

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

 

 

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

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

 

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

    这行最容易让人迷惑。

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

   Memused - Membuffers - Memcached

          

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

   Memfree + Membuffers + Memcached

 

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

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

 

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

 

工具介绍-uptime

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

   

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

   

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

 

-----------------------------------------------------

作者  童剑 2006/03/21 msn:

阅读(2205) | 评论(2) | 转发(0) |
0

上一篇:Linux 系统内核的调试

下一篇:C++设计模式

给主人留下些什么吧!~~

chinaunix网友2008-04-16 16:32:02

今天因为要解释系统中可用内存的大小,用google看了半天,还有在CU上找了关天,竞然没有发现有比较好的章,估计很多人都没有注意到,懂了以后又没有整理出来。 在CU上看了很多文章说什么memory leak和linux内存管理不好,事实都是因为不懂linux的内存管理引起的误会。 晚上我把这几天看到,跟自已的一些想法,实验总结出来,供大家参考,如果有什么错误的时候请直接指出来,同时感谢wiki论坛不知名的作者以及他写的FAQ Linux Memory Management。 Linux的内存管理,实际上跟windows的内存管理有很相像的地方,都是用虚拟内存这个的概念,说到这里不得不骂MS,为什么在很多时候还有很大的物理内存的时候,却还是用到了pagefile. 所以才经常要跟一帮人吵着说Pagefile的大小,以及如何分配这个问题,在Linux大家就不用再吵什么swap大小的问题,我个人认为,swap设个512M已经足够了,如果你问说512M的SWAP不够用怎么办?只能说大哥你还是加内存吧,要不就检查你的应用,是不是真的出现了memory leak. 夜也深了,就不再

chinaunix网友2008-04-15 09:04:21

Free   free 命令相对于top 提供了更简洁的查看系统内存使用情况:   $ free   total used free shared buffers cachedMem: 255268 238332 16936 0 85540 126384-/+ buffers/cache: 26408 228860Swap: 265000 0 265000   Mem:表示物理内存统计   -/+ buffers/cached:表示物理内存的缓存统计   Swap:表示硬盘上交换分区的使用情况,这里我们不去关心。   系统的总物理内存:255268Kb(256M),但系统当前真正可用的内存b并不是第一行free 标记的 16936Kb,它仅代表未被分配的内存。   我们使用total1、used1、free1、used2、free2 等名称来代表上面统计数据的各值,1、2 分别代表第一行和第二行的数据。   total1:表示物理内存总量。   used1:表示总计分配给缓存(包含buffers 与cache )使用的数量,但