搜档网
当前位置:搜档网 › Windows下如何查看磁盘IO性能

Windows下如何查看磁盘IO性能

引用自网络

通常应用可以分为两种类型:

? IO 相关,IO 相关的应用通常用来处理大量数据,需要大量内存和存储,频繁 IO 操作读写数据,而对 CPU 的要求则较少,大部分时候 CPU 都在等待硬盘,比如,数据库

服务器、文件服务器等。

? CPU 相关,CPU 相关的应用需要使用大量 CPU,比如高并发的 web/mail 服务器、图像/视频处理、科学计算等都可被视作 CPU 相关的应用。windows下如何查看磁盘IO性能

通常,我们很容易观察到数据库服务器的内存和CPU压力。但是对I/O压力没有直观的判断方法。磁盘有两个重要的参数:Seek time、Rotational latency。正常的I/O计数为:①1000/(Seek time+Rotational latency)*0.75,在此范围内属正常。当达到85%的I/O计数以上时则基本认为已经存在I/O瓶劲。理论情况下,磁盘的随机读计数为125、顺序读计数为225。对于数据文件而言是随机读写,日志文件是顺序读写。

因此,数据文件建议存放于RAID5上,而日志文件存放于RAID10或RAID1中。

下面假设在有4块硬盘的RAID5中观察到的Physical Disk性能对象的部分值:

Avg. Disk Queue Length 12

Avg. Disk Sec/Read .035

Avg. Disk Sec/Write .045

Disk Reads/sec 320

Disk Writes/sec 100

Avg. Disk Queue Length,12/4=3,每块磁盘的平均队列建议不超过2。

Avg. Disk Sec/Read一般不要超过11~15ms。

Avg. Disk Sec/Write一般建议小于12ms。

从上面的结果,我们看到磁盘本身的I/O能力是满足我们的要求的,原因是因为有大量的请求才导致队列等待,这很可能是因为你的SQL语句导致大量的表扫描所致。在进行优化后,如果还是不能达到要求,下面的公式可以帮助你计算使用几块硬盘可以满足这样的并发要求:

Raid 0 -- I/Os per disk = (reads + writes) / number of disks

Raid 1 -- I/Os per disk = [reads + (2 * writes)] / 2

Raid 5 -- I/Os per disk = [reads + (4 * writes)] / number of disks

Raid 10 -- I/Os per disk = [reads + (2 * writes)] / number of disks

我们得到的结果是:(320+400)/4=180,这时你可以根据公式①来得到磁盘的正常I/O值。假设现在正常I/O计数为125,为了达到这个结果:720/125=5.76。就是说要用6块磁盘才能达到这样的要求。

但是上面的Disk Reads/sec和Disk Writes/sec是个很难正确估算的值。因此只能在系统比较忙时,大概估算一个平均值,作为计算公式的依据。另一个是你很难从客户那里得到Seek time、Rotational latency参

数的值,这也只能用理论值125进行计算。

#############################################

#############################################

前言

作为一个数据库管理员,关注系统的性能是日常最重要的工作之一,而在所关注的各方面的性能只能IO性能却是最令人头痛的一块,面对着各种生涩的参数和令人眼花缭乱的新奇的术语,再加上存储厂商的忽悠,总是让我们有种云里雾里的感觉。本系列文章试图从基本概念开始对磁盘存储相关的各种概念进行综合归纳,让大家能够对IO性能相关的基本概念,IO性能的监控和调整有个比较全面的了解。

在这一部分里我们先舍弃各种结构复杂的存储系统,直接研究一个单独的磁盘的性能问题,藉此了解各个衡量IO系统系能的各个指标以及之间的关系。

几个基本的概念

在研究磁盘性能之前我们必须先了解磁盘的结构,以及工作原理。不过在这里就不再重复说明了,关系硬盘结构和工作原理的信息可以参考维基百科上面的相关词条——Hard disk drive(英文)和硬盘驱动器(中文)。

读写IO(Read/Write IO)操作

磁盘是用来给我们存取数据用的,因此当说到IO操作的时候,就会存在两种相对应的操作,存数据时候对应的是写IO操作,取数据的时候对应的是是读IO操作。

单个IO操作

当控制磁盘的控制器接到操作系统的读IO操作指令的时候,控制器就会给磁盘发出一个读数据的指令,并同时将要读取的数据块的地址传递给磁盘,然后磁盘会将读取到的数据传给控制器,并由控制器返回给操作系统,完成一个写IO的操作;同样的,一个写IO的操作也类似,控制器接到写的IO操作的指令和要写入的数据,并将其传递给磁盘,磁盘在数据写入完成之后将操作结果传递回控制器,再由控制器返回给操作系统,完成一个写IO的操作。单个IO操作指的就是完成一个写IO或者是读IO的操作。

随机访问(Random Access)与连续访问(Sequential Access)

随机访问指的是本次IO所给出的扇区地址和上次IO给出扇区地址相差比较大,这样的话磁头在两次IO操作之间需要作比较大的移动动作才能重新开始读/写数据。相反的,如果当次IO给出的扇区地址与上次IO结束的扇区地址一致或者是接近的话,那磁头就能很快的开始这次IO操作,这样的多个IO操作称为连续访问。因此尽管相邻的两次IO操作在同一时刻发出,但如果它们的请求的扇区地址相差很大的话也只能称为随机访问,而非连续访问。

顺序IO模式(Queue Mode)/并发IO模式(Burst Mode)

磁盘控制器可能会一次对磁盘组发出一连串的IO命令,如果磁盘组一次只能执行一个IO命令时称为顺序IO;当磁盘组能同时执行多个IO命令时,称为并发IO。并发IO只能发生在由多个磁盘组成的磁盘组上,单块磁盘只能一次处理一个IO命令。

单个IO的大小(IO Chunk Size)

熟悉数据库的人都会有这么一个概念,那就是数据库存储有个基本的块大小(Block Size),不管是SQL Server还是Oracle,默认的块大小都是8KB,就是数据库每次读写都是以8k为单位的。那么对于数据库应用发出的固定8k大小的单次读写到了写磁盘这个层面会是怎么样的呢,就是对于读写磁盘来说单个IO操作操作数据的大小是多少呢,是不是也是一个固定的值?答案是不确定。首先操作系统为了提高IO 的性能而引入了文件系统缓存(File System Cache),系统会根据请求数据的情况将多个来自IO的请求先放在缓存里面,然后再一次性的提交给磁盘,也就是说对于数据库发出的多个8K数据块的读操作有可能放在一个磁盘读IO里就处理了。还有对于有些存储系统也是提供了缓存(Cache)的,接收到操作系统的IO请求之后也是会将多个操作系统的IO请求合并成一个来处理。不管是操作系统层面的缓存还是磁盘控制器层面的缓存,目的都只有一个,提高数据读写的效率。因此每次单独的IO操作大小都是不一样的,它主要取决于系统对于数据读写效率的判断。

当一次IO操作大小比较小的时候我们成为小的IO操作,比如说1K,4K,8K这样的;当一次IO操作的数据量比较的的时候称为大IO操作,比如说32K,64K甚至更大。

在我们说到块大小(Block Size)的时候通常我们会接触到多个类似的概念,像我们上面提到的那个在数据库里面的数据最小的管理单位,Oralce称之为块(Block),大小一般为8K,SQL Server称之为页(Page),一般大小也为8k。在文件系统里面我们也能碰到一个文件系统的块,在现在很多的Linux系统中都是4K(通过/usr/bin/time -v可以看到),它的作用其实跟数据库里面的块/页是一样的,都是为了方便数据的管理。但是说到单次IO的大小,跟这些块的大小都是没有直接关系的,在英文里单次IO大小通常被称为是IO Chunk Size,不会说成是IO Block Size的。

IOPS(IO per Second)

IOPS,IO系统每秒所执行IO操作的次数,是一个重要的用来衡量系统IO能力的一个参数。对于单个磁盘组成的IO系统来说,计算它的IOPS不是一件很难的事情,只要我们知道了系统完成一次IO所需要的时间的话我们就能推算出系统IOPS来。

现在我们就来推算一下磁盘的IOPS,假设磁盘的转速(Rotational Speed)为15K RPM,平均寻道时间为5ms,最大传输速率为40MB/s(这里将读写速度视为一样,实际会差别比较大)。

对于磁盘来说一个完整的IO操作是这样进行的:当控制器对磁盘发出一个IO操作命令的时候,磁盘的驱动臂(Actuator Arm)带读写磁头(Head)离开着陆区(Landing Zone,位于内圈没有数据的区域),移动到要操作的初始数据块所在的磁道(Track)的正上方,这个过程被称为寻址(Seeking),对应消耗的时间被称为寻址时间(Seek Time);但是找到对应磁道还不能马上读取数据,这时候磁头要等到磁盘盘片(Platter)旋转到初始数据块所在的扇区(Sector)落在读写磁头正上方的之后才能开始读取数据,在这个等待盘片旋转到可操作扇区的过程中消耗的时间称为旋转延时(Rotational Delay);接下来就随着盘片的

旋转,磁头不断的读/写相应的数据块,直到完成这次IO所需要操作的全部数据,这个过程称为数据传送(Data Transfer),对应的时间称为传送时间(Transfer Time)。完成这三个步骤之后一次IO操作也就完成了。

