Linux下vmstat

  

各种UNIX平台下vmstatiostat输出结果详解_学习之用 各种unix平台下iostatvmstst说明 

一点个人积累,共享出来!

Linuxvmstat输出释疑: 

Vmstat

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

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

0 0 100152 2436 97200 289740 0 1 34 45 99 33 0 0 99 0

procs

列表示运行和等待cpu时间片的进程数,如果长期大于1,说明cpu不足,需要增加cpu

列表示在等待资源的进程数,比如正在等待I/O、或者内存交换等。

cpu 表示cpu的使用状态

us 列显示了用户方式下所花费 CPU 时间的百分比。us的值比较高时,说明用户进程消耗的cpu时间多,但是如果长期大于50%,需要考虑优化用户的程序。

sy 列显示了内核进程所花费的cpu时间的百分比。这里us + sy的参考值为80%,如果us+sy 大于 80%说明可能存在CPU不足。

wa 列显示了IO等待所占用的CPU时间的百分比。这里wa的参考值为30%,如果wa超过30%,说明IO等待严重,这可能是磁盘大量随机访问造成的,也可能磁盘或者磁盘访问控制器的带宽瓶颈造成的(主要是块操作)。 

id 列显示了cpu处在空闲状态的时间百分比 

system 显示采集间隔内发生的中断数

in 列表示在某一时间间隔中观测到的每秒设备中断数。

cs列表示每秒产生的上下文切换次数,如当 cs 比磁盘 I/O 和网络信息包速率高得多,都应进行进一步调查。

memory

swpd 切换到内存交换区的内存数量(k表示)。如果swpd的值不为0,或者比较大,比如超过了100m,只要siso的值长期为0,系统性能还是正常 

