LoaRunner性能测试系统学习教程:Windows计数器(2)

上期我们讲到LoaRunner性能测试操作系统监控,这期我们讲LoaRunner性能测试Windows计数器。

Windows计数器

监控系统资源的目的是为了分析是否由于系统资源引起性能瓶颈,通常分析的硬件资源消耗主要包括内存、磁盘和CPU,那么如何定位这些硬件是否达到瓶颈呢?在实际测试过程中没有直接的指标可以指明硬件是否达到瓶颈,需要分析计数器来间接的去分析硬件资源是否出现瓶颈。

内存计数器

关于内存计数器主要有三个:

Available Bytes(Available Kbytes

Available Mbytes)

Memory pages/second

Page Faults/sec

Available Bytes表示计算机上可用于运行处理的有效物理内存的字节数量。是用零、空闲和备用内存表上的空间总值计算的。空闲内存指可以使用内存;零内存指为了防止以后的处理看到以前处理使用的数据而在很多页内存中充满了零内存。备用内存是指从处理的工作集(它的物理内存)移到磁盘的,但是仍旧可以调用的内存。这个计数器只显示上一次观察到的值;它不是一个平均值。一般不小于4MB,如果该值低于阀值且Pages/sec持续的处于峰值状态下,那么说明计算机的物理内存不够。

Memory pages/second是指为解决页面错误从磁盘读取或写入磁盘的速度。这个计数器是可以显示导致系统范围延缓类型错误的主要指示器。

它是Memory\\Pages Input/sec

Memory\\Pages Output/sec的总和。是用页数计算的,以便在不用做转换的情况下就可以同其他页计数。

如Memory\\Page Faults/sec,这个值包括为满足错误而在文件系统缓存(通常由应用程序请求)的非缓存映射内存文件中检索的页。如果系统运行在内存较少的状态,那么该值将逐渐增大,因为操作系统必须使用页面文件来进行临时数据存储,并且Windows会更加依赖页面文件来为用户请求提供服务,因此读写数据页面数目将增加。这个计数器的值应该保持或接近0。

Page Faults/sec 是每秒钟出错页面的平均数量。由于每个错误操作中只有一个页面出错,计算单位为每秒出错页面数量,因此这也等于页面错误操作的数量。这个计数器包括硬错误(那些需要磁盘访问的)和软错误(在物理内存的其他地方找到的错误页)。许多处理器可以在有大量软错误的情况下继续操作。但是,硬错误可以导致明显的拖延。

在监控内存时应该注意内存泄漏的情况,一般以下两种情况表明出现内存泄漏的情况:

第一:观察内存分配池,如果内存池中可用内存消耗是呈不断上升的趋势,说明可能出现内存泄漏的情况。。

第二:进程分配内存后,但并未将用完的内存回收。

磁盘计数器

关于磁盘计数器主要有四个:

%Disk Time

Average Disk Queue Length

Average Disk Seconds/Read

Average Disk Seconds/Write

%Disk Time表示所选磁盘驱动器忙于为读或写入请求提供服务所用的时间的百分比。正常值<10,此值过大表示耗费太多时间来访问磁盘,可考虑增加内存、更换更快的硬盘、优化读写数据的算法。

Average Disk Queue Length指读取和写入请求的平均队列数(所选磁盘在实例间隔中的列队),如驾车等信号灯,如果当前信号灯有很多车在等,那么排在后面的车就必须等待下一个信号灯才有可能通过。

正常值<0.5,此值过大表示磁盘I/O太慢,要更换更快的硬盘。

Average Disk sec/Read 指以秒计算的在此盘上读取数据的所需平均时间。

Average Disk sec/Write 指以秒计算的在此盘上写入数据的所需平均时间。监控到磁盘平均读写时间后,如何确定该值是否正常呢?磁盘是否遇到瓶颈呢?如果要确定磁盘读写时间是否遇到瓶颈,需要先获得物理磁盘读写一次所花费的时间,即磁盘服务时间,磁盘服务时间由三部分时间组成:寻找时间、旋转延迟时间和数据传输时间。