在我们看硬盘厂商的宣传单的时候我们经常能看到3个参数,分别是平均寻址时间、盘片旋转速度以及最大传送速度,这三个参数就可以提供给我们计算上述三个步骤的时间。

第一个寻址时间,考虑到被读写的数据可能在磁盘的任意一个磁道,既有可能在磁盘的最内圈(寻址时间最短),也可能在磁盘的最外圈(寻址时间最长),所以在计算中我们只考虑平均寻址时间,也就是磁盘参数中标明的那个平均寻址时间,这里就采用当前最多的10krmp硬盘的5ms。

第二个旋转延时,和寻址一样,当磁头定位到磁道之后有可能正好在要读写扇区之上,这时候是不需要额外额延时就可以立刻读写到数据,但是最坏的情况确实要磁盘旋转整整一圈之后磁头才能读取到数据,所以这里我们也考虑的是平均旋转延时,对于10krpm的磁盘就是(60s/15k)*(1/2) = 2ms。

第三个传送时间,磁盘参数提供我们的最大的传输速度,当然要达到这种速度是很有难度的,但是这个速度却是磁盘纯读写磁盘的速度,因此只要给定了单次IO的大小,我们就知道磁盘需要花费多少时间在数据传送上,这个时间就是IO Chunk Size / Max Transfer Rate。

现在我们就可以得出这样的计算单次IO时间的公式:

IO Time = Seek Time + 60sec/Rotational Speed/2 + IO Chunk Size/Transfer Rate

于是我们可以这样计算出IOPS

IOPS = 1/IO Time = 1/(Seek Time + 60sec/Rotational Speed/2 + IOChunk Size/Transfer Rate)

对于给定不同的IO大小我们可以得出下面的一系列的数据

4K(1/7.1ms = 140IOPS)

5ms + (60sec/15000RPM/2) + 4K/40MB = 5 + 2 + 0.1 = 7.1

8k(1/7.2ms = 139IOPS)

5ms + (60sec/15000RPM/2) + 8K/40MB = 5 + 2 + 0.2 = 7.2

16K(1/7.4ms = 135IOPS)

5ms + (60sec/15000RPM/2) + 16K/40MB = 5 + 2 + 0.4 = 7.4

32K(1/7.8ms = 128IOPS)

5ms + (60sec/15000RPM/2) + 32K/40MB = 5 + 2 + 0.8 = 7.8

64K(1/8.6ms = 116IOPS)

5ms + (60sec/15000RPM/2) + 64K/40MB = 5 + 2 + 1.6 = 8.6

从上面的数据可以看出,当单次IO越小的时候,单次IO所耗费的时间也越少,相应的IOPS也就越大。

上面我们的数据都是在一个比较理想的假设下得出来的,这里的理想的情况就是磁盘要花费平均大小的寻址时间和平均的旋转延时,这个假设其实是比较符合我们实际情况中的随机读写,在随机读写中,每次IO操作的寻址时间和旋转延时都不能忽略不计,有了这两个时间的存在也就限制了IOPS的大小。现在我们考虑一种相对极端的顺序读写操作,比如说在读取一个很大的存储连续分布在磁盘的的文件,因为文件的存储的分布是连续的,磁头在完成一个读IO操作之后,不需要从新的寻址,也不需要旋转延时,在这种情况下我们能到一个很大的IOPS值,如下

4K(1/0.1ms = 10000IOPS)

0ms + 0ms + 4K/40MB = 0.1

8k(1/0.2ms = 5000IOPS)

0ms + 0ms + 8K/40MB = 0.2

16K(1/0.4ms = 2500IOPS)

0ms + 0ms + 16K/40MB = 0.4

32K(1/0.8ms = 1250IOPS)

0ms + 0ms + 32K/40MB = 0.8

64K(1/1.6ms = 625IOPS)

0ms + 0ms + 64K/40MB = 1.6

相比第一组数据来说差距是非常的大的,因此当我们要用IOPS来衡量一个IO系统的系能的时候我们一定要说清楚是在什么情况的IOPS,也就是要说明读写的方式以及单次IO的大小,当然在实际当中,特别是在OLTP的系统的,随机的小IO的读写是最有说服力的。

传输速度(Transfer Rate)/吞吐率(Throughput)

现在我们要说的传输速度(另一个常见的说法是吞吐率)不是磁盘上所表明的最大传输速度或者说理想传输速度,而是磁盘在实际使用的时候从磁盘系统总线上流过的数据量。有了IOPS数据之后我们是很容易就能计算出对应的传输速度来的

Transfer Rate = IOPS * IO Chunk Size

还是那上面的第一组IOPS的数据我们可以得出相应的传输速度如下

4K: 140 * 4K = 560K / 40M = 1.36%

8K: 139 * 8K = 1112K / 40M = 2.71%

16K: 135 * 16K = 2160K / 40M = 5.27%

32K: 116 * 32K = 3712K / 40M = 9.06%

可以看出实际上的传输速度是很小的,对总线的利用率也是非常的小。

这里一定要明确一个概念,那就是尽管上面我们使用IOPS来计算传输速度,但是实际上传输速度和IOPS是没有直接关系,在没有缓存的情况下它们共同的决定因素都是对磁盘系统的访问方式以及单个IO的大小。对磁盘进行随机访问时候我们可以利用IOPS来衡量一个磁盘系统的性能,此时的传输速度不会太大;但是当对磁盘进行连续访问时,此时的IOPS已经没有了参考的价值,这个时候限制实际传输

速度却是磁盘的最大传输速度。因此在实际的应用当中,只会用IOPS来衡量小IO的随机读写的性能,而当要衡量大IO连续读写的性能的时候就要采用传输速度而不能是IOPS了。

IO响应时间(IO Response Time)

最后来关注一下能直接描述IO性能的IO响应时间。IO响应时间也被称为IO延时(IO Latency),IO响应时间就是从操作系统内核发出的一个读或者写的IO命令到操作系统内核接收到IO回应的时间,注意不要和单个IO时间混淆了,单个IO时间仅仅指的是IO操作在磁盘内部处理的时间,而IO响应时间还要包括IO操作在IO等待队列中所花费的等待时间。

计算IO操作在等待队列里面消耗的时间有一个衍生于利托氏定理(Little’s Law)的排队模型M/M/1模型可以遵循,由于排队模型算法比较复杂,到现在还没有搞太明白(如果有谁对M/M/1模型比较精通的话欢迎给予指导),这里就罗列一下最后的结果,还是那上面计算的IOPS数据来说:

8K IO Chunk Size(135IOPS, 7.2ms)

135 => 240.0ms

105 => 29.5ms

75 => 15.7ms

45 => 10.6ms

64K IO Chunk Size(116IOPS, 8.6ms)

135 => 没响应了……

105 => 88.6ms

75 => 24.6ms

45 => 14.6ms

从上面的数据可以看出,随着系统实际IOPS越接近理论的最大值,IO的响应时间会成非线性的增长,越是接近最大值,响应时间就变得越大,而且会比预期超出很多。一般来说在实际的应用中有一个70%的指导值,也就是说在IO读写的队列中,当队列大小小于最大IOPS的70%的时候,IO的响应时间增加会很小,相对来说让人比较能接受的,一旦超过70%,响应时间就会戏剧性的暴增,所以当一个系统的IO 压力超出最大可承受压力的70%的时候就是必须要考虑调整或升级了。

另外补充说一下这个70%的指导值也适用于CPU响应时间,这也是在实践中证明过的,一旦CPU超过70%,系统将会变得受不了的慢。很有意思的东西。

从上一篇文章的计算中我们可以看到一个15k转速的磁盘在随机读写访问的情况下IOPS竟然只有140左右,但在实际应用中我们却能看到很多标有5000IOPS甚至更高的存储系统,有这么大IOPS的存储系统怎么来的呢?这就要归结于各种存储技术的使用了,在这些存储技术中使用最广的就是高速缓存(Cache)和磁盘冗余阵列(RAID)了,本文就将探讨缓存和磁盘阵列提高存储IO性能的方法。

高速缓存(Cache)

在当下的各种存储产品中,按照速度从快到慢应该就是内存>闪存>磁盘>磁带了,然而速度越快也就意味着价格越高,闪存虽然说是发展势头很好,但目前来说却还是因为价格问题无法普及,因此现在还是一个磁盘作霸王的时代。与CPU和内存速度相比,磁盘的速度无疑是计算机系统中最大的瓶颈了,所以在必须使用磁盘而又想提高性能的情况下,人们想出了在磁盘中嵌入一块高速的内存用来保存经常访问的数据从而提高读写效率的方法来折中的解决,这块嵌入的内存就被称为高速缓存。

说到缓存,这东西应用现在已经是无处不在,从处于上层的应用,到操作系统层,再到磁盘控制器,还有CPU内部,单个磁盘的内部也都存在缓存,所有这些缓存存在的目的都是相同的,就是提高系统执

行的效率。当然在这里我们只关心跟IO性能相关的缓存,与IO性能直接相关的几个缓存分别是文件系统缓存(File System Cache)、磁盘控制器缓存(Disk Controller Cache)和磁盘缓存(Disk Cache,也称为Disk Buffer),不过当在计算一个磁盘系统性能的时候文件系统缓存也是不会考虑在内的,因此我们重点考察的就是磁盘控制器缓存和磁盘缓存。