free 当前的空闲页面列表中内存数量(k表示

buff 作为buffer cache的内存数量,一般对块设备的读写才需要缓冲。 

cache: 作为page cache的内存数量,一般作为文件系统的cache,如果cache较大,说明用到cache的文件较多,如果此时IObi比较小,说明文件系统效率比较好。 

swap

si 由内存进入内存交换区数量。

so由内存交换区进入内存数量。 

IO

bi 从块设备读入数据的总量(读磁盘)(每秒kb)。

bo 块设备写入数据的总量(写磁盘)(每秒kb

这里我们设置的bi+bo参考值为1000,如果超过1000,而且wa值较大应该考虑均衡磁盘负载,可以结合iostat输出来分析。

Solairs系统下vmstat输出释疑

vmstat 5 5

procs memory page disk faults cpu

r b w swap free re mf pi po fr de sr s1 s1 -- -- in sy cs us sy id

0 0 0 704968 207640 0 1 2 0 0 0 0 0 0 0 0 302 6 31 0 0 100

0 0 0 705048 206728 1 2 0 0 0 0 0 0 0 0 0 302 4 34 0 0 100

0 0 0 705048 206728 0 0 0 0 0 0 0 0 0 0 0 302 3 35 0 0 100

0 0 0 705048 206728 0 0 0 0 0 0 0 0 0 0 0 301 3 34 0 0 100

0 0 0 705048 206728 0 0 0 0 0 0 0 0 0 0 0 302 6 35 0 0 100

procs

列表示在运行队列中等待的进程数。

列表示在等待资源的进程数,比如正在等待I/O、或者内存交换等。

列表示可以进入运行队列但被交换出来的进程 

cpu 表示cpu的使用状态

us 列显示了用户方式下所花费 CPU 时间的百分比。一个 UNIX 进程可以在用户方式下执行,也可以在系统(内核)方式下执行。当在用户方式下时,进程在它自己的应用程序代码中执行,不需要内核资源来进行计算、管理内存或设置变量。

sy 列详述了 CPU 在系统方式下执行一个进程所花时间的百分比。这包括内核进程(kprocs)和其它需要访问内核资源的进程所消耗的 CPU 资源。如果一个进程需要内核资源,它必须执行一个系统调用,并由此切换到系统方式从而使该资源可用。例如,对一个文件的读或写操作需要内核资源来打开文件、寻找特定的位置,以及读或写数据,除非使用内存映射文件。这里us + sy的参考值为80%,如果us+sy 大于 80%说明可能存在CPU不足。

id 列显示了没有未决本地磁盘 I/O 时 CPU 空闲或等待的时间百分比。 

faults 显示采集间隔内发生的中断数

in 列表示在某一时间间隔中观测到的每秒设备中断数。iostat命令输出更有参考意义。

sy 列表示在某一时间间隔中观测到的每秒系统调用次数。通过明确的系统调用,用户进程可以使用资源。这些调用指示内核执行调用线程的操作,并在内核和该进程之间交换数据。因为工作负载和应用程序变化很大,不同的调用执行不同的功能,所以不可能定义每秒钟有多少系统调用才算太多。这里设置参考值为10000,超过10000,用户需要注意。

cs 列表示,如当 cs 比磁盘 I/O 和网络信息包速率高得多,都应进行进一步调查。

memory

swap 当前可用内存交换区容量(k表示)

free 当前的空闲页面列表中内存数量(k表示

page

re 列表示回收的页面数。

mf 列表示小级别错误计数。

pi 列表示进入页面数 (k表示)。

po 列表示出页面数(k表示)。

fr 列表示空余的页面数(k表示)。

de 列表示提前读入的页面中的未命中数。

sr 列表示通过时钟算法扫描的页面计数 

solairsiostat释疑

iostat -xtc 5 2

extended device statistics tty cpu

device r/s w/s kr/s kw/s wait actv svc_t %w %b tin tout us sy wt id

sd1 0.3 0.0 3.4 0.1 0.0 0.0 13.2 0 0 0 0 0 0 0 100

sd15 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0 0

nfs1 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0 0

extended device statistics tty cpu

device r/s w/s kr/s kw/s wait actv svc_t %w %b tin tout us sy wt id

sd1 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0 0 0 77 0 0 0 100

sd15 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0 0

nfs1 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0 0

ttyCPU使用率报告

tin 显示了系统为所有 tty 读取的字符总数。

tout 显示了系统为所有 tty 写入的字符总数。

us 显示了在用户级应用程序在缺省的优先级别执行时的 CPU 使用率百分比。

sy 显示了在用户级应用程序在降低优先级执行时的 CPU 使用率百分比。

wt 显示了在系统级(内核)执行时生成的 CPU 使用率。

id 显示了 CPU 空闲期间系统有未完成的磁盘 I/O 请求时的时间百分比。

磁盘使用率报告

device 被统计的硬盘设备名,包括nfs设备。

r/s 表示每秒钟读的次数

w/s 表示每秒钟写的次数

kr/s 表示每秒钟读的K字节数

kw/s 表示每秒钟写的K字节数

wait 表示平均多少个传输等待被处理,相当于读写等待队列长度 

actv 表示平均多少个传输从读写等待队列中移出做处理 

svc_t 表示每次硬盘传输平均耗费的时间,以毫秒为单位,这里我们设置的参考值为30ms,超过说明硬盘负载太多 

%w 表示每次传输所消耗时间里面,等待所占的百分比 

%b 表示硬盘忙的时间所占百分比,这里我们设置参考值为5%,超过5%说明硬盘负载太多,最好采取以下步骤:

1.)调整应用,令其使用磁盘i/o更加有效率,可以通过修改磁盘队列、使用应用服务器的cache 

2.)将文件系统分布到2个或多个磁盘上,并使用volume manager/disksuite的条带化特点 

3.) 增加系统参数值,如inode cache , ufs_ninode

AIXvmstat释疑:

# vmstat 5 20

kthr memory page faults cpu

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

r b avm fre re pi po fr sr cy in sy cs us sy id wa

1 1 244528 1227 0 3 3 56 151 0 404 1420 1415 4 2 88 6

2 6 244538 1241 0 39 148 2424 3511 0 904 4660 7571 49 12 2 38

5 3 244540 791 0 2 221 3937 6077 0 1183 6605 24619 44 34 1 21

1 7 245326 1009 0 11 331 1071 1934 0 884 3788 13000 23 25 0 52

