Chinaunix首页 | 论坛 | 博客
  • 博客访问: 117015
  • 博文数量: 29
  • 博客积分: 2151
  • 博客等级: 大尉
  • 技术积分: 300
  • 用 户 组: 普通用户
  • 注册时间: 2009-11-20 11:11
文章分类

全部博文(29)

文章存档

2011年(5)

2010年(24)

我的朋友

分类: LINUX

2010-09-26 11:29:15

 

vmstat数据解读及系统瓶颈分析


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

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

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

 

[kontrollbase@mysql1 ~]$ vmstat

procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------

 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st

 0  0    208  29320 135884 516580    0    0     9    91   63   59  3  2 94  0  0

 

 

•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处在空闲状态时间百分比

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

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

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

–Cpu wa: 稍微有些高

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

 

 

 

 

 

vmstat

procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu----

r  b   swpd free   buff   cache    si   so    bi     bo    in    cs   us  sy  id wa

0  1  24980 10792 8296  47316    5   19   205    52  1161   698  26  3  1  70

1 观察磁盘活动情况

磁盘活动情况主要从以下几个指标了解:

bi:表示从磁盘每秒读取的块数(blocks/s)。数字越大,表示读磁盘的活动越多。

bo:表示每秒写到磁盘的块数(blocks/s)。数字越大,表示写磁盘的活动越多。

wa:cpu等待磁盘I/O(未决的磁盘IO)的时间比例。数字越大,表示文件系统活动阻碍cpu的情况越严重,因为cpu在等待慢速的磁盘系统提供数据。wa为0是最理想的。如果wa经常大于10,可能文件系统就需要进行性能调整了。  

2 观察cpu活动情况

vmstat比top更能反映出cpu的使用情况:

us:用户程序使用cpu的时间比例。这个数字越大,表示用户进程越繁忙。

sy:系统调用使用cpu的时间比例。注意,NFS由于是在内核里面运行的,所以NFS活动所占用的cpu时间反映在sy里面。这个数字经常很大的话,就需要注意是否某个内核进程,比如NFS任务比较繁重。如果us和sy同时都比较大的话,就需要考虑将某些用户程序分离到另外的服务器上面,以免互相影响。

id:cpu空闲的时间比例。

wa:cpu等待未决的磁盘IO的时间比

 

 

 

top:

主要参数

d:指定更新的间隔,以秒计算。

q:没有任何延迟的更新。如果使用者有超级用户,则top命令将会以最高的优先序执行。

c:显示进程完整的路径与名称。

S:累积模式,会将己完成或消失的子行程的CPU时间累积起来。

s:安全模式。

i:不显示任何闲置(Idle)或无用(Zombie)的行程。

n:显示更新的次数,完成后将会退出to

显示参数:

PID(Process ID):进程标示号。

USER:进程所有者的用户名。

PR:进程的优先级别。

NI:进程的优先级别数值。

VIRT:进程占用的虚拟内存值。

RES:进程占用的物理内存值。

SHR:进程使用的共享内存值。

S:进程的状态,其中S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值是负数。

%CPU:该进程占用的CPU使用率。

%MEM:该进程占用的物理内存和总内存的百分比。

TIME+:该进程启动后占用的总的CPU时间。

Command:进程启动的启动命令名称,如果这一行显示不下,进程会有一个完整的命令行。

top命令使用过程中,还可以使用一些交互的命令来完成其它参数的功能。这些命令是通过快捷键启动的。

<空格>:立刻刷新。

P:根据CPU使用大小进行排序。

T:根据时间、累计时间排序。

q:退出top命令。

m:切换显示内存信息。

t:切换显示进程和CPU状态信息。

c:切换显示命令名称和完整命令行。

M:根据使用内存大小进行排序。

W:将当前设置写入~/.toprc文件中。这是写top配置文件的推荐方法。

阅读(1958) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2010-09-27 11:04:07

很好的, 收藏了 推荐一个博客,提供很多免费软件编程电子书下载: http://free-ebooks.appspot.com