不管是控制器缓存还是磁盘缓存,他们所起的作用主要是分为三部分:缓存数据、预读(Read-ahead)和回写(Write-back)。

缓存数据

首先是系统读取过的数据会被缓存在高速缓存中,这样下次再次需要读取相同的数据的时候就不用在访问磁盘,直接从缓存中取数据就可以了。当然使用过的数据也不可能在缓存中永久保留的,缓存的数据一般那是采取LRU算法来进行管理,目的是将长时间不用的数据清除出缓存,那些经常被访问的却能一直保留在缓存中,直到缓存被清空。

预读

预读是指采用预读算法在没有系统的IO请求的时候事先将数据从磁盘中读入到缓存中,然后在系统发出读IO请求的时候,就会实现去检查看看缓存里面是否存在要读取的数据,如果存在(即命中)的话就直接将结果返回,这时候的磁盘不再需要寻址、旋转等待、读取数据这一序列的操作了,这样是能节省很多时间的;如果没有命中则再发出真正的读取磁盘的命令去取所需要的数据。

缓存的命中率跟缓存的大小有很大的关系,理论上是缓存越大的话,所能缓存的数据也就越多,这样命中率也自然越高,当然缓存不可能太大,毕竟成本在那儿呢。如果一个容量很大的存储系统配备了一个很小的读缓存的话,这时候问题会比较大的,因为小缓存缓存的数据量非常小,相比整个存储系统来说比例非常低,这样随机读取(数据库系统的大多数情况)的时候命中率也自然就很低,这样的缓存不但不能提高效率(因为绝大部分读IO都还要读取磁盘),反而会因为每次去匹配缓存而浪费时间。

执行读IO操作是读取数据存在于缓存中的数量与全部要读取数据的比值称为缓存命中率(Read Cache Hit Radio),假设一个存储系统在不使用缓存的情况下随机小IO读取能达到150IOPS,而它的缓存能提供10%的缓存命中率的话,那么实际上它的IOPS可以达到150/(1-10%)=166。

回写

首先说一下,用于回写功能的那部分缓存被称为写缓存(Write Cache)。在一套写缓存打开的存储中,操作系统所发出的一系列写IO命令并不会被挨个的执行,这些写IO的命令会先写入缓存中,然后再一次性的将缓存中的修改推到磁盘中,这就相当于将那些相同的多个IO合并成一个,多个连续操作的小IO合并成一个大的IO,还有就是将多个随机的写IO变成一组连续的写IO,这样就能减少磁盘寻址等操作所消耗的时间,大大的提高磁盘写入的效率。

读缓存虽然对效率提高是很明显的,但是它所带来的问题也比较严重,因为缓存和普通内存一样,掉点以后数据会全部丢失,当操作系统发出的写IO命令写入到缓存中后即被认为是写入成功,而实际上数据是没有被真正写入磁盘的,此时如果掉电,缓存中的数据就会永远的丢失了,这个对应用来说是灾难性的,目前解决这个问题最好的方法就是给缓存配备电池了,保证存储掉电之后缓存数据能如数保存下来。

和读一样,写缓存也存在一个写缓存命中率(Write Cache Hit Radio),不过和读缓存命中情况不一样的是,尽管缓存命中,也不能将实际的IO操作免掉,只是被合并了而已。

控制器缓存和磁盘缓存除了上面的作用之外还承当着其他的作用,比如磁盘缓存有保存IO命令队列的功能,单个的磁盘一次只能处理一个IO命令,但却能接收多个IO命令,这些进入到磁盘而未被处理的命令就保存在缓存中的IO队列中。

RAID(Redundant Array Of Inexpensive Disks)

如果你是一位数据库管理员或者经常接触服务器,那对RAID应该很熟悉了,作为最廉价的存储解决方案,RAID早已在服务器存储中得到了普及。在RAID的各个级别中,应当以RAID10和RAID5(不过RAID5已经基本走到头了,RAID6正在崛起中,看看这里了解下原因)应用最广了。下面将就RAID0,RAID1,RAID5,RAID6,RAID10这几种级别的RAID展开说一下磁盘阵列对于磁盘性能的影响,当然在阅读下面的内容之前你必须对各个级别的RAID的结构和工作原理要熟悉才行,这样才不至于满头雾水,推荐查看wikipedia上面的如下条目:RAID,Standard RAID levels,Nested RAID levels。

RAID0

RAID0将数据条带化(striping)将连续的数据分散在多个磁盘上进行存取,系统发出的IO命令(不管读IO和写IO都一样)就可以在磁盘上被并行的执行,每个磁盘单独执行自己的那一部分请求,这样的并行的IO操作能大大的增强整个存储系统的性能。假设一个RAID0阵列有n(n>=2)个磁盘组成,每个磁盘的随机读写的IO能力都达到140的话,那么整个磁盘阵列的IO能力将是140*n。

同时如果在阵列总线的传输能力允许的话RAID0的吞吐率也将是单个磁盘的n倍。

RAID1

RAID1在容量上相当于是将两个磁盘合并成一个磁盘来使用了,互为镜像的两个磁盘里面保存的数据是完全一样的,因此在并行读取的时候速度将是n个磁盘速度的总和,但是写入就不一样了,每次写入都必须同时写入到两个磁盘中,因此写入速度只有n/2。

RAID5

我们那一个有n(n>=3)个磁盘的RAID5阵列来看,首先看看RAID5阵列的读IO,RAID5是支持并行IO的,而磁盘上的数据呈条带状的分布在所有的磁盘上,因此读IO的速度相当于所有磁盘速度的总和。不过这是在没有磁盘损坏的情况下,当有一个磁盘故障的时候读取速度也是会下降的,因为中间需要花时间来计算丢失磁盘上面的数据。

读取数据的情况相对就要复杂的多了,先来看下RAID5奇偶校验数据写入的过程,我们把写入的数据称为D1,当磁盘拿到一个写IO的命令的时候,它首先会读取一次要入的地址的数据块中修改之前的数据D0,然后再读取到当前条带中的校验信息P0,接下来就根据D0,P0,D1这三组数据计算出数据写入之后的条带的奇偶校验信息P1,最后发出两个写IO的命令,一个写入D1,另一个写入奇偶校验信息P1。可以看出阵列在实际操作的时候需要读、读、写、写一共4个IO才能完成一次写IO操作,也就是实际上的写入速度只有所有磁盘速度总和的1/4。从这点可以看出RAID5是非常不适合用在要大批量写入数据的系统上的。

RAID6

RAID6和RAID5很类似,差别就在于RAID6多了一个用于校验的磁盘。就写IO速度上来说这两个是完全一样的,都是所有磁盘IO速度的总和。

在写IO上也很是类似,不同的是RAID将一个命令分成了三次读、三次写一共6次IO命令才能完成,也就是RAID6实际写入磁盘的速度是全部磁盘速度之和的1/6。可以看出从写IO看RAID6比RAID5差别是很大的。

RAID10

RAID0读写速度都很好,却没有冗余保护;RAID5和RAID6都有同样的毛病就是写入的时候慢,读取的时候快。那么RAID1呢?嗯,这里要说的就是RAID1,其实不管是RAID10还是RAID01,其实都是组合大于2块磁盘时候的RAID1,当先镜像后条带时候就称为RAID10,先条带后镜像的时候称为RAID01。从性能上看RAID01和RAID10都是一样的,都是RAID1嘛,但是RAID10在重建故障磁盘的时候性能比RAID01要快。

因为RAID10其实就是RAID1,所以它的性能与RAID1也就是一样的了,这里不需要再做过多的讨论。

四个性能指标的变化

IO响应时间(IO Response Time)

在任何时候IO响应时间值得都是单个IO的响应时间,因此,不管磁盘是否组成了磁盘阵列,它的IO响应时间应该都是一样的。从前面的计算中我们可以看到,如果IO响应时间在10ms左右的话是很正常的,但是当IO响应时间比这个值超出太多的时候,你就要开始注意了,很可能就意味着此时你的磁盘系统已经成为了一个瓶颈。

IOPS

综合上面两个部分的讨论我们来估算一下阵列下的磁盘总体IOPS,在这里我们先假设组成阵列的单个磁盘的随机读写的IOPS为140,读写缓存命中率都为10%,组成阵列的磁盘个数为4。

因为不管是那种阵列,磁盘的读取性能都是所有磁盘之和,所以可以得出下面的读取IOPS:

read IOPS = disk_IOPS/(1-read_cache_hit_ratio)*disk_num =140/(1-10%)*4 = 622

而写入性能就完全不一样了,根据上面的讨论我们可以得出下面结论:

RAID0: 1IO request => need1actual IO on disk

RAID1: 1IO request => need2actual IO on disk

RAID5: 1IO request => need4actual IO on disk

RAID6: 1IO request => need6actual IO on disk

由此我们也可以计算出写入IOPS估算公式:

RAID0write IOPS =disk_IOPS/(1-write_cache_hit_ratio)*disk_num/acture_IO_num =140/(1-10%)*4/1 = 622

RAID1write IOPS =disk_IOPS/(1-write_cache_hit_ratio)*disk_num/acture_IO_num =140/(1-10%)*4/2 = 311

RAID5write IOPS =disk_IOPS/(1-write_cache_hit_ratio)*disk_num/acture_IO_num =140/(1-10%)*4/4 = 155

