# vmstat procs -----------memory------------- ---swap-- -----io---- --system-- ----cpu---- r b swpd free buff cache si so bi bo in cs us sy id wa 1 0 5696 6904 28192 50496 0 0 88 117 61 29 11 8 80 1
·CPU utilization 这是一个很简单的参数,它直观的描述了每个CPU的利用率。在xSeries架构中,如果CPU的利用率长时间的超过80%,就可能是出现了处理器的瓶颈。 ·Runable processes 这个值描述了正在准备被执行的进程,在一个持续时间里这个值不应该超过物理CPU数量的10倍,否则CPU方面就可能存在瓶颈。 ·Blocked 描述了那些因为等待I/O操作结束而不能被执行的进程,Blocked可能指出你正面临I/O瓶颈。 ·User time 描述了处理用户进程的百分比,包括nice time。如果User time的值很高,说明系统性能用在处理实际的工作。 ·System time 描述了CPU花费在处理内核操作包括IRQ和软件中断上面的百分比。如果system time很高说明系统可能存在网络或者驱动堆栈方面的瓶颈。一个系统通常只花费很少的时间去处理内核的操作。 ·Idle time 描述了CPU空闲的百分比。 ·Nice time 描述了CPU花费在处理re-nicing进程的百分比。 ·Context switch 系统中线程之间进行交换的数量。 ·Waiting CPU花费在等待I/O操作上的总时间,与blocked相似,一个系统不应该花费太多的时间在等待I/O操作上,否则你应该进一步检测I/O子系统是否存在瓶颈。 ·Interrupts Interrupts值包括硬Interrupts和软Interrupts,硬Interrupts会对系统性能带来更多的不利影响。高的Interrupts值指出系统可能存在一个软件的瓶颈,可能是内核或者驱动程序。注意Interrupts值中包括CPU时钟导致的中断(现代的xServer系统每秒1000个Interrupts值)。
(2)内存参数
引用
·Free memory 相比其他操作系统,Linux空闲内存的值不应该做为一个性能参考的重要指标,因为就像我们之前提到过的,Linux内核会分配大量没有被使用的内存作为文件系统的缓存,所以这个值通常都比较小。 ·Swap usage 这个值描述了已经被使用的swap空间。Swap usage只表示了Linux管理内存的有效性。对识别内存瓶颈来说,Swap In/Out才是一个比较又意义的依据,如果Swap In/Out的值长期保持在每秒200到300个页面通常就表示系统可能存在内存的瓶颈。 ·Buffer and cache 这个值描述了为文件系统和块设备分配的缓存。在Red Flag DC Server 5版本中,你可以通过修改/proc/sys/vm中的page_cache_tuning来调整空闲内存中作为缓存的数量。 ·Slabs 描述了内核使用的内存空间,注意内核的页面是不能被交换到磁盘上的。 ·Active versus inactive memory 提供了关于系统内存的active内存信息,Inactive内存是被kswapd守护进程交换到磁盘上的空间。
(3)网络参数
引用
·Packets received and sent 这个参数表示了一个指定网卡接收和发送的数据包的数量。 ·Bytes received and sent 这个参数表示了一个指定网卡接收和发送的数据包的字节数。 ·Collisions per second 这个值提供了发生在指定网卡上的网络冲突的数量。持续的出现这个值代表在网络架构上出现了瓶颈,而不是在服务器端出现的问题。在正常配置的网络中冲突是非常少见的,除非用户的网络环境都是由hub组成。 ·Packets dropped 这个值表示了被内核丢掉的数据包数量,可能是因为防火墙或者是网络缓存的缺乏。 ·Overruns Overruns表达了超出网络接口缓存的次数,这个参数应该和packets dropped值联系到一起来判断是否存在在网络缓存或者网络队列过长方面的瓶颈。 ·Errors 这个值记录了标志为失败的帧的数量。这个可能由错误的网络配置或者部分网线损坏导致,在铜口千兆以太网环境中部分网线的损害是影响性能的一个重要因素。
(4)块设备参数
引用
·Iowait CPU等待I/O操作所花费的时间。这个值持续很高通常可能是I/O瓶颈所导致的。 ·Average queue length I/O请求的数量,通常一个磁盘队列值为2到3为最佳情况,更高的值说明系统可能存在I/O瓶颈。 ·Average wait 响应一个I/O操作的平均时间。Average wait包括实际I/O操作的时间和在I/O队列里等待的时间。 ·Transfers per second 描述每秒执行多少次I/O操作(包括读和写)。Transfers per second的值与kBytes per second结合起来可以帮助你估计系统的平均传输块大小,这个传输块大小通常和磁盘子系统的条带化大小相符合可以获得最好的性能。 ·Blocks read/write per second 这个值表达了每秒读写的blocks数量,在2.6内核中blocks是1024bytes,在早些的内核版本中blocks可以是不同的大小,从512bytes到4kb。 ·Kilobytes per second read/write 按照kb为单位表示读写块设备的实际数据的数量。
八、附录 本文截取和修改自IBM的红皮书Tuning Red Hat Enterprise Linux on IBM eServer xSeries Servers。