寻道时间(Tseek)是指将读写磁头移动到正确的磁道上所需要的时间,寻道时间越短,I/O操作越快,目前磁盘的平均寻道时间一般为3-15ms。

旋转延迟时间(Trotation)是指盘片旋转将请求数据所在扇区移至读写磁头下方所需要的时间,旋转延迟取决于磁盘转速,通常为磁盘旋转一周所需要时间的1/2。现在的磁盘转速一般为5400转/分、7200转/分、10K转/分和15K转/分,以7200转/分为例,一分钟可以转120转,那么磁盘转一周的时间为1/120,大约为8.33ms,旋转延迟时间为旋转一周所需时间的1/2,即大概为4.17ms。

数据传输时间(Transfer)是指完成传输所请求的数据所需要的时间,它取决于数据传输率,该值等于数据大小除于数据传输率

目前IDE/SATA的传输率达到133MB/s

SATA II可达到300MB/s,所以数据传输的时间很短,相对于寻找时间和旋转延迟时间数据传输时间可以忽略不计。

以7200转/分为例,读写一次平均时间大约为3ms

(寻道时间)加上4.17ms(旋转延迟时间),即7.17ms,如果监控到的平均读写时间比计算出来的平均读写时间值大,则说明磁盘可能出现瓶颈。

但现在服务器磁盘都是以阵列的方式出现,对于使用不同的磁盘阵列,其它读写时间计算方式也有不同,在分析不同阵列方式读写时间时,首先需要了解磁盘阵列的相关内容。

磁盘阵列

(Redundant Arrays of Inexpensive Disks,RAID)

有“价格便宜且多余的磁盘阵列”之意,磁盘阵列的原理是利用数组方式来来作磁盘组,配合数据分散排列的设计,提升数据的安全性。磁盘阵列是由很多便宜、容量较小、稳定性较高、速度较慢磁盘,组合成一个大型的磁盘组,利用个别磁盘提供数据所产生加成效果提升整个磁盘系统效能。同时利用这项技术,将数据切割成许多区段,分别存放在各个硬盘上。磁盘阵列还能利用同位检查(Parity Check)的观念,在数组中任一颗硬盘故障时,仍可读出数据,在数据重构时,将数据经计算后重新置入新硬盘中。

RAID的规范主要包括RAID 0~RAID 7等数个规范,它们的侧重点各不相同,常见的规范有以下几种:

RAID 0:无差错控制的带区组

要实现RAID0必须要有两个以上硬盘驱动器,RAID0实现了带区组,数据并不是保存在一个硬盘上,而是分成数据块保存在不同驱动器上。因为将数据分布在不同驱动器上,所以数据吞吐率大大提高,驱动器的负载也比较平衡。如果刚好所需要的数据在不同的驱动器上效率最好,那么它不需要计算校验码,实现容易。它的缺点是它没有数据差错控制,如果一个驱动器中的数据发生错误,即使其它盘上的数据正确也无济于事了。不应该将它用于对数据稳定性要求高的场合。如果用户进行图象(包括动画)编辑和其它要求传输比较大的场合使用RAID0比较合适。同时,RAID0可以提高数据传输速率,比如所需读取的文件分布在两个硬盘上,这两个硬盘可以同时读取。那么原来读取同样文件的时间被缩短为1/2。在所有的级别中,RAID0的速度是最快的,但是RAID0没有冗余功能的,如果一个磁盘(物理)损坏,则所有的数据都无法使用。RAID0的结构图如图所示。

RAID 1:镜像结构

RAID1对于使用这种RAID1结构的设备来说,RAID1控制器必须能够同时对两个盘进行读操作和对两个镜像盘进行写操作。RAID1结构图如图所示。