RAID6write IOPS =disk_IOPS/(1-write_cache_hit_ratio)*disk_num/acture_IO_num =140/(1-10%)*4/6 = 103

实际上从通过上面的计算方法我们还可以估算当给定一个要求的IOPS的情况下,估计下使用各个阵列级别所需要的磁盘的数量。当然我们上面的计算方法只是一个估算,我们忽略很多其他的因素,得出的只是一个大概的数值,不过在实际的应用还是有一定的参考作用的。

本篇最后附送一个计算磁盘系统IOPS的网站――wmarow’s disk & disk array calculator,这个网站提供的计算公式还考虑了诸如阵列条带大小以及主机方面的因素,很有参考价值,至于怎么选择合适的条带大小,请参考【延伸阅读】部分。

传输速度(Transfer Rate)/吞吐率(Throughput)

实际上估算除了随机读写的IOPS也就知道了随机读写的吞吐率。对于顺序读写的呢,还是跟前一篇所讲的一样,主要受限于磁盘的限制,不能再拿IOPS来衡量了。

random_throughtput = random_IOPS * IO_chunk_size

dd命令

dd其实是工作于比较低层的一个数据拷贝和转换的*nix平台的工具,但是因为dd命令支持*nix平台的一些特殊设备,因此我们可以利用dd命令的这个特性来简单的测试磁盘的性能。

先说一下两个相关的特殊设备

/dev/null

空设备,通常用作输出设备,这个是*nix系统上面的黑洞,所有送到这个空设备上的内容都会凭空消失。

/dev/zero

空字符,通常用作输入,从/dev/zero中读取时,它能源源不断的提供空字符(ASCII NUL, 0×00)出来,要多少有多少。

于是就有了下面的用法:

测试磁盘的写入

/usr/bin/time dd if=/dev/zero of=/tmp/foo bs=4k count=1024000

这个命令时往磁盘的文件/tmp/foo中写入一个4G大小的文件,当然文件的内容全部是空字符了,同时用/usr/bin/time来对命令的执行进行计时,命令中的bs指的是写入文件时的块大小,其实就相当于Oracle中的block大小了,count是写入的块数。采取这种方法来写入数据时只是测试的连续读磁盘的性能,而不是随机读的性能,不能采取这种方法检查一个机器的IOPS的,只能检查磁盘的吞吐率。

测试磁盘的读取

/usr/bin/time dd if=/tmp/foo of=/dev/null bs=4k

上面的命令是从/tmp/foo文件中读取数据,然后扔掉,这里bs用的是读取时块的大小。和上面写入的命令一样,这样测试的仅仅是最大的读取性能,而不是随机IO的性能。

还能读写同时测试

/usr/bin/time dd if=/tmp/foo of=/tmp/foo2 bs=4k

在上面的命令中都用到了time命令对操作进行计时,这样才能正确的进行判断。要记住的一点是dd命令只能够提供一个大概的测试,通过这个简单的命令可以对磁盘系统的最大性能有一个大概的了解,要了解更详细的信息还要通过其他方法来查看。

iostat命令

理解iostat的各项输出

在Linux中,我们执行一个iostat -x命令,我们能看到如下的输出

$iostat -x

Linux 2.4.21-50a6smp (linux) 11/03/2009

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

0.42 0.00 0.26 0.47 98.86

Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util

hdc 0.01 0.00 0.00 0.00 0.07 0.00 0.03 0.00 24.48 0.00 4.90 4.57 0.00

hda 0.89 8.54 0.74 4.49 12.60 104.22 6.30 52.11 22.32 0.03 5.41 1.01 0.53

我们先列举一下各个性能指标的简单说明。

rrqm/s

每秒进行merge的读操作数目。

wrqm/s

每秒进行merge的写操作数目。

r/s

每秒完成的读I/O设备次数。

w/s

每秒完成的写I/O设备次数。

rsec/s

每秒读扇区数。

wsec/s

每秒写扇区数。

rkB/s

每秒读K字节数。

wkB/s

每秒写K字节数。

avgrq-sz

平均每次设备I/O操作的数据大小(扇区)。

avgqu-sz

平均I/O队列长度。

await

平均每次设备I/O操作的等待时间(毫秒)。

svctm

平均每次设备I/O操作的服务时间(毫秒)。

%util

一秒中有百分之多少的时间用于I/O操作,或者说一秒中有多少时间I/O队列是非空的。要理解这些性能指标我们先看下图

上图的左边是iostat显示的各个性能指标,每个性能指标都会显示在一条虚线之上,这表明这个性能指标是从虚线之上的那个读写阶段开始计量的,比如说图中的w/s从Linux IO scheduler开始穿过硬盘控制器(CCIS/3ware),这就表明w/s统计的是每秒钟从Linux IO scheduler通过硬盘控制器的写IO的数量。

结合上图对读IO操作的过程做一个说明,在从OS Buffer Cache传入到OS Kernel(Linux IO scheduler)的读IO操作的个数实际上是rrqm/s+r/s,直到读IO请求到达OS Kernel层之后,有每秒钟有rrqm/s个读IO操作被合并,最终转送给磁盘控制器的每秒钟读IO的个数为r/w;在进入到操作系统的设备层(/dev/sda)之后,计数器开始对IO操作进行计时,最终的计算结果表现是await,这个值就是我们要的IO响应时间了;svctm是在IO操作进入到磁盘控制器之后直到磁盘控制器返回结果所花费的时间,这是一个实际IO操作所花的时间,当await与svctm相差很大的时候,我们就要注意磁盘的IO性能

了;而avgrq-sz是从OS Kernel往下传递请求时单个IO的大小,avgqu-sz则是在OS Kernel中IO请求队列的平均大小。

现在我们可以将iostat输出结果和我们前面讨论的指标挂钩了。

平均单次IO大小(IO Chunk Size) <=> avgrq-sz

平均IO响应时间(IO Response Time) <=> await

IOPS(IO per Second) <=> r/s + w/s

吞吐率(Throughtput) <=> rkB/s + wkB/s

iostat的应用实例

观察IO Scheduler的IO合并(IO Merge)

前面说过IO在执行过程中会被合并以提高效率,下面就结合dd命令和iostat命令看一下。

我们先执行dd命令,设置bs参数值为1k,完整命令如下

dd if=/dev/zero of=test bs=1k count=1024000

同时打开另外一个终端执行iostat命令,这里只查看变化那个磁盘的更改,每秒刷新一次数据,完整命令如下

iostat -x hdc7 1

然后我们可以得到下面的结果

Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util hdc7 0.00 9447.00 0.00 776.00 0.00 80616.00 0.00 40308.00 103.89 480.18 805.95 1.29 100.00

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

0.50 0.00 56.00 43.50 0.00

Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util hdc7 0.00 9534.00 0.00 872.00 0.00 81384.00 0.00 40692.00 93.33 274.56 401.19 1.14 99.00

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

2.50 0.00 46.50 14.00 37.00

Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util hdc7 0.00 6766.00 1.00 276.00 8.00 58808.00 4.00 29404.00 212.33 197.27 321.66 1.95 54.00

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

0.50 0.00 0.50 0.00 99.00

看结果中第一组数据中的avgrq-sz,为103.89个扇区,磁盘的每个扇区为512字节,因此平均IO大小为103.89*512/1024=52k字节,远远大于我们dd命令时给定的参数1k字节,也就是说IO在中间被合并了。看巨大的wrqm/s也能得出同样的结论。

附:在Windows中监视IO性能

本来准备写一篇windows中监视IO性能的,后来发现好像可写的内容不多,windows在细节这方面做的不是那么的好,不过那些基本信息还是有的。

在Windows中监视性能基本都用性能监视器了,与IO性能相关的有两个大类,一个是”LogicalDisk”,另外一个是”PhysicalDisk”,”LogicalDisk”更多的是用来监视文件相关的IO性能,而”PhysicalDisk”则是用来监视LUN或者是磁盘卷,下面就列举下与前面所列举的IO性能相关的计数器,具体的自己研究了:

单次IO大小

Avg. Disk Bytes/Read

Avg. Disk Bytes/Write

IO响应时间

Avg. Disk sec/Read

Avg. Disk sec/Write

IOPS

Disk Reads/sec

Disk Writes/sec

Disk Transfers/sec

IO吞吐率

Disk Bytes/sec

Disk Read Bytes/sec

Disk Write Bytes/sec

Windows下的进程管理和监控器分解

操作系统安全课程设计报告Windows下的进程管理和监控器

目录 操作系统安全课程设计报告 0 一、概述 (2) 1.设计主要完成的任务 (2) 2.解决的主要问题 (2) 二、设计的基本概念和原理 (2) 1.概念 (2) 2.原理 (2) 三、总体设计 (3) 1.功能模块 (3) 2.流程图 (3) 四、详细设计 (4) 主要功能的代码实现: (4) 五、完成的情况以及使用说明 (22) 六、总结 (33) 七、参考文献 (34)

