|
转个硬盘的综述帖子-浅析PC硬盘(硬盘性能上篇)
(原文为完整的一篇,因pci 10000字节的限制,分为三篇 —— 转载者)
欢迎转载,但请保留版权信息:RonLiang@newsmth。
不足之处欢迎讨论。顺便给大家拜个早年。:)
接下来说一说目前的硬盘的性能以及评测手段。顺便讨论一下现在各个品牌的产品。
在这一部分,我首先介绍一下一些硬盘的评测网站,本文的一些数据和观点基本上从这些网站中引出的。
首先是storagereview,网址是http://www.storagereview.com/ 差不多是所有网站里面最专业的。
其次是tomshardware、xbitlabs、以及anandtech。
然后是国内的存储时代stor-age。
强烈推荐storagereview上的Reference Guide,
http://www.storagereview.com/guide/index.html
内容非常的翔实全面,基本上应有尽有。
首先,影响硬盘性能的因素非常得多。例如硬盘的性能不但取决于硬盘本身,还与硬盘控制器密切相关。不同的硬盘控制器下的结果是有一定的差异的。所以我们比较硬盘的速度,是必须在同一平台同一设置才有严格的意义。并且还要标明文件系统的格式等相关信息。
硬盘最低层的指标有两类,一类是传输率,一类是寻道。
先说传输率。传输率有三种,一种是internal media transfer rate,这是指磁头从盘片上读取单个磁道时候的绝对数据传输率,单位是Mb/s,受磁道位置影响。日立习惯于标这个数据。列一下storagereview上的公式:
User Data Transfer Rate = (Spindle Speed / 60 * Sectors Per Track * 512 * 8) / 1,000,000
由于这个数据很不直接,也没什么性能上的意义,所以一般很少提到这个。
另一种是内部持续传输率Internal Sustained Transfer Rate。storagereview上的公式:
STR = (Number of surfaces * Sectors per track * 512) / ( 2 * Number of surfaces * Latency + (Number of surfaces - 1) * Head Switch Time + Cylinder Switch Time)
这个数据就是大多数人最常用软件测试、比较的项目。
再一个是外部的接口速率。是指理论上的接口带宽(比如SATA300/SATA150)。这个的意义对于硬盘来说并不直接,而且对同一代的硬盘来说没有区分。所以一般也不比较这个。有一个类似的指标,是实测的接口速率,缓存到接口之间的数据传输速度。这个跟控制芯片的设计和固件设置是密切相关的。这个指标各个厂家甚至产品系列之间都有差别,在部分情况下(比如反复调用某个小文件的病毒扫描应用)还是有很明显的性能影响。
这里重点讨论一下内部传输率指标,因为这个指标几乎成了衡量硬盘性能的“唯一标准”了。测试这个指标的软件有很多。最专业的是H2benchw,另外ATTO、HD Tach、Winbench99和HD tune等软件都能测持续传输率。这个指标反映了硬盘的的磁道顺序读取的性能(注意,只是读取),同转速硬盘的比较基本上是单碟容量大的有很大的优势。如果买硬盘是主要用来做大文件的存储和转换,保证不产生多少磁盘碎片,那这个性能指标是最为关键的。但在服务器应用以及个人日常应用的时候,持续传输率这个指标的作用极为有限。
另一类的硬盘底层指标是寻道性能。我们实际上用软件测试的是访问时间(Access time)。根据storagereview的公式,
Access Time = Command Overhead Time + Seek Time + Settle Time + Latency
其中主要的是寻道时间(Seek Time),数值上是磁头在任意两个磁道之间寻址的时间的平均值(最小是相邻磁道寻址,最坏是最外圈和最内圈之间的寻址),这个数值厂商一般是给出的,反映的是盘片的大小和磁头寻道运行的速度。但是对用户来说是测不到的,用户只能看到比寻道时间大一些的访问时间。Command Overhead Time是指令发出到硬盘部件实际开始运作的时间;Settle Time是磁头移到相应磁道柱面之后,到位置基本稳定的时间;Latency是指盘片上相应的数据(sector)转到磁头正下方,磁头需要的等待时间,对7200转硬盘来说,平均4.2ms。在访问时间中,主要的是寻道时间和Latency(顺便提一下,国内现在大部分人所说的“寻道时间”其实是访问时间,而不是厂商标注的“寻道时间”)。这个访问时间也是分读操作和写操作两个数据(硬盘在读和写中所执行的具体动作还是有差异的),大部分硬盘二者的差异不大,但也有部分型号的读操作访问时间和写操作访问时间差异相当大(例如西部数据的GreenPower 1T,读操作的访问时间15ms,写操作19.5ms。--storagereview的数据)。可惜大部分评测都只给出了一个数据,一般大家测试自己的硬盘的随机访问时间的时候用的软件也之给出一个访问时间的数据。
理论上,寻道速度越快的硬盘,处理大量的细小文件的速度就越快。但在性能上,高转速的硬盘会对低转速的硬盘有这方面的性能优势,但同转速的硬盘之间的访问时间都基本相似。在同转速硬盘之间,寻道速度一般不是引起性能差异的主要因素。
传输率和寻道性能是硬盘最底层的性能指标。硬盘还有一个比较底层的性能指标是硬盘的随机访问性能。一系列文件大小不同(但都不大),访问的磁道位置不同,出现的次序不同的一组随机数据的压力下硬盘的性能,一般用每秒完成的IO个数来衡量(也有用每秒钟完成的数据传输量的)。IOmeter这个软件就是衡量这个性能的好工具。
IOmeter最初是由Intel开发,在Intel放弃更新之后,由开源组织来作后续的开发。
网址:
http://sourceforge.net/projects/iometer/
IOMeter可以自己定制测试的模式,常见的IOmeter的测试模式有四种:文件服务器File Server;网页服务器Web server;工作站Workstation;数据库Database。分别以四种不同的数据、读写组合来测量不同数据队列长度下硬盘每秒钟处理IO的个数。这个数据越大越好。
四种模式具体的差异可以看这里:
http://www.storagereview.com/art ... 00313OSandBM_5.html
总的来说,文件服务器模式和网页服务器模式的差异在于文件服务器的测试有读操作也有写操作;而网页服务器的模式是纯读的。工作站和数据库模式下,随机的模式比服务器模式单一,都是8K以上大小的文件读写,以大小为8K的文件为主(80%),而服务器模式是有8K以下大小的文件的,而且4K占总量的最多比例。工作站模式和数据库模式下均有读写操作,但数据库模式下写操作的比例相比稍大一点。因此,文件服务器模式和网页服务器模式下结构的差异,以及工作站模式和数据库模式在数据结果上的差异,都是读性能和写性能之间的强弱对比。
因此就这四种模式来说,服务器模式相比工作站模式和数据库模式更能体现硬盘的随机读写性能(4K为主的数据比8K为主的数据在当前更有实际意义,而且服务器模式下的数据随机性更强),而网页服务器的纯读操作一般也不认为符合当前网页服务器的实际情形。所以四种模式里面,最有代表意义的,还是File server这个模式。
说到这里,还有一件事。国内的存储时代在测试7200.11和ES2的时候,分别比较了IOMeter下纯读取随机访问性能和Web Server性能,然后在后面特意指出,这两个测试的结果几乎一致,不得不令人汗一下。
IOmeter这个测试,由于数据的高度随机性,所以体现了硬盘的随机访问的IO性能。同时因为测试硬盘在不同的数据队列长度下的IO性能,也是测试NCQ/TCQ这类高级功能的良好测试。对于大量数据的服务器场合,这个测试还是有很好的参考意义。
以上的几种测试模式都是为考察硬盘的特定性能而产生的测试。目的单一,而且比较底层。距离大多数的实际应用场合都比较远。毕竟买硬盘来 整天只做大文件操作,或者整天整个硬盘拿来做负担较重的服务器,而且访问纯随机的情形是少数。而一般的操作,比如病毒扫描,比如开机关机,比如游戏载入,比如处理大量压缩文件等等的实际操作,而这些操作,都是有相对固定的模式的。比如队列长度一般不长,以1为主;访问的磁道区域相对集中;各种大小数据的比例相对固定等等。这个时候,硬盘的控制器和固件的高级策略就开始表现出来强大的作用了。往往会呈现出一个不同于底层性能测试的结果。
这类测试硬盘在实际日常操作中的性能的测试,有点像显卡中3Dmark中的几个场景测试,是得出3Dmark成绩的部分,或者类似用实际游戏来看显卡的帧数。而之前的底层性能测试,有点类似3Dmark中后面那些填充率之类的分项测试。在硬盘的测试里面,这类模拟日常操作的测试基本不受大家重视,大家拿来比较硬盘性能的反而是持续传输率这个单项测试,而且一般采用的软件也很不专业。某种程度上也是怪好笑的。
这类模拟硬盘实际操作性能的测试一共有两类,一类是真正的程序在做测试。比如真的用WinRAR来处理一定量的文件;比如一些知名游戏的载入时间等等。但这样的测试不好量化,不好对比;过程中会涉及到一些别的因素,例如CPU、内存等等;而且每次做这种测试,每次的具体过程并不会是严格一致的,所以可重复性一般。优点在于,这样的测试种类可以很灵活。Anandtech的测试中经常包含这一类测试。
另一种是专门的软件来模拟这类操作。原理上是由一些专门的软件,来记录一些日常硬盘压力大的应用的实际操作对硬盘的动作,例如数据的长度和顺序、各数据寻道的距离、产生的数据队列长度等等。然后用特定的程序来专门复现这些操作。然后用每秒钟完成的IO数字来做成绩。这种测试的基本上可以克服上一类办法的缺点,容易量化,几乎不受CPU等性能的影响,重复性好,而且可以把类似的操作组合起来作为一个综合性更强的测试。
这类模拟真实操作的测试,代表性较强的一个是PCMark系列的硬盘测试;一个是StorageReview自己的DriveMark系列。
PCmark现在已经历经PCmark04; PCmark05和着重测试Vista下性能的PCmark Vantage三个版本,FutureMark网站上的各软件的白皮书中有一些各项测试的原理和内容的介绍;而DriverMark的结果只能在StorgeReview网站上查阅,软件并不提供下载。详细测试原理在该网站上有说明。网址:http://www.storagereview.com/Testbed4.sr?page=0%2C2
不同的测试项目的读取所占比例、文件大小分布等等是有不小差异的,所倚重的硬盘的特性也是不同的,其结果也是要有差异的。从PCmark所细分的测试项目就可以看出硬盘在不同应用中性能评价的复杂度,较显卡为高(0和1的世界跟机械组件打交道就是麻烦,啥时候大家彻底不用带机械组件的硬盘就不用再这么麻烦了)。
而影响这些实际应用的性能的硬盘的指标是哪些呢?不是持续传输率,因为这类测试的性能排名和持续传输率的排名基本不一样;是访问时间?也不是。各个转速相同的硬盘之间的访问时间往往差别并不大,而且也不是访问时间最短的这类测试的性能就越好。那是IOMeter的结果?也不是。和持续传输率指标一样的不怎么相关。在这里,硬盘控制器和硬盘控制器固件的作用被表露得淋漓尽致。可以说同代硬盘在实际应用程序中的性能高低的比拼都在这里了(这样基本上也就等同于说,从指标上是看不出日常应用中硬盘性能的好坏的)。这里的设置不单是些高级的策略,而且还会影响到底层的传输率、访问时间的特性,可以说影响到了整个硬盘的方方面面。
对一些特定情形做的在控制器、在固件上的优化,例如对日常应用的主流,localized data access的优化,也是硬盘厂商大量花费精力的地方之一。硬件基本一致的希捷7200.11和ES2,因为固件的不同,导致了ES2的性能的大幅领先;西数的7500AYYS和7500AAKS也有类似的现象(而日立的企业版和普通桌面版在这方面的差别相对不明显,期待三星的企业级硬盘的表现的测试了)。
介绍完这类模拟硬盘实际操作的性能测试之后,大体各类测试的意义就差不多都说明了。 |
|