从结构图中可以看到必须有两个驱动器,因为当镜像结构在一组盘出现问题时,可以使用镜象提高系统的容错能力。RAID1比较容易设计和实现,每读一次 盘只能读出一块数据,也就是说数据块传送速率与单独的盘的读取速率相同。因为RAID1的校验十分完备,因此对系统的处理能力有很大的影响,通常的RAID功能由软件实现,而这样的实现方法在服务器负载比较重的时候会大大影响服务器效率。当您的系统需要极高的可靠性时,如进行数据统计,那么使用 RAID1比较合适,而且RAID1技术支持“热替换”,即不断电的情况下对故障磁盘进行更换,更换完毕只要从镜像盘上恢复数据即可。当主硬盘损坏时,镜像硬盘就可以代替主硬盘工作,镜像硬盘相当于一个备份盘,可想而知,这种硬盘模式的安全性是非常高的,RAID1的数据安全性在所有的RAID级别上来说是最好的,但是其磁盘的利用率却只有50%,是所有RAID级别中最低的。

RAID2:带海明码校验

从概念上讲RAID2与RAID3类似,两者都是将数据条块化分布于不同的硬盘上,条块单位为位或字节。然而RAID2使用一定的编码技术来提供错误检查及恢复,这种编码技术需要多个磁盘存放检查及恢复信息,使得RAID2技术实施更复杂。因此,在商业环境中很少使用。RAID2结构图如图所示。

由于海明码的特点,它可以在数据发生错误的情况下将错误校正,以保证输出的正确。它的数据传送速率相当高,如果希望达到比较理想的速度, 那最好提高保存校验码ECC码的硬盘性能,对于控制器的设计来说,它又比RAID3、RAID4或RAID5要简单。但是要利用海明码,必须要付出数 据冗余的代价,输出数据的速率与驱动器组中速度最慢的相等。

RAID3:带奇偶校验码的并行传送

RAID3这种校验码与RAID2不同,只能查错不能纠错。它访问数据时一次处理一个带区,这样可以提高读取和写入速度,它像RAID0一样以并行的方式来存放数据,但速度没有RAID 0快。校验码在写入数据时产生并保存在另一个磁盘上,需要实现时用户必须要有三个以上的驱动器,写入速率与读出速率都很高,因为校验位比较少,因此计算时间相对而言比较少,RAID3的结构图如图所示。

用软件实现RAID控制将是十分困难的,控制器的实现也不是很容易,它主要用于图形(包括动画)等要求吞吐率比较高的场合,不同于RAID2,RAID3使用单块磁盘存放奇偶校验信息。如果一块磁盘失效,奇偶盘及其他数据盘可以重新产生数据,如果奇偶盘失效,则不影响数据使用。RAID3对于大量的连续数据可提供很好的传输率,但对于随机数据,奇偶盘会成为写操作的瓶颈。利用单独的校验盘来保护数据虽然没有镜像的安全性高,但是硬盘利用率得到了很大的提高,硬盘利用率为n-1。

RAID4:带奇偶校验码的独立磁盘结构

RAID4和RAID3很像,不同的是,它对数据的访问是按数据块进行的,也就是按磁盘进行的,每次是一个盘。

RAID3是一次一横条,而RAID4一次一竖条。它的特点和RAID3也挺像,不过在失败恢复时,它的难度可要比RAID3大得多了,控制器的设计难度也要大许多,而且访问数据的效率不高。

RAID5:分布式奇偶校验的独立磁盘结构

RAID 5不单独指定的奇偶盘,而是在所有磁盘上交叉地存取数据及奇偶校验信息。在RAID 5上,读/写指针可同时对阵列设备进行操作,提供了更高的数据流量。RAID 5更适合于小数据块和随机读写的数据。RAID 3与RAID 5相比,最主要的区别在于RAID 3每进行一次数据传输就需涉及到所有的阵列盘;而对于RAID 5来说,大部分数据传输只对一块磁盘操作,并可进行并行操作。在RAID 5中有“写损失”,即每一次写操作将产生四个实际的读/写操作,其中两次读旧的数据及奇偶信息,两次写新的数据及奇偶信息。RAID5结构图如图所示。