分析如下:

kthr

kthr列表示每秒钟在采样间隔时间上对各种队列中的内核线程数求得的平均值

列表示可运行的内核线程平均数,包括正在运行的线程和正在等待 CPU的线程。如果这个数字大于 CPU 的数目,至少有一个线程要等待 CPU,等待 CPU 的线程越多,越有可能对性能产生影响。

列表示每秒 VMM 等待队列中的内核线程平均数。这包括正在等待文件系统 I/O 的线程,或由于内存装入控制而暂挂的线程。这里参考值为2,大于2表示被阻塞列线程数目太多。 

[b] !阻塞线程数目太多

CPU

us 列显示了用户方式下所花费 CPU 时间的百分比。一个 UNIX 进程可以在用户方式下执行,也可以在系统(内核)方式下执行。当在用户方式下时,进程在它自己的应用程序代码中执行,不需要内核资源来进行计算、管理内存或设置变量。

sy 列详述了 CPU 在系统方式下执行一个进程所花时间的百分比。这包括内核进程(kprocs)和其它需要访问内核资源的进程所消耗的 CPU 资源。如果一个进程需要内核资源,它必须执行一个系统调用,并由此切换到系统方式从而使该资源可用。例如,对一个文件的读或写操作需要内核资源来打开文件、寻找特定的位置,以及读或写数据,除非使用内存映射文件。这里us + sy的参考值为80%,如果us+sy 大于 80%说明可能存在CPU不足。

id 列显示了没有未决本地磁盘 I/O 时 CPU 空闲或等待的时间百分比。

wa 列详细显示了暂挂本地磁盘 I/O 和 NFS 加载的磁盘的 CPU 空闲百分比。这里参考值为25%,大于25% 可能表示磁盘子系统可能没有被正确平衡,或者这也可能是磁盘密集工作负载的结果。 

[us]+[sy] !IO不平衡

[wa] 正常

fault

in 列表示在某一时间间隔中观测到的每秒设备中断数。iostat命令输出更有参考意义。

sy 列表示在某一时间间隔中观测到的每秒系统调用次数。通过明确的系统调用,用户进程可以使用资源。这些调用指示内核执行调用线程的操作,并在内核和该进程之间交换数据。因为工作负载和应用程序变化很大,不同的调用执行不同的功能,所以不可能定义每秒钟有多少系统调用才算太多。这里设置参考值为10000,超过10000,用户需要注意。

cs 列表示,如当 cs 比磁盘 I/O 和网络信息包速率高得多,都应进行进一步调查。

[sy] 正常

memory

avm 列表示在收集 vmstat 样本时存在的活动虚拟内存页面数(4k为单位)。理想情况下, avm 应该比总 RAM 数小。如果不是,

可能会出现一些虚拟内存页面调度量。有多少页面调度发生取决于两个值之间的差值。记住,虚拟内存的概念是提供给我们寻址大于实内存容量的能力

(一些在 RAM 内存中,而另一些在调页空间中)。但是如果虚拟内存远大于实内存,可能造成过度的页面调度,从而导致延时。如果 avm 小于 RAM

那么当 RAM 中填满文件页时就会引起调页空间的页面调度。

这种情况下,调整 minpermmaxperm 和 maxclient 的值可以减少调页空间的页面调度量。

fre 列显示出空闲内存页面的平均数量(4k为单位)VMM 在空闲列表上保存的最少页面数由 minfree 参数决定。这里的参考值为maxfree的缺省值720,小于720说明存在内存系统颠簸。 

[fre] 正常

[avm] avm的值约为:958MB

page

pi 列详细描述了从调页空间调入的页数。调页空间是驻留在磁盘上的虚拟内存的一部分。当内存过量使用时,它用作溢出。

调页空间由用于存储从实内存中窃取到的工作组页面的逻辑卷组成。当进程访问一个窃取页时,产生了一个缺页故障,

这一页必须从调页空间读入内存。这里设置pi的参考值为5,大于5说明内存不足。

po 列显示了调出到调页空间的页面数(速率)。无论什么时候窃取工作存储器的一页,如果它仍未驻留在调页空间中或已被修改,

