admin管理员组

文章数量:1536735

2024年4月23日发(作者:)

segment size(strip size)对磁盘阵列性能的影响

2010-07-12 11:15:17| 分类: DiskArray|字号 订阅

附:IBM DS4300串口的默认密码:

infiniti

下面针对某些可以对segment size大小改变的磁盘阵列的控制器进行说明,请各位指正。

Sigment Size(strip size):控制器写到逻辑卷中一个物理磁盘的大小。

Sigment Size(strip size)能够影响磁盘阵列的在IOPS和throughput上面的性能。小的sigment size允许

多个硬盘来响应多个需求增加了IO要求(IOPS);大的sigment size通过多个磁盘来共同分担一个IO需

求增加了数据传输效率(throughput)。

segment size=I/O request size的时候,每个IO需求使用最少的磁盘;更高的IOPS;用于处理随机的I

O处理(如数据库的应用等)

sigment size

性的写操作(如多媒体等)

在磁盘阵列上面进行性能的调整举例说明:(RAID Group已经做好,并用于业务开展):

如果在一个多用户,多应用的环境下,一次IO需求比sigment size大很多,增加sigment size来最小化

完成一次IO需求所使用的磁盘,那么在RAID Group中其他剩余的磁盘可以其他的IO需求,这样在性能

上可能会有提高。尽可能做到一个磁盘的segment size能满足或者接近一次IO需求。

如果在一个单用户的环境下,那么一次IO需求的大小在等于或者接近所有磁盘的segment size的时候,

那么性能可能是比较好的。也就是所有的磁盘只需要一次写的操作就能完成相应的IO需求。但是在这情情

况下,磁盘只能为一次IO需求进行服务。

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

一般RAID控制器strip单元容量为8KB(缺省)、16KB、32KB和64KB

应该接近系统I/O请求的容量

基于交易的服务器一般使用较小的数据块

文件和打印服务器一般使用较大的数据块

总的来说,strip大小至少应与服务器应用生成的平均磁盘I/O请求的大小相当。最优的状态是每一I/O请

求只执行一次I/O操作。

推荐容量:

服务器环境 strip容量 预读

群件(Lotus Domino,Exchange 等) 16KB On

数据库(Oracle,DB2,SQL等) 16KB Off

文件服务器(Windows NT/2000) 16KB On

文件服务器(Novell Netware,Windows 2000) 64KB On

Web 服务器 8KB Off

视频文件服务器 64KB on

出自:

/35489/viewspace-605137

硬盘性能参数与高效IO(参见:

硬盘

驱动器-

维基

百科):

转速:当前的服务器硬盘一般都是15000转/分钟

平均延时:平均延时就是磁道上的那段数据转到磁头下面需要的时间,这直接由转速决定。比如15000转

/分钟的硬盘,也就是每秒250转,每转一圈需要4毫秒,因此平均延时就是转半圈的时间,等于2毫秒。

平均寻道时间:服务器硬盘一般平均寻道时间是4毫秒。

持续传输速率:服务器硬盘一般在80M每秒,也就是80K每毫秒(为了方便计算,单位都用毫秒)。

因此读取一次数据需要的时间等于:定位时间(平均延时2ms+寻道4ms)+数据传送时间(要读的数据

/80k*ms)

IO大小

8K

128K

512K

1M

2M

定位时间(毫秒)

6

6

6

6

6

传送时间(毫秒)

数据传输效率

(传送时间/总时间)

1.6%

21%

52%

68%

81%

0.1

1.6

6.4

12.8

25.6

准则:数据传送时间> 5*定位时间;换句话说就是:数据传输效率大于80%

,否则

大部分时间都用在“寻道定位”上显然是不合算的。

(我们回想一下十年前的硬盘技术:容量大约是

1.2GB

;转速大约在

5400

/

分钟;持续传输速率大约在

10M

每秒;平均寻道时间大约在

15

毫秒。)

硬盘的技术进步带给持续传输速率好处要远大于平均寻道时间的好处,因此差不多越高级的硬盘“IO大

小”要设定的越大才好。

