一、监控CPU使用率
1、 Linux提供了监控CPU使用率的命令行工具,可以保留文本形式的CPU使用率运行历史和日志。常用的命令有:vmstat、mpstat、top等等,下面只是top命令的一个截图,其他的命令的使用方式,请自行搜索。
图1-1
Linux的top命令不仅包括CPU使用率也包括进程统计数据和内存使用率。上面的截图显示它的输出主要包含两个部分,上部分是整个系统的统计信息,下半部分是进程的统计信息(默认按CPU使用率由高到低排序)。
二、CPU调度程序运行队列
1、 Linux上可以用vmstat命令监控运行队列长度。Vmstat输出的第一列是运行队列长度,值是运行队列中轻量级进程的实际数量。如下图,红色方框列即为运行队列。
图1-2
三、内存使用率
1、 Linux上可以用mstat输出中的free列监控页面交换,也可以用其他方法例如top命令来监控。这里介绍用vmstat监控页面交换。需要监控vmstat中的si和so,他们分别表示内存页面换入和换出的量。此外,free列显示可用的空闲内存,留意是否会同时出现空闲内存少和页面调度频繁的情形,相比而言,实际的数量单位反而不那么重要。如果观察到上述统计数据的模式,说明系统可能在进行页面交换。下面示例中的系统没有页面交换,因为si和so 没有页面调度,而且空闲内存很多。
图1-3
2、下面截图(网上下载的)中的系统正在进行页面交换
图1-4
注意上面的数据。当空闲内存刚开始减少时,si和so几乎没有什么页面调度。但当空闲内存达到155000~175000时,so出现页面换出活动。一旦页面换出变得平稳,si列显示的页面换入开始快速增加。通常说明系统中有应用或一组应用在进行大量的内存分配或内存访问。当物理内存逐渐耗尽时,系统开始将最近最少使用的内存置换到虚拟内存。当应用需要内存页时,就会发生页面换入,随着页面调度的增加,空闲内存基本不变。换句话说,当系统空闲内存很少时,内存页面换入和换出的速度几乎一样快。在Linux系统进行页面交换时,Linux的vmstat可以观察到这种典型模式。
2、 监控锁竞争(网上找的)
Linux上可以使用sysstat包中的pidstat命令监控锁竞争。pidstat –w输出结果中的cswch/s
是让步式上下文切换。重点需要注意的是,该值并不包括所有的上下文切换。此外,pidstat –w 报告的是每秒而不是每个测量间隔的让步式上下文切换。因此,让步式上下文切换浪费的时钟周期,可以由pidstat –w的让步式上下文切换数除以虚拟处理器的数目而得出。请记住,pidstat –w是所有虚拟处理器的让步式上下文切换。让步式上下文切换数乘以80000,除以CPU每秒的时钟周期,可以得出让步式上下文切换所耗费的CPU时钟周期百分比。下面是pidstat –w每5秒监控进程id为9391的java应用。
图1-5
下面估算上下文切换所浪费的时钟周期。处理器为3.0GH双核IntelCPU,pidstat –w显示系统每秒钟大约发生3500个上下文切换。因此,每个虚拟处理器的上下文切换为3500/2 = 1750,耗费的时钟周期为1750 x 80 000 = 140 000 000。3GHz CPU每秒的时钟周期数为3 000 000 000。
因此上下文切换所浪费的时钟周期为140 000 000 /3 000 000 000 = 4.7%。再次应用一般性准则(让步时钟周期占用3% ~ 5%或更多时钟周期),说明Java应用正面临锁竞争。
上面说了让步式上下文切换,下面说说抢占式上下文切换。Linux上可以用pidstat –w监控抢占式上下文切换。抢占式上下文切换率高表明预备运行的线程数多于可用的虚拟处理器,所以此时用vmstat通常就能看到很长的运行队列、很高的CPU使用率以及大量与之相关的抢占式上下文切换。
四、 磁盘I/O使用率
1、Linux上可以用iostat –xm监控磁盘I/O使用率和系统态CPU使用率。下面的示例显示Linux系统的vda盘为97%,系统态CPU使用率为16%。
图1-6
来源:oschina
链接:https://my.oschina.net/u/2269952/blog/794632