那它会被写入调页空间。如果不被再次访问,它会留在页面调度设备中直到进程终止或放弃空间。如果包含在出故障页面中的后续地址引用导致缺页故障,

那么这些页面将会由系统个别调进。当一个进程正常终止,任何分配给该进程的调页空间将被释放。

fr 列表示在一定时间间隔内根据页面替换算法每秒所释放的页数。当 VMM 页面替换例程扫描页面帧表(Page Frame TablePFT)时,

它使用一些条件选取要窃取的页面以插入到可用内存帧的空闲列表中。

sr 列表示在一定时间间隔内根据页面替换算法每秒所检查的页面数。

页面替换算法在可以窃取足够的页面以满足页面替换线程的需要之前可能不得不扫描许多页面帧。

cy 列表示每秒页面替换代码扫描了 PFT 多少次。因为插入空闲列表可以不需要完全扫描 PFT

并且因为所有的 vmstat 字段报告为整数,这一字段通常为 0

这里设置fr:sr的参考值为3,超过说明内存不足。 

[pi] !存在内存不足

[fr:sr] 正常

AIX命令iostat释疑

# iostat hdisk1 hdisk2 5 5

tty: tin tout avg-cpu: % user % sys % idle % iowait

0.0 0.3 0.2 0.4 99.4 0.1

Disks: % tm_act Kbps tps Kb_read Kb_wrtn

hdisk2 0.1 1.0 0.2 45090 51075

hdisk1 0.0 0.0 0.0 0 0

tty: tin tout avg-cpu: % user % sys % idle % iowait

0.0 70.6 45 54 99.4 0.0

Disks: % tm_act Kbps tps Kb_read Kb_wrtn

hdisk2 0.0 0.0 0.0 0 0

hdisk1 0.0 0.0 0.0 0 0

tty: tin tout avg-cpu: % user % sys % idle % iowait

0.0 70.6 0.0 0.4 99.6 0.0

Disks: % tm_act Kbps tps Kb_read Kb_wrtn

hdisk2 0.0 0.0 0.0 0 0

hdisk1 0.0 0.0 0.0 0 0

分析结果

ttyCPU使用率报告

tin 显示了系统为所有 tty 读取的字符总数。

tout 显示了系统为所有 tty 写入的字符总数。

% user 显示了在用户级(应用程序)执行时生成的 CPU 使用率百分比。

% sys 显示了在系统级(内核)执行时生成的 CPU 使用率百分比。

% idle 显示了在 CPU 空闲并且系统没有未完成的磁盘 I/O 请求时的时间百分比。

% iowait 显示了 CPU 空闲期间系统有未完成的磁盘 I/O 请求时的时间百分比。

[user][+][sys] !CPU能力不足

[wait] 正常

磁盘使用率报告

% tm_act 表示物理磁盘处于活动状态的时间百分比(驱动器的带宽使用率)。

Kbps 表示以 KB 每秒为单位的传输(读或写)到驱动器的数据量。

tps 表示每秒钟输出到物理磁盘的传输次数。一次传输就是一个对物理磁盘的 I/O 请求。多个逻辑请求可被并为对磁盘的一个单一 I请求。传输具有不确定的大小。

Kb_read 读取的 KB 总数。

Kb_wrtn 写入的 KB 总数。

磁盘负载均衡评估 正常

带宽使用评估 带宽值为:0Kbps

Hp-UNIX 命令vmstat释疑

# vmstat 5 5

procs memory page faults cpu

r b w avm free re at pi po fr de sr in sy cs us sy id

2 0 0 52260 24324 9 4 0 0 0 0 1 109 427 81 2 1 97

2 0 0 52260 24285 0 0 0 0 0 0 0 110 207 90 0 0 99

1 0 0 56211 24285 0 0 0 0 0 0 0 106 192 80 0 0 100

1 0 0 56211 24285 0 0 0 0 0 0 0 107 152 76 0 0 100

2 0 0 56552 24285 0 0 0 0 0 0 0 106 154 72 0 0 100

分析结果