一、概述 1.设计主要完成的任务 设计一个Windows或Linux下的进程管理与监控程序,要求该程序完成以下功能: (1)可获取当前正在运行的所有进程,包括进程PID、进程名称、CPU使用情况、当前用户名、内存占用量等; (2)能进一步获取各进程的所有线程情况; (3)能通过命令终止某个进程的执行,终止时能将其子孙进程全部终止; (4)要求界面友好。 2.解决的主要问题 我们的电脑需要我们去了解它的运行状况,掌握和管理它的进程,并对其异常情况给予操作和控制,任务管理器就像是我们了解和控制自己电脑运作的一个窗口,通过这个窗口我们可以了解到电脑所有进程运行状况,并对运行的进程加于管理和控制。本管理器设计比较简洁,操作灵活,使用简单,可以为我们管理和控制计算机的进程提供了一个简便的方法,是我们控制本计算机进程和了解计算机进程情况的良好助手。 二、设计的基本概念和原理 1.概念 在本实验中,启动进程管理器后,可以通过”获取进程”功能来获得本计算机启动的进程,以及与该进程相关的信息,其中包括的信息有:进程映像名称,进程开启的线程数,进程的PID以及进程的优先数,我们可以通过这些信息来了解计算机中每个进程的使用状况。同时我们可以在进程管理器上选中一个要终止的的进程,点击“终止进程”功能按钮,该进程被终止执行并退出进程列表,其中还包括了自动刷新的功能,此按钮实现的功能正如我们电脑任务管理器的“进程”功能,当电脑执行程序不能通过关闭窗口进行正常的关闭时,可以借助此办法来关闭进程。我们还可以通过这个进程管理器来启动新的进程,当我们要在进程管理器里启动新的进程时,只要点击“启动新进程”按键,则会弹出“打开进程”对话框,我们可以通过对话框里的“浏览”窗口选择要打开的新进程,这是任务管理器里没有实现的功能,通过这个功能我们在管理计算机时变得更加灵活方便,也使进程管理的功能更加完善。在退出此进程管理器时候,只要选择“退出”功能按钮则可关闭进程管理器,快速退出管理器的界面。 2.原理

分析windows性能监视器常用计数器(good)

最近研究性能测试工具中发现这些所谓的性能测试工具的数据、全部来至windows操作系统提供的数据、然后通过API提供给性能测试工具、性能测试工具在用一种比较直观的图形展示出来。也就是说不部分情况下如果把你没有弄明白性能监视器中数据得意义,那么性能测试工具的那些图表对你的意义也就没有多大的用处。下面我整理了一部分windows中性能监视器中比较常用的性能计数器。 这里整理的比较多的内容:处理器对象、系统对象、逻辑磁盘对象、物理磁盘对象、内存。这些性能计数器我们经常在使用的过程中都会用得到,所以这篇文章大部分内容是这些的。 ? 1. 处理器对象(Processor Object) 一条经验规则是不要使你所监控的每个处理器的C P U使用率高于9 0%。峰值超过9 0%是可以接受的,但平均使用率超过9 0%则是应该避免的。 ? 处理器时间百分比(%Processor Time)处理器执行一个非空闲线程的时间百分比。用%1 0 0减去处理器空闲的总时间得出这个值。这是整个系统的C P U使用的一个好的指示器。 ? 特权时间百分比(%Privileged Time) 处理器用于在特权模式下(即,执行操作系统功能和运行驱动器,如I / O )工作时间的百分比。这个时间包括C P U (或C P U )用于维护中断和延迟过程调用( D P C )的时间。 ? 用户时间百分比(%User Time) 处理器用于在用户模式工作的时间百分比。这种类型的工作是由应用产生的。通常,希望极大化用户时间百分比的值,极小化特权时间百分比的值。 ? 中断时间百分比(%Interrupt Time) CPU忙于维护硬件中断的时间百分比。系统中的许多硬件部件,如鼠标、网络接口卡或磁盘控制器,都可以发出处理器中断。你可以将中断看作为Windows NT正常操作的一部分发生。 ? 中断数/秒(Interrupts/sec) 处理器每秒接收并处理的硬件中断的数量。它不包括系统 D P C,系统D P C单独计数。 ? 2. 系统对象(System Object) 系统对象与它的相关计数器衡量处理器上运行的线程的总计数据。虽然使用这些计数器不能观察一个特定处理器的工作负载或一个特定线程的行为,但它们提供了有关整个系统性能有价值的内部信息。系统计数器如下所示: ? 处理器队列长度(Processor Queue Length) 处理器队列中的线程的数量。换句话说,它 是等待运行的线程数。即使你的系统具有多个处理器,但只有一个队列用于处理器时间。计数器只记录那些准备执行但仍处于等待的线程,不是那些正在运行的线程。 ? 环境切换/秒(Context Switches/sec) 系统上的所有处理器从一个线程切换到另一个线程的组合比率。当一个正在运行的线程自动地放弃处理器,处理器由一个高优先级的待命线程抢占时发生环境切换,或在用户模式和特权(核心)模式之间切换,以使用一个执行或子系统的服务。这是线程的总和:计算机上运行在所有处理器上的所有线程的环境切换数/秒。 这个Processor Queue越大,对硬件性能的考验就越大,微软在windows2000时推荐的是如下:

Windows中监视IO性能

windows下如何查看磁盘IO性能 2011-07-18 14:22:32| 分类:Windows | 标签:磁盘io |字号大中小订阅 通常,我们很容易观察到数据库服务器的内存和CPU压力。但是对I/O压力没有直观的判断方法。磁盘有两个重要的参数:Seek time、Rotational latency。正常的I/O计数为:①1000/(Seek time+R otational latency)*0.75,在此范围内属正常。当达到85%的I/O计数以上时则基本认为已经存在I/O瓶劲。理论情况下,磁盘的随机读计数为125、顺序读计数为225。对于数据文件而言是随机读写,日志文件是顺序读写。因此,数据文件建议存放于RAID5上,而日志文件存放于RAID10或RAID1中。 下面假设在有4块硬盘的RAID5中观察到的Physical D isk性能对象的部分值: Avg. D isk Queue Length 12 Avg. D isk Sec/Read .035 Avg. D isk Sec/Write .045 Disk Reads/sec 320 Disk Writes/sec 100 Avg. D isk Queue Length,12/4=3,每块磁盘的平均队列建议不超过2。 Avg. D isk Sec/Read一般不要超过11~15ms。 Avg. D isk Sec/Write一般建议小于12ms。

从上面的结果,我们看到磁盘本身的I/O能力是满足我们的要求的,原因是因为有大量的请求才导致队列等待,这很可能是因为你的SQL语句导致大量的表扫描所致。在进行优化后,如果还是不能达到要求,下面的公式可以帮助你计算使用几块硬盘可以 满足这样的并发要求: Raid 0 -- I/Os per disk = (reads + writes) / number of disks Raid 1 -- I/Os per disk = [reads + (2 * writes)] / 2 Raid 5 -- I/Os per disk = [reads + (4 * writes)] / number of disks Raid 10 -- I/Os per disk = [reads + (2 * writes)] / number of disks 我们得到的结果是:(320+400)/4=180,这时你可以根据公式①来得到磁盘的正常I/O值。假设现在正常I/O计数为125,为了达到这个结果:720/125=5.76。就是说要用6块磁盘才能达到这样的要求。 但是上面的Disk Reads/sec和Disk Writes/sec是个很难正确估算的值。因此只能在系统比较忙时,大概估算一个平均值,作为计算公式的依据。另一个是你很难从客户那里得到Seek time、Rotational latency参数的值,这也只能用理论值125进行计算。 ############################################# ############################################# 前言 作为一个数据库管理员,关注系统的性能是日常最重要的工作之一,而在所关注的各方面的性能只能IO性能却是最令人头痛的一块,面对着各种生涩的参数和令人眼花缭乱的新奇的术语,再加上存储厂商的忽悠,总是让我们有种云里雾里的感觉。本系列文章试图从基本概念开始对磁盘存储相关的各种概念进行综合归纳,让大家能够对IO性能相关的基本概念,IO性能的监控和调整有个比较全面的了解。 在这一部分里我们先舍弃各种结构复杂的存储系统,直接研究一个单独的磁盘的性能问题,藉此了 解各个衡量IO系统系能的各个指标以及之间的关系。 几个基本的概念 在研究磁盘性能之前我们必须先了解磁盘的结构,以及工作原理。不过在这里就不再重复说明了,关系硬盘结构和工作原理的信息可以参考维基百科上面的相关词条——Hard disk drive(英文)和硬盘驱 动器(中文)。 读写IO(Read/Write IO)操作 磁盘是用来给我们存取数据用的,因此当说到IO操作的时候,就会存在两种相对应的操作,存数据时候对应的是写IO操作,取数据的时候对应的是是读IO操作。 单个IO操作

Windows优化大师的功能和使用方法分析