RAID6:带有两种分布存储的奇偶校验码的独立磁盘结构

与RAID5相比,RAID6增加了第二个独立的奇偶校验信息块,两个独立的奇偶系统使用不同的算法,数据的可靠性非常高,即使两块磁盘同时失效也不会影响数据的使用。但RAID6需要分配给奇偶校验信息更大的磁盘空间,相对于RAID5有更大的“写损失”,因此“写性能”非常差,较差的性能和复杂的实施方式使得RAID 6很少得到实际应用。

RAID7:优化的高速数据传送磁盘结构

RAID7所有的I/O传送均是同步进行的,可以分别控制,这样提高了系统的并行性,提高系统访问数据的速度,每个磁盘都带有高速缓冲存储器,实时操作系统可以使用任何实时操作芯片,达到不同实时系统的需要。允许使用SNMP协议进行管理和监视,可以对校验区指定独立的传送信道以提高效率,可以连接多台主机,因为加入高速缓冲存储器,当多用户访问系统时,访问时间几乎接近于0。由于采用并行结构,因此数据访问效率大大提高,需要注意的是它引入了一个高速缓冲存储器,这有利有弊,因为一旦系统断电,在高速缓冲存储器内的数据就会全部丢失,因此需要和UPS一起工作。但其价格也非常昂贵。

RAID10:高可靠性与高效磁盘结构

这种结构无非是一个带区结构加一个镜像结构,因为两种结构各有优缺点,因此可以相互补充,达到既高效又高速还可以的目的。大家可以结合两种结构的优点和缺点来理解这种新结构。这种新结构的价格高,可扩充性不好。主要用于容量不大,但要求速度和差错控制的数据库中。

 CPU计数器

关于CPU计数器主要有三个:

% Processor Time

%User Time

%Privileged Time

% Processor Time指处理器用来执行非闲置线程时间的百分比。计算方法是,测量范例间隔内非闲置线程活动的时间,用范例间隔减去该值。(每台处理器有一个闲置线程,该线程在没有其他线程可以运行时消耗周期)。这个计数器是处理器活动的主要说明器,显示在范例间隔时所观察的繁忙时间平均百分比。这个值是用 100% 减去该服务不活动的时间计算出来的。如果该计数器的值持续高于80%,则说明CPU存在压力,接下来需要进一步将Processor Time分解,以便确定是内核模式进程还是用户模式进程消耗的时间更多,接下来分别分析%User Time和%Privileged Time两个计数器。

%User Time指处理器处于用户模式的时间百分比。用户模式是为应用程序、环境分系统和整体分系统设计的有限处理模式。另一个模式为特权模式,它是为操作系统组件设计的并且允许直接访问硬件和所有内存。操作系统将应用程序线程转换成特权模式以访问操作系统服务。这个计数值将平均忙时作为示例时间的一部分显示。

%Privileged Time是在特权模式下处理线程执行代码所花时间的百分比。当调用Windows系统服务时,此服务经常在特权模式运行,以便获取对系统专有数据的访问,在用户模式执行的线程无法访问这些数据。

对系统的调用可以是直接的(explicit)或间接的(implicit)

例如页面错误或中断。不像某些早期的操作系统,Windows除了使用用户和特权模式的传统保护模式之外,还使用处理边界作为分系统保护。某些由 Windows为您的应用程序所做的操作除了出现在处理的特权时间内,还可能在其他子系统处理出现。

如果User Time占整个Processor Time的比例很大,那么说明是应用程序出现问题,这样接下来需要确定是哪个进程消耗了CPU的时间。

你可能感兴趣的:(LoaRunner性能测试系统学习教程:Windows计数器(2))