RAID 0,或者RAID 10的stripe size计算公式:

RAID的技术介绍:

stripe width(条带宽度):RAID中的磁盘数,就是组成这个stripe的磁盘数。如,4个磁盘组成的RAID 0,

条带宽度就是4。

stripe depth(条带深度):单块磁盘上条带的大小,有时也称为stripe unit。

stripe size(条带大小):stripe depth*stripe width。

还有一种说法:有时也称为block size

块大小

, chunk size

簇大小

, stripe length

条带长度,

granularity

粒度,

单块磁盘上的每次IO的最小单位。

RAID条带大小的另一个计算公式为:(参见:

Oracle and RAID Usage

条带大小 = (0.25*平均定位时间*数据传输速率*(并发用户数-1)*1.024)+0.5K

平均定位时间

=

(平均延时

+

平均寻道时间)

(milliseconds)

;数据传输速率单位为:

Megabyte/sec

1.024 = 1s/1000ms*1024K/1M (

单位转换因子

)

举例来说,磁盘寻道时间是6ms,传输速率80MB,且有20个并发用户的条带大小应该为:

(0.25*6*80*19*1.024)+0.5=2335.22K(差不多2M)

出自:/104736/253266

DS4000(FAStT系列) Storage Manager中cache参数设置详解

产品: FAStT、DS4000

主机平台: p/i/z/x-Series,SUN, HP,...

操作系统:AIX,Sun Solaris,HP-UX, Linux

使用FAStT Storage Manager工具,可以设置不同的cache参数。这些参数的设置直接影

响到FASTT存储服务器的性能和数据可用性,下面对这些参数做以解释。

Cache memory是控制器上用于临时保留数据的易失性存储器(RAM),比磁盘访问速度

要快。Cache memory提供给读写操作共用。有效地使用RAID控制器的Cache memory,

能使FAStT存储服务器发挥更好的性能。

使用FAStT Storage Manager工具,可以设置不同的cache参数,包括:

Read caching

Cache block size

Cache read-ahead multiplier

Write caching or write-through mode

Enable or disable write cache mirroring

Start and stop cache flushing levels

Unwritten cache age parameter

下图是用Storage Manager创建逻辑驱动器时的缺省设置,可以对其进行调整。

这些参数的设置直接影响到FASTT存储服务器的性能和数据可用性。众所周知,性能和可

用性通常是一对矛盾。如果你要获得最好的性能,更多的时候,你必须牺牲系统可用性;反

之亦然。默认情况下,读缓存和写缓存用于所有的逻辑驱动器;对于所有的写数据,两个控

制器之间的缓存互为镜像。写缓存只在控制器电池充满电时可用。预读方式通常不用于逻辑

驱动器。

Read caching(读缓存)

将读缓存使能不会造成数据丢失风险。很少情况下,需要关闭读缓存为其它逻辑驱动器提供

更多的缓存。

Read-ahead multiplier(预读乘数)

该参数会影响读性能,错误的设置会导致极大的负面影响。它控制在一个读请求之后,有多

少连续数据块被保存到缓存里。

显然,对于随机I/O负荷,这个值应该为零。否则,每一个读请求将不必要地预取额外的数

据块,而这些数据块又很少用,所以会影响性能。对于连续I/O的工作负荷,设置为1到4

是一个合适的值,这主要决定于具体环境。当使用该设置时,一个读请求引发预取多个连续

的数据块到缓存,从而加速并发访问,使得在磁盘和缓存之间,使用更少的I/O来完成同样

数据量传输,在连续I/O的工作负荷情况下优化了性能。如果该值设置过高,缓存被从不需

要的预读数据所添满,将会导致总体性能下降。使用performance monitor观察缓存命中率,

获得一个合适的值。

Write caching(写缓存)

写缓存使存储系统先将数据写入缓存,而不是直接写入磁盘。这会明显的改善性能,尤其是

对于随机写的数据库应用。对于连续写的环境,性能会随写数据的大小不同而变化。如果逻

辑驱动器只用于读访问,关闭该逻辑驱动器的写缓存会提高整体性能。

Write cache mirroring(写缓存镜像)

FAStT write cache mirroring 能保证一块RAID卡失效后的cache数据完整性。这使数据有

更高可用性,但是降低了性能。数据在控制器之间跨过磁盘端的光纤环路形成镜像,与正常

的数据传输发生竞争。

建议使用该功能,以保证一块RAID卡失效后的cache数据完整性。

缺省情况下,写缓存对另一个控制器写缓存数据进行镜像,即便是逻辑驱动器移动到另外一

个控制器。否则,如果逻辑驱动器控制权切换到另一个控制器并且缓存里还有没写入的数据,

逻辑驱动器的数据就会丢失。

如果关闭写缓存镜像,在控制器失效时有可能丢失数据,并且可能导致fabric中的路径失效。

FAStT控制器缓存有电池保护,保证掉电时不会丢失数据。如果电池没有充足电,比如刚

刚开机时,控制器会自动关闭写缓存。如果使能写缓存,即便没有电池保护,写缓存也被启

用,会有数据丢失的风险。

Write caching 或 write-through

write-through意思是写操作根本不使用缓存。数据总是直接写入磁盘。关闭写缓存,可释

放缓存用于读操作。(缓存被读写操作共用)

Write caching可以提高写操作的性能。数据不是直接被写入磁盘;而是写入缓存。从应用

程序的角度看,比等待完成磁盘写入操作要快的多。因此,可以提高写性能。由控制器将缓

存内未写入磁盘的数据写入磁盘。表面上看,Write cache方式比write-through方式的读、

写性能都要好,但是也要看磁盘访问方式和磁盘负荷了。

write-back(write cache)方式通常在磁盘负荷较轻时速度更快。负荷重时,每当数据被写

入缓存后,就要马上再写入磁盘以释放缓存来保存将要写入的新数据,这时如果数据直接写

入磁盘,控制器会以更快的速度运行。因此,负荷重时,将数据先写入缓存反而会降低吞吐

量。

Starting and stopping cache flushing levels

这两个设置影响控制器如何处理未写入磁盘的缓存内数据,并且只在write-back cache方式

下生效。缓存内数据写入磁盘称为flushing.你可以配置Starting and stopping cache flushing

levels值,这个值表示占用整个缓存大小的百分比。当缓存内未写入磁盘的数据达到starting

flushing value时,控制器开始flushing(由缓存写入磁盘)。当缓存内未写入磁盘数据量

低于stop flush value时,flushing过程停止。控制器总是先flush旧的缓存数据。缓存内未

写入数据停留超过20秒钟后被自动flushing.

典型的start flushing level是80%。通常情况下,stop flushing level也设置为80%。也就

是说,控制器不允许超过80%的缓存用于write-back cache,但还是尽可能保持这一比例。

如果你使用此设置,可以在缓存内存更多的未写入数据。这有利于提高写操作的性能,但是

要牺牲数据保护。如果要得到数据保护,你可以使用较低的start and stop values。通过对

这两个参数的设置,你可以调整缓存的读、写性能。经测试表明,使用接近的start and stop

flushing levels时性能较好。如果stop level value远远低于start value,在flushing时会导

致磁盘拥塞。

Cache block size

这个值指缓存分配单元大小,可以是4K或16K。选择合适的值,可以明显的改善缓存使用

性能。

如果应用程序更多时候访问小于8K的数据,而将cache block size设置为16K,每次访问

仅使用一部分cache block。在16K的cache block里总是存储8K或更小的数据,意味着

只有50%的缓存容量被有效使用,使性能下降。对于随机I/O和小数据块的传送,4K比较

合适。另一方面,如果是连续I/O 并使用大的segment size,最好选择16K。大的cache block

size意味着cache block数量少并可缩短缓存消耗延时。另外,对于同样大小的数据,cache

block size大一些,需要的缓存数据传送量更小。

一般来说,在实施DS4000系列存储解决方案前,建议用一周的时间做性能测试和监控并

调整相关的性能参数

本文标签: 缓存数据磁盘写入性能