procs

列表示在运行队列中等待的进程数。

列表示在等待资源的进程数,比如正在等待I/O、或者内存交换等。

列表示可以进入运行队列但被交换出来的进程 。

[b] 正常

cpu 表示cpu的使用状态

us 列显示了用户方式下所花费 CPU 时间的百分比。一个 UNIX 进程可以在用户方式下执行,也可以在系统(内核)方式下执行。当在用户方式下时,进程在它自己的应用程序代码中执行,不需要内核资源来进行计算、管理内存或设置变量。

sy 列详述了 CPU 在系统方式下执行一个进程所花时间的百分比。这包括内核进程(kprocs)和其它需要访问内核资源的进程所消耗的 CPU 资源。如果一个进程需要内核资源,它必须执行一个系统调用,并由此切换到系统方式从而使该资源可用。例如,对一个文件的读或写操作需要内核资源来打开文件、寻找特定的位置,以及读或写数据,除非使用内存映射文件。这里us + sy的参考值为80%,如果us+sy 大于 80%说明可能存在CPU不足。

id 列显示了没有未决本地磁盘 I/O 时 CPU 空闲或等待的时间百分比。 

[us]+[sy] 正常

fault 显示采集间隔内发生的中断数

in 列表示在某一时间间隔中观测到的每秒设备中断数。iostat命令输出更有参考意义。

sy 列表示在某一时间间隔中观测到的每秒系统调用次数。通过明确的系统调用,用户进程可以使用资源。这些调用指示内核执行调用线程的操作,并在内核和该进程之间交换数据。因为工作负载和应用程序变化很大,不同的调用执行不同的功能,所以不可能定义每秒钟有多少系统调用才算太多。这里设置参考值为10000,超过10000,用户需要注意。

cs 列表示,如当 cs 比磁盘 I/O 和网络信息包速率高得多,都应进行进一步调查。 

[sy] 正常

memory

avm 当前激活的虚拟内存数量(k表示)