Windows优化大师的功能和使用方法分析 测控技术与仪器160511135 韩红莉电脑迷们永远不会对自己的计算机表示满意的,他们总是精益求精,想让自己的机器表现得更出色。而作为我们最常用的操作系统Windows9X,通常它的表现都不会尽如人意,怎样才能让它有更好的表现,怎样才能让它不会随着我们使用时间的增加变得越来越大臃肿,从而导致系统的整体性能下降,运行速度越来越缓慢?对了!试一试"Windows优化大师"。 Windows优化大师是国内知名的系统优化软件,有着丰富的优化功能,而且软件体积小巧,功能强大,是装机必备软件之一。Windows优化大师软件,同时适合Windows98/Me/2000/XP 操作系统,能够为系统提供全面有效而简便的优化、维护和清理手段,让系统始终保持在最佳状态。Windows优化大师具有以下特点: 一,具有全面的系统优化选项 (1)向用户提供简便的自动优化向导 (2)优化项目均提供回复功能 二,详细准确的系统检测功能 (1)提供详细准确的硬件、软件信息 (2)提供系统性能进一步提高的建议 三,强大的清理功能 (1)快速安全清理注册表 (2)清理选中的硬盘分区或指定目标 四,有效地系统维护模块 (1)检测和修复磁盘问题 (2)文件加密与恢复工具 [软件的使用] 1、了解系统信息 在"系统信息"主界面中,您可以了解到您计算机中详细的软件和硬件信息,分别包括:CP U信息、内存信息、对换区、虚拟内存容量、光驱缓存和磁盘缓存。如果需要更详尽的信息,可点击选项"更多信息",这里的内容分为6大类:CP U信息、拨号适配器信息、硬盘信息、鼠标和键盘信息、显示器分辨率和内存信息。

windows 性能监视器使用及解释

windows 性能监视器使用及解释 Windows XP系统自带的性能监视器,如下图所示: 如果要查看系统的内存占用、CPU占用等性能信息,大家通常会想到Windows的任务管理器,不过在Windows 2000/XP中还有一个功能更为强大的工具,可以查看更为详细的系统性能信息。通过这些数据可以了解系统的工作状态以及资源的使用情况,而且它还具备日志记录和警报功能。根据日志记录可以诊断系统性能问题,从而优化系统。通过警报功能则可以监视系统中的性能数据,当达到指定条件时及时通知用户,可谓是电脑的“火警”监测器(下面主要以Windows XP 为例,Windows 2000基本相同)。

