vmstat数据解读及系统瓶颈分析
时间:2010-03-03 来源:pkman110
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,服务高峰期可以接受
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,服务高峰期可以接受
相关阅读 更多 +