free 当前的空闲页面列表中内存数量(k表示

[free] 正常

page

re 列表示回收的页面数。

at 列表示地址翻译错误计数。

pi 列表示进入页面数 (k表示)。

po 列表示出页面数(k表示)。

fr 列表示空余的页面数(k表示)。

de 列表示提前读入的页面中的未命中数。

sr 列表示通过时钟算法扫描的页面计数 

[po] 正常

[fr:sr] 正常

Hp-unixiostat释疑

# iostat 5 5

device bps sps msps

c0t6d0 0 0.0 1.0

c0t6d0 2 1.0 1.0

c0t6d0 2 0.8 1.0

c0t6d0 4 2.0 1.0

c0t6d0 2 1.0 1.0

分析结果

缓冲区性能分析

device: iostat统计的设备名称。

bps: 每秒该设备传输的K字节数。

sps: 每秒检索该设备次数。

msps: 平均每次检索所花费的时间,单位毫秒。

[bps] 正常

 

 

Vmstatiostat详解20071104日 星期日 11:35       Linux在具有高稳定性、可靠性的同时,具有很好的可伸缩性和扩展性,能够针对不同的应用和硬件环境调整,优化出满足当前应用需要的最佳性能。因此企业在维护Linux系统、进行系统调优时,了解系统性能分析工具是至关重要的。

  在Linux下有很多系统性能分析工具,比较常见的有topfreepstimetimexuptime等。下文将介绍几个较为重要的性能分析工具vmstatiostatsar及其使用。

  用vmstat监视内存使用情况

  vmstatVirtual Meomory Statistics(虚拟内存统计)的缩写,可对操作系统的虚拟内存、进程、CPU活动进行监视。它是对系统的整体情况进行统计,不足之处是无法对某个进程进行深入分析。

  vmstat的语法如下:

  vmstat [-V] [-n] [delay [count]]

  其中,-V表示打印出版本信息;-n表示在周期性循环输出时,输出的头部信息仅显示一次;delay是两次输出之间的延迟时间;count是指按照这个时间间隔统计的次数。对于vmstat输出各字段的含义,可运行man vmstat查看。

  用iostat监视I/O子系统情况

  iostatI/O statistics(输入/输出统计)的缩写,iostat工具将对系统的磁盘操作活动进行监视。它的特点是汇报磁盘活动统计情况,同时也会汇报出CPU使用情况。同vmstat一样,iostat也有一个弱点,就是它不能对某个进程进行深入分析,仅对系统的整体情况进行分析。

  iostat的语法如下:

iostat [ -c | -d ] [ -k ] [ -t ] [ -V ] [ -x [ device ] ] [ interval [ count ] ]

  其中,-c为汇报CPU的使用情况;-d为汇报磁盘的使用情况;-k表示每秒按kilobytes字节显示数据;-t为打印汇报的时间;-v表示打印出版本信息和用法;-x device指定要统计的设备名称,默认为所有的设备;interval指每次统计间隔的时间;count指按照这个时间间隔统计的次数。

  iostat一般的输出格式如下:

Linux 2.4.18-18smp (builder.linux.com) 20030307

avg-cpu: %user %nice %sys %idle

4.81 0.01 1.03 94.15

Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn

dev3-0 30.31 1117.68 846.52 16104536 12197374

dev3-1 7.06 229.61 40.40 3308486 582080

对于输出中各字段的含义,iostat的帮助中有详细的说明。

vmstat 命令报告虚拟内存统计信息和CPU负荷:页面调度,交换,任务交换,CPU利用率。命令的语法是:

vmstat [-cisS] [d1 d2 d3 d4] [interval [count]]

当不用选项时,vmstat显示一条曲线表示自从系统启动后活动的信息。如果指定interval(时间间隔),接下来的线是重复显示最后的interval期间活动的情况,直到用户中断命令执行。当同时提供计数器时,统计信息按时间计数来显示。

如果指定了一个磁盘名(如d1d2,等等。),这些磁盘得到优先显示。通常,系统上的前4个磁盘设备是显示的,因为只有四个设备能在一线条上显示,这个选项允许性能分析员修改缺省显示选项。(*磁盘名通常随idsdxd,xy (取决于类型和I/0界面)加一个数字,如id0sd2xd1等等命名而定。)

vmstat 命令显示若干字段信息:

procs 报表下面三种状态的进程数:

r--在运行队列中等候运行

b--被资源阻塞(I/0,页面调度,等等.)

w--可运行但是被换出的

memory 报告虚拟内存和实存信息:

swap--以千字节为单位的当前可用交换空间的数量

free--以千字节为单位的页自由表大小

page 报告每秒页面调度活动数量的信息:

re-从自由表回收页

mf--次要的错误;地址空间或硬件地址转换错误

pi--页入的千字节数

po -页出的千字节数

fr- 释放的千字节数

de--以千字节为单位的可接受的短期内存不足数

sr--页由时钟算法扫描

disk 可以为四个磁盘报告每秒磁盘I/O的数量

faults 报告每秒系统软件中断和硬件中断的速率

in-设备中断,不包括系统时钟中断

sy-系统调用

cs-CPU任务(上下文)交换

cpu-- CPU故障时间的百分比,在多处理器系统上,这是全部处理器的平均值:

us- 用户时间

sy-- 系统时间

id-- 闲置时间

vmstat命令有四个可选标志可供使用。如果机器有虚拟地址缓存-c标志就改变输出报告缓存刷新统计数据。报告包括自从系统启动后每种缓存刷新全部总量。六个缓存类型是用户,上下文,区域,段,页,部分页。

-i标志 使输出变为报告中断的数量。如果给出设备名,如d1,d2等,监控将在设备级*执行,(*注,参阅第十二章有关打开设备级监控的信息。)并报告每个给定设备的统计信息。

修改"普通"报告来显示交换而非页面调度活动的信息。这选项改变显示的两个字段:si(换入)so(换出)替代了remf字段。

值得注意是,interval count选项对-i-s选项是非法的。

vmstat 参数详解

procs:

r-->在运行队列中等待的进程数

b-->在等待io的进程数

w-->可以进入运行队列但被替换的进程 

memoy

swap-->现时可用的交换内存(k表示)

free-->空闲的内存(k表示)

pages

re--》回收的页面

mf--》非严重错误的页面

pi--》进入页面数(k表示)

po--》出页面数(k表示)

fr--》空余的页面数(k表示)

de--》提前读入的页面中的未命中数

sr--》通过时钟算法扫描的页面

disk 显示每秒的磁盘操作。 s表示scsi盘,0表示盘号

fault 显示每秒的中断数

in--》设备中断

sy--》系统中断

cy--》cpu交换

cpu 表示cpu的使用状态

cs--》用户进程使用的时间

sy--》系统进程使用的时间

id--》cpu空闲的时间

FIELD DESCRIPTIONS

Procs

r: The number of processes waiting for run time.

b: The number of processes in uninterruptable sleep.

w: The number of processes swapped out but otherwise runnable.

Thisfield is calculated, but Linux never desperation swaps.

Memory

swpd: the amount of virtual memory used (kB).

free: the amount of idle memory (kB).

buff: the amount of memory used as buffers (kB).

Swap

si: Amount of memory swapped in from disk (kB/s). 虚拟内存的页导入(SWAP DISK导入RAM)

so: Amount of memory swapped to disk (kB/s). 虚拟内存的页导出.

(RAMSWAP DISK)

IO

bi: Blocks sent to a block device (blocks/s).

bo: Blocks received from a block device (blocks/s).

System

in: The number of interrupts per second, including the clock.

cs: The number of context switches per second.

: CPU

These are percentages of total CPU time.

us: user time

sy: system time

id: idle time

如果 r经常大于 ,且id经常少于40,表示cpu的负荷很重。

如果pipo 长期不等于0,表示内存不足。

如果disk 经常不等于0, 且在 b中的队列 大于3, 表示 io性能不好。

vmstat看服务器

说明:由于STATSPACK并不能获取全面分析性能问题所需要的所有信息,所以需要扩展其收集服务器的统计信息。(本文环境REDHAT Linux7.2)

VMSTAT介绍

通过STATSPACK收集服务器信息,主要通过收集VMSTAT的信息来展现服务器状况。VMSTAT工具是最常见的UNIX监控工具,可以展现给定时间间隔的服务器的状态值。

一般VMSTAT工具的使用是通过两个数字参数来完成的,第一个参数是采样的时间间隔数,单位是秒,第二个参数是采样的次数。如:

[oracle@brucelau oracle]$ vmstat 1 2

procs memory swap io system CPU

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

1 0 0 0 271844 186052 255852 0 0 2 6 102 10 0 0 100

0 0 0 0 271844 186052 255852 0 0 0 0 104 11 0 0 100

(注:目前系统几乎空闲,并且不同操作系统VMSTAT输出内容有所不同)

目前说来,对于服务器监控有用处的度量主要有:

r(运行队列)

pi(页导入)

us(用户CPU

sy(系统CPU

id(空闲)

通过VMSTAT识别CPU瓶颈

r(运行队列)展示了正在执行和等待CPU资源的任务个数。当这个值超过了CPU数目,就会出现CPU瓶颈了。

获得CPU个数的命令(LINUX环境)

cat /proc/cpuinfo|grep processor|wc -l

r值超过了CPU个数,就会出现CPU瓶颈,解决办法大体几种:

1. 最简单的就是增加CPU个数

2. 通过调整任务执行时间,如大任务放到系统不繁忙的情况下进行执行,进尔平衡系统任务

3. 调整已有任务的优先级

通过VMSTAT识别CPU满负荷

首先需要声明一点的是,vmstatCPU的度量是百分比的。当ussy的值接近100的时候,表示CPU正在接近满负荷工作。但要注意的是,CPU满负荷工作并不能说明什么,UNIX总是试图要CPU尽可能的繁忙,使得任务的吞吐量最大化。唯一能够确定CPU瓶颈的还是r(运行队列)的值。

通过VMSTAT识别RAM瓶颈

数据库服务器都只有有限的RAM,出现内存争用现象是Oracle的常见问题。

首先察看RAM的数量,命令如下(LINUX环境):

[root@brucelau root]#free

total used free shared buffers cached

Mem: 1027348 873312 154036 185736 187496 293964

-/+ buffers/cache: 391852 635496

Swap: 2096440 0 2096440

当然可以使用top等其他命令来显示RAM

当内存的需求大于RAM的数量,服务器启动了虚拟内存机制,通过虚拟内存,可以将RAM段移到SWAP DISK的特殊磁盘段上,这样会出现虚拟内存的页导出和页导入现象,页导出并不能说明RAM瓶颈,虚拟内存系统经常会对内存段进行页导出,但页导入操作就表明了服务器需要更多的内存了,页导入需要从SWAP DISK上将内存段复制回RAM,导致服务器速度变慢。

解决的办法有几种:

1. 最简单的,加大RAM

2. 改小SGA,使得对RAM需求减少

3. 减少RAM的需求(如:减少PGA

我们基本的了解了VMSTAT工作,下面是STATSPACK通过vmstat统计收集服务器性能数据。

STATSPACK通过vmstat收集服务器信息

首先在perfstat用户下建一个存储服务器信息的表:如

建表:

create table stats$vmstat

(

start_date date, --系统时间

duration date, --时间间隔

server_name varchar2(20), --服务器名称

runque_waits number, --运行队列数据

page_in number, --页导入数据

page_out number, --页导出数据

user_cpu number, --用户cpu数据

system_cpu number, --系统cpu数据

idle_cpu number, --空闲cpu数据

wait_cpu number -等待cpu数据(只是aix存在)

)

tablespace perfstat;

然后,通过UNIX/LINUXshell变成,利用vmstat的结果来获取相应的服务器信息,并且存放到表中。

关于shell编程,可能已经超出本文内容,并且诚实的说,本人并没有shell编程的经验,希望那位兄台可以完成shell编程的内容,并劳驾mail给我共享一下,谢了先!!

附: 

LINUXVMSTAT的帮助手册:(man vmstat的结果)

VMSTAT(8) Linux Administrator's Manual VMSTAT(8)

NAME

vmstat - Report virtual memory statistics

SYNOPSIS

vmstat [-n] [delay [ count]]

vmstat[-V]

DESCRIPTION

vmstat reports information about processes, memory, paging, block IO, traps, and CPU activity.

The first report produced gives averages since the last reboot. Additional reports give information on a sam-

pling period of length delay. The process and memory reports are instantaneous in either case.

Options

The -n switch causes the header to be displayed only once rather than periodically.

delay is the delay between updates in seconds. If no delay is specified, only one report is printed with the

average values since boot.

count is the number of updates. If no count is specified and delay is defined, count defaults to infinity.

The -V switch results in displaying version information.

FIELD DESCRIPTIONS

Procs

r: The number of processes waiting for run time.

b: The number of processes in uninterruptable sleep.

w: The number of processes swapped out but otherwise runnable. This

field is calculated, but Linux never desperation swaps.

Memory

swpd: the amount of virtual memory used (kB).

free: the amount of idle memory (kB).

buff: the amount of memory used as buffers (kB).

Swap

si: Amount of memory swapped in from disk (kB/s).

so: Amount of memory swapped to disk (kB/s).

IO

bi: Blocks sent to a block device (blocks/s).

bo: Blocks received from a block device (blocks/s).

System

in: The number of interrupts per second, including the clock.

cs: The number of context switches per second.

: CPU

These are percentages of total CPU time.

us: user time

sy: system time

id: idle time

NOTES

vmstat does not require special permissions.

These reports are intended to help identify system bottlenecks. Linux vmstat does not count itself as a running process.

All linux blocks are currently 1k, except for CD-ROM blocks which are 2k.

FILES

/proc/meminfo

/proc/stat

/proc/*/stat

SEE ALSO

ps(1), top(1), free(1)

BUGS

Does not tabulate the block io per device or count the number of system calls.

AUTHOR

Written by Henry Ware <al172@yfn.ysu.edu>.

Throatwobbler Ginkgo Labs 27 July 1994 VMSTAT(8)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值