打开“火警”监测器 单击“控制面板→管理工具→性能”,或在开始菜单“运行”栏中输入“Perfmon.msc”即可打开系统性能管理工具,在左边可以看到功能分为“系统监视器”和“系统日志和警报”两大模块。 系统监视器——透过现象看本质 1.理解重要概念 系统监视器以图形方式实时显示出指定系统性能数据。在使用前,首先需要理解一些概念的含义。 (1)性能对象:所谓性能对象,就是指影响系统性能表现最关键的几个部件:CPU、内存、硬盘等。Windows XP从它们那里获得性能数据。要监视系统状态,首先就要选择这些对象。 (2)性能计数器:上面提到的关键部件的性能随时都在变化,是动态的数据,所以必须有一台“摄像机”随时监控它们,并把记录下来的性能表现随时回放给我们。每个性能对象的计数器就扮演着这样的角色,每个计数器用于描述与性能有关的特定方面的数据。为了统一衡量标准,所以性能数据都以具体数值来表示。例如,“Memory”(内存)对象提供的“Pages/sec”(分页/秒)计数器跟踪虚拟内存读取和写入速度,也就是每秒处理的分页数。 什么是分页(Page)? 还记得我们今年第5期《虚拟内存到底应该怎么设?》吗?里面介绍了“Page”这个概念,再让我们一起复习一下吧:为了便于管理和存放数据,Windows会将物理内存(RAM)与虚拟内存分割成许多小块,称为Page(分页),每个Page为4KB,它也是内存在Windows系统中的单位,每个Page都有编号。程序运行时,系统就会将该程序所需文件先从硬盘调入并保存到这些内存分页中,之后要用那个文件,只需指明文件所在相应分页的编号即可,调用起来非常方便。Windows 2000/XP的虚拟内存文件Pagefile.sys被称为分页文件(或页面文件)。 2.如何阅读监视器中的数据 在Windows XP中,系统监视器默认会装入三个性能计数器:“Pages/sec”(内存

利用性能监视器程序 巧妙查看Windows Server 2008运行性能

利用性能监视器程序巧妙查看Windows Server 2008运行性能 为了满足自己的尝新愿望,不少朋友在时机不成熟的条件下,强行将自己的服务器系统升级为WindowsServer2008;尽管WindowsServer2008系统相比旧版本的服务器系统来说,运行稳定性以及安全性都有了显着地提升,可是我们仍然应该将自己的目光多投向该服务器系统的运行性能方面,毕竟及时了解服务器运行性能的变化可以帮助网络管理员更好地安装、运行工作任务,从而保证服务器系统的运行效率始终处于非常理想的状态。那么,我们究竟该如何准确、及时地监控到WindowsServer2008服务器系统的运行性能变化呢?其实很简单,该服务器系统已经为我们提供了一个性能监视器功能,利用该工具我们就能非常轻松地查看到Windows Server 2008服务器系统的运行性能变化了。 运行性能监视器程序 通常来说,要是我们想查看本地服务器系统的运行性能如何时,我们常常会习惯使用系统的任务管理器进行查看,因为在系统任务管理器窗口中,我们既可以非常直观地看到服务器正在运行的所有进程,又能看清楚每一个系统进程耗费的CPU资源和内存资源。但是,要是我们希望获得更为详细的服务器运行性能信息时,那我们不妨尝试使用Windows Server 2008系统自带的性能监视器工具,利用该工具我们不但能够获取更为详细的技术层面的统 计信息,而且还能对这些信息及时进行准确统计记录,方便改变系统选项,从而达到优化、提高服务器系统运行性能的目的。 要想使用Windows Server 2008系统的性能监视器程序来及时查看服务器系统的运行性能变化时,我们首先要做的事情当然就是运行该服务器系统自带的性能监视器程序了。在运行该功能程序时,我们不妨先以特权账号登录进Windows Server 2008服务器系统,在该系统桌面中单击“开始”按钮,从弹出的“开始”菜单中依次选择“程序”/“管理工具”/“服务器管理器”命令,打开服务器管理器窗口; 在该管理器窗口的左侧显示窗格中,依次展开“诊断”/“可靠性和性能”/“监视工具”/“性能监视器”分支选项,在“性能监视器”选项所对应的右侧显示窗格中,我们就能很直观地看到如图1所示的服务器系统性能监视主界面了,在该界面中我们就能直观地看到服务器系统每时每刻运行性能的变化了。

教你测试显示器的综合性能

一台好的显示器,可以把一幅美丽的图画展现在你的面前,犹如真人展现似的。所以显示器的质量好坏直接影响用户的体验效果。那么我们如何来鉴定一台显示器效果的好坏呢?今天我们来使用一款Nokia Monitor Test软件对显示器性能进行测试。看看这台显示器的效果如何? 一、到网上下载Nokia Monitor Test的软件,一般你下载绿色版的,下载下来后,双击Ntest.exe 即可运行。 二、运行后,在出现的对话框中选择English单选紐,单击0K按钮进入Nokia Monitor Test的主界而,如图1所示。 三、在Nokia Monitor Test主界面下方有15个选项,从左到右从上到下依次分别是Geometry(几何)、HighVoltage(高电压)、Brightnessandcontrast(亮度与对比度)、WWW(官方链接)、Colors(色彩)、Tocontrolpanel/display(转到控制面板显示属性)、Hclp(帮助)、Convergence(收敛)、Focus(聚焦)、Resolution(分辨率)、Moire(水波纹)、Readability(文本清晰度)、Jitter(枓动)、Sound(声音)和Quit(退出),单击相应的选项即可对相关项目进行测试。我们来看下这些参数的具体定义: >Geometry(几何):用来测试图像的几何失真度。测试时,需要观察4个角和中间的圆形是否为正圆,以及屏幕上的方块是否是正方形。如果不是,可以先利用显示器调整菜单进行调整,若无法弥补则说明敁示器的几何显示比较差,不适合用来做图像处理工作,如图2所示。 当你在进行测试时,你可以用鼠标单击改变測试图形的颜色,用鼠标右击改变正方形大小,在使用显示器菜单调整显示器时,可将測试画面中四边的断线恰好隐藏至不见,如果断线和显示屏幕边框不吻合,可调节桶形、梯形、平行四边形等选项,直至两者尽量吻合为止。

Windows IIS SQLServer性能测试有关计数器监视及相应的分析方法@

有关windows资源计数器:

相应的分析方法: 一、内存 1、查看Available MBytes (memory)。 可用物理内存数。一般要保留10%的可用内存。最低不能<4M,此值过小可能是内存不足或内存泄漏。 2、查看page faults/sec(memory)、pages input/sec(memory)及page reads/sec(memory)。 如果有个程序请求内存中的一页,但系统无法在所需的位置上找到它,就会构成一个分页错误。如果此页位于内存中的其它位置,则此错误便称为软件分页错误。如果必须从磁盘获取此页,则此错误便称为硬件分页错误。大部分的处理器可以处理大量的软件错误而不会引起任何后果。但是,硬件错误却会导致严重的延迟。 「page faults/sec」是指处理器处理错误页 (包括硬件及软件分页错误) 的整体速度。「pages input/sec」是指为了解决硬件分页错误而从磁盘读取的总页数。 「pages reads/sec」是指为了解决硬件分页错误而读取磁盘的次数。 「pages input/sec」会大于或等于「page reads/sec」,并且能够清楚地让您了解硬件分页错误率。如果这些数字都很低,则服务器应该可以快速地响应请求。如果很高,则可能是因为您用了太多的内存在缓存处理上,而没有留足够的内存供系统的其它部份使用。可以增加内存或降低缓存的ram大小来解决。 详细: page Faults/sec:只表明数据不能在内存的指定工作集中立即使用; page Input/sec: page input/sec > page reads/sec; page Reads/sec: 阈值为>5.越小越好,大数值表示磁盘读而不是缓存读; Page/sec:指为解析硬页错误从磁盘读取或写入磁盘的页数(是Pages Input/sec 和 Pages Output/sec 的总和)。其值推荐00-20如果服务器没有足够的内存处理其工作负荷,此数值将一直很高。如果大于80,表示有问题(太多的读写数据操作要访问磁盘,可考虑增加内存或优化读写数据的算法),如果值比较低,说明Web 服务器响应请求比较快,否则可能是服务器系统内存短缺引起(也可能是缓存太大,导致系统内存太少)。 3、查看Pool Nonpaged Bytes(Memory)计数器的值。 Pool Nonpaged Bytes 指在非分页池中的字节数,非分页池是指系统内存(操作系统使用的物理内存)中可供对象(指那些在不处于使用时不可以写入磁盘上而且只要分派过就必须保留在物理内存中的对象)使用的一个区域。缓慢增长表示存在内存泄漏问题。 二、处理器 1、%processor time(processor)、%user time(processor)、%privileged time(processor)

性能监视器使用(SQLServer 2008)汇总

LR11 如何启动系统监视器(Windows) SQL Server 2008 R2 使用系统监视器可以监视系统资源的使用率。使用计数器形式收集和查看服务器资源(如处理器和内存使用)和许多Microsoft SQL Server 资源(如锁和事务)的实时性能数据。 在Windows 中启动系统监视器 ? 在“开始”菜单上,指向“运行”,在“运行”对话框中键入perfmon,然后单击“确定”。 ? 对SQLSERVER进行性能监控 对SQLSERVER进行性能监控 在上一篇文章《SQLSERVER性能监控级别步骤》里说到性能监控的步骤中有一步涉及到建立性能基线,但是没有说到有哪些计数器

可以用来进行监控的,这篇文章结合《企业级平台管理实践》的书本说一下监控SQLSERVER 有哪些计数器可以用到的 3、建立性能基线 当确定了性能监控中所涉及的资源、负载和目标后,开始进行监控,并建立性能基线与当前服务器性能进行比较。 性能基线是一个保证系统正常操作性能范围值,达到或超过这个范 围,系统性能可能会显著下降。 应该对接近或超过性能基线的数字做进一步调查找出原因监控的 周期是一段时间,而不是一两天。 其中应该包括数据库活动的峰值时间和非峰值时间,数据查询和批 处理命令的响应时间、数据库备份和还原所需时间 建立服务器性能基线后,将基线统计与当前服务器性能进行比较。 对高于或远低于基线的数字需要做进一步调查。 他们可能表明有需要调整或重新配置的区域。例如,执行一组查询 的时间增加,检查这些查询以确定能否重新编写他们, 或者是否添加统计信息或索引 介绍: 性能监视器Performance Monitor 性能监视器是Windows的一个工具,在系统管理工具组里。默认里面就有很多Windows 层面的性能计数器,可以监视系统的运行。 直接运行"perfmon",也可以打开他。这里以WindowsXP/2003/2008的性能监视器为例。

局域网性能监测之网络监视器的应用一

局域网性能监测之网络监视器的应用一 网络的连接问题一直是困扰网络管理员的首要的问题,很多时候由于采用的操作方法不正确,会造成这样或者那样的问题。而Windows 2000 Server系统提供了网络监视器和网络性能监视器两种实用的工具,对解决一些网络的问题提供了方便。网络监视器主要是通过数据统计来提供分析依据,而性能监视器主要是通过图像形式来形象的观测网络的性能数据,两者相互相乘。 使用网络监视器能够捕捉和显示运行Windows 2000 Server的计算机从局域网上接收的帖(数据包)。网络管理员可以使用网络监视器检查和解决在本地计算机上遇到的一些网络问题。例如,可以定位客户端到用户端的连接问题,发现工作请求数目不成比例的计算机,以及标识网络上未授权的用户。另外,当服务器计算机不能与其他计算机进行通讯的时候,可以使用网络监视器诊断硬件和软件问题等等。 一、网络监视器的安装 Windows 2000 Server在缺省安装的情况下,是不会将网络监视器安装进系统的,必须进行手动的安装。 (1)打开“控制面板”的“添加/删除程序”,选中其中的“添加/删除Windows组件”命令,出现“Windows 组件向导”对话框(如图1)。 图1 “Windows组件向导”对话框(2)选中“管理和监视工具”选项,然后单击“详细信息”按钮,进入“管理和监视工具的子组件”对话框中选择“网络监视工具”选项。 (3)单击“下一步”按钮,系统将自动的安装上“网络监视工具”(如图2)。

图2 自动的安装 二、网络监视器的介绍 网络监视器安装后,启动之,打开“Microsoft网络监视器”对话框(如图3)。 图3 网络监视器的主窗口 网络监视器主要由四个不同的部分组成: (1)图表区 图表区主要位于窗口的左下方,它用一组条形的图反映了网络的整体工作情况。

windows iis优化性能监视器参数详解

Memory: 内存使用情况可能是系统性能中最重要的因素。如果系统“页交换”频繁,说明内存不足。“页交换”是使用称为“页面”的单位,将固定大小的代码和数据块从RAM 移动到磁盘的过程,其目的是为了释放内存空间。尽管某些页交换使Windows 2000 能够使用比实际更多的内存,也是可以接受的,但频繁的页交换将降低系统性能。减少页交换将显著提高系统响应速度。要监视内存不足的状况,请从以下的对象计数器开始: Available Mbytes:可用物理内存数. 如果Available Mbytes的值很小(4 MB 或更小),则说明计算机上总的内存可能不足,或某程序没有释放内存。 page/sec: 表明由于硬件页面错误而从磁盘取出的页面数,或由于页面错误而写入磁盘以释放工作集 空间的页面数。一般如果pages/sec持续高于几百,那么您应该进一步研究页交换活动。有可能需要增加内存,以减少换页的需求(你可以把这个数字乘以4k就得到由此引起的硬盘数据流量)。Pages/sec 的值很大不一定表明内存有问题,而可能是运行使用内存映射文件的程序所致。 page read/sec:页的硬故障,page/sec的子集,为了解析对内存的引用,必须读取页文件的次数。阈值为>5. 越低越好。大数值表示磁盘读而不是缓存读。 由于过多的页交换要使用大量的硬盘空间,因此有可能将导致将页交换内存不足与导致页交换的磁盘瓶径混淆。因此,在研究内存不足不太明显的页交换的原因时,您必须跟踪如下的磁盘使用情况计数器和内存计数器: Physical Disk\ % Disk Time Physical Disk\ Avg.Disk Queue Length 例如,包括Page Reads/sec 和% Disk Time 及Avg.Disk Queue Length。如果页面读取操作速率很低,同时% Disk Time 和Avg.Disk Queue Length的值很高,则可能有磁盘瓶径。但是,如果队列长度增加的同时页面读取速率并未降低,则内存不足。 要确定过多的页交换对磁盘活动的影响,请将Physical Disk\ Avg.Disk sec/Transfer 和Memory\ Pages/sec 计数器的值增大数倍。如果这些计数器的计数结果超过了0.1,那么页交换将花费百分之十以上的磁盘访问时间。如果长时间发生这种情况,那么您可能需要更多的内存。 Page Faults/sec:每秒软性页面失效的数目(包括有些可以直接在内存中满足而有些需要从硬盘读取)较page/sec只表明数据不能在内存的指定工作集中立即使用。 Cache Bytes:文件系统缓存(File System Cache),默认情况下为50%的可用物理内存。如IIS5.0 运行内存不够时,它会自动整理缓存。需要关注该计数器的趋势变化 如果您怀疑有内存泄露,请监视Memory\ Available Bytes 和Memory\ Committed Bytes,以观察内存行为,并监视您认为可能在泄露内存的进程的Process\Private Bytes、Process\Working Set 和Process\Handle Count。如果您怀疑是内核模式进程导致了泄露,则

windows server 2003 性能监视器

windows性能监视器常用计数器 分类:基础代码2011-09-30 11:42 215人阅读评论(0) 收藏举报 最近研究性能测试工具中发现这些所谓的性能测试工具的数据、全部来至windows操作系统提供的数据、然后通过API提供给性能测试工具、性能测试工具在用一种比较直观的图形展示出来。也就是说不部分情况下如果把你没有弄明白性能监视器中数据得意义,那么性能测试工具的那些图表对你的意义也就没有多大的用处。下面我整理了一部分windows中性能监视器中比较常用的性能计数器。 这里整理的比较多的内容:处理器对象、系统对象、逻辑磁盘对象、物理磁盘对象、内存。这些性能计数器我们经常在使用的过程中都会用得到,所以这篇文章大部分内容是这些的。 ? 1. 处理器对象(Processor Object) 一条经验规则是不要使你所监控的每个处理器的C P U使用率高于9 0%。峰值超过9 0%是可以接受的,但平均使用率超过9 0%则是应该避免的。 ? 处理器时间百分比(%Processor Time)处理器执行一个非空闲线程的时间百分比。用%1 0 0减去处理器空闲的总时间得出这个值。这是整个系统的C P U使用的一个好的指示器。 ? 特权时间百分比(%Privileged Time) 处理器用于在特权模式下(即,执行操作系统功能和运行驱动器,如I / O )工作时间的百分比。这个时间包括C P U (或C P U )用于维护中断和延迟过程调用( D P C )的时间。 ? 用户时间百分比(%User Time)处理器用于在用户模式工作的时间百分比。这种类型的工作是由应用产生的。通常,希望极大化用户时间百分比的值,极小化特权时间百分比的值。 ? 中断时间百分比(%Interrupt Time) CPU忙于维护硬件中断的时间百分比。系统中的许多硬件部件,如鼠标、网络接口卡或磁盘控制器,都可以发出处理器中断。你可以将中断看作为Windows NT正常操作的一部分发生。 ? 中断数/秒(Interrupts/sec) 处理器每秒接收并处理的硬件中断的数量。它不包括系统D P C,系统D P C单独计数。 ? 2. 系统对象(System Object) 系统对象与它的相关计数器衡量处理器上运行的线程的总计数据。虽然使用这些计数器不能观察一个特定处理器的工作负载或一个特定线程的行为,但它们提供了有关整个系统性能有价值的内部信息。系统计数器如下所示:

Windows 性能监视器工具-perfmon

如果需要在一台计算机上监视多个Report Server 实例,可以同时或单独监视这些实例。选择要包括的实例是计数器添加过程的一部分。有关使用Windows 附带的性能工具的更多信息,请参见微软Windows 产品文档。 若要访问性能工具 ?从“开始”菜单上选择“运行”。 ?在“打开”文本框中输入“perfmon”,然后单击“确定”。 ?在性能监视器工具中,在左侧窗格里选择System Monitor 对象,然后右击“性能”图表。 ?选择“添加计数器”。 现在,可以开始选择这些对象和要监视的计数器了。 https://www.sodocs.net/doc/212806861.html, 应用程序性能计数器 有关https://www.sodocs.net/doc/212806861.html, 应用程序性能计数器的大部分信息最近已被合并到一个题为“改善.NET 应用程序的性能和伸缩性”的综合文档中。下表描述了一些可用于监视和优化https://www.sodocs.net/doc/212806861.html, 应用程序(包括Reporting Services)性能的重要计数器。 性能对象计数器实例描述 Processor(处理器) % Processor Time(处理器时间百分比) __Total “% Processor Time”监视运行Web 服务器的计算机的CPU 利用率。低CPU 利用率或者无法最大化CPU 利用率(无论客户端负载为多少)都表明Web 应用程序中存在对资源的争用或锁定。 Process(进程) % Processor Time(处理器时间百分比) aspnet_wp 或w3wp(具体情况视IIS 版本而定) 由https://www.sodocs.net/doc/212806861.html, 工作进程所使用的处理器时间所占的百分比。在将标准负载情况下的性能与先前捕获的基准进行对比时,如果此计数器的值出现下降,则说明降低了对处理器的需求,因此也提高了伸缩性。 Process(进程) Working Set(工作集) aspnet_wp 或w3wp(具体情况视IIS 版本而定) 由https://www.sodocs.net/doc/212806861.html, 主动使用的内存数量。虽然应用程序开发人员对应用程序使用的内存数量拥有最大的控制权,但系统管理员也可通过调整会话的超时期限来显著影响这一点。 Process(进程)

Windows7性能监视器详解

Windows7性能监视器详解 作者:千里2016-4-20 打开性能监视器 性能监视器的打开方法有两种。 点击“开始”-“控制面板”-“管理工具”-“性能监视器” 点击“开始”-在搜索框中输入“perfmon.msc”回车 使用方法 创建性能监视器 打开性能监视器后是这个样子的 首先我们先要创建一个根据我们需求定制的性能监视器,右键单击“性能监视器”-“新建”-“数据收集器集”

在“名称”框中输入自己创建的名称(随意),单击“下一步” 将数据保存到自己创建的路径下,单击“下一步”

单击“完成” 自定义监控指标 我们的性能监视器配置还没有完成,还需要继续进行配置,打开“数据收集器集”-“用户定义”里面就发现了我们所创建的监视器了,同时在“报告”-“用户定义”下同时会创建一个相对应的报告文件。

首先单击“perf”监视器,在右侧右键单击“系统监视器日志”选择属性。在这里面我们可以进行相应的计数器的添加,以及一些具体参数的设定。

这里我们主要看看计数器的添加,点击[添加],我们可以根据自己的需要来添加相应的计数器,选中我们所需的计数器在点击添加就可以了。 注:常见监控指标 CPU: Processor-%Processor Time CPU的使用率:一般这个指标建议维持在80%以下。 %User Time 用户进程占用的CPU的使用率。 System Processor Queue Length CPU的队列长度。长度一般维持在处理器个数的2倍以。存(Memory) Available MBytes 可用物理存大小:一般建议该值维持在物理存总数的5% 以上。 % Committed Bytes In Use 被使用的虚拟存大小。越小越好。 Pages/sec 页面交换数。该值越小越好。 磁盘IO (Physical Disk) %DISK TIME 磁盘使用率:这个值会超过100%。磁盘是有多个处理器 的,每个处理器的DISK time是单独统计,而这个指标 是将多个磁盘处理器的时间求和。

windows2003server性能监视器

为什么要监视服务器性能: 在企业环境中,服务器管理员必须确保服务器高效可靠运行,要达到这个目的,必须对服务器性能进行监视和优化。 通过监视系统性能:了解系统负荷以及这种负荷对系统资源的影响;观察性能或资源使用的变化趋势以便及时做出规划或者对系统进行升级;测试系统配置的修改或者性能参数的调整对系统性能的影响;诊断系统故障和确定需要优化的组件或者升级的步骤 通过监视和分析性能数据,我们还可以判断和排除性能瓶颈 通过实时和日志的方式来家服务器性能: 性能监视工具:两个性能监视工具,任务管理器和性能控制台。 前者提供正在系统上运行的应用程序和进程的实时信息以及CPU和内存的使用情况以及统计信息,使用任务管理器可以终止未响应的应用程序,也可以动态地查看计算机性能数据。 后者性能控制台是一个系统内置的MMC控制台:包括系统监视器和性能日志和警报两个管理单元。使用系统监视器可以曲线,曲方图或者报表的方式实时查看内存,硬盘,处理器和网络等各种对象的性能数据。使用性能日志和警报可以对计数器日志进行配置,记录性能数据,设置性能警报,通过设定性能警报,可以使系统在某一特定的计数器值低于或高于设置时及时通知管理员。 如果实时监视系统性能 任务管理器使用 管理工具/性能打开性能管理控制台:在系统监视器右侧下方列表中可以通过“对象”列看到系统默认为我们监视了CPU 内存和硬盘的性能参数。 通过工具栏如下图箭头所示两个按钮可以添加和删除我们要监视的对象:

首先选择要监视的计算机,在性能对象选择要监视的对象,性能对象可以是硬件对象,CPU,内存,硬盘,也可以是软件对象IP协议或者应用程序或者服务等,在下面的计数器参数列表中选择这个对象要监视性能参数或者计数器,然后在右边选择实例(某一个具体的对象)比如安装两个CPU,可以选择那个CPU,选择之后单击添加。下图三个按钮可以选择查看方式为图表,直方图或者是报告形式。

win7性能计数器日志

大家好,很高兴又和大家见面了。今天为大家带来点什么呢?呵呵,大家可能注意到标题了,没错就是我们会忽略掉的一个系统工具。为什么会给大家介绍这个工具呢,是因为我本身的一次经历让我注意到了这个工具的存在价值,前几天电脑经常会反应慢,很卡,但是自我感觉不是硬件的问题,而且运行的程序不应该太占资源,想来想去不知道所以然,就想到了想要看看是什么原因造成了这样的状态,用什么方法呢?突然灵光一闪想到了以前用过的一个工具-性能监视器,它的作用是什么呢?顾名思义就是帮助我盟监视电脑性能的,里面包含硬件,软件等在运行时的状态及资源使用情况,下面我就为大家详细介绍一下。 性能监视器的打开方法有两种。 https://www.sodocs.net/doc/212806861.html, 点击“开始”-“控制面板”-“管理工具”-“性能监视器” 点击“开始”-在搜索框中输入“perfmon.msc”回车 使用方法 打开性能监视器后是这个样子的 首先我们先要创建一个根据我们需求定制的性能监视器,右键单击“性能监视器”-“新建”-“数据收集器集”

在“名称”框中输入自己创建的名称(随意),单击“下一步” 将数据保存到自己创建的路径下,单击“下一步”

单击“完成” 这样可不算完哦,下面我们就要详细的配置我们的监视器了,我们所创建的监视器在哪了呢,我们打开“数据收集器集”-“用户定义”里面就发现了我们所创建的监视器了,同时在“报告”-“用户定义”下同时会创建一个相对应的报告文件。

首先单击“test”监视器,在右侧右键单击“系统监视器日志”选择属性。在这里面我们可以进行相应的计数器的添加,以及一些具体参数的设定。 这里我们主要看看计数器的添加,点击添加,我们可以根据自己的需要来添加相应的计数器,当然如果大家对各个计数器不太了解,不知道它们具体的功能,我能可以点住计数器,勾选左下角的显示描述,在描述中就能够看到相应的内容描述,然后选中我们所需的计数器在点击添加就可以了。

相关主题