查看文章 |
第五篇:<随机读取性能分析> 在第三篇的时候,我讲到了一个观点,就是在应用中多数的情况都是有部分数据是随机读取的,部分数据是连续读取的,我还讲到,少量的随机读取的比例就会导致硬盘的性能大幅度的降低,现在我们来看看随机数据的比例对硬盘的确切影响. 我们使用IOMETER来进行这项测试.IOMETER是专业的磁盘测试工具,因为可以灵活的设定测试的详细条件,因此在很多专业评测中采用.大家有兴趣的话也可以研究研究. 先看看sata硬盘的测试情况.测试对象是一个西数的80G SATA硬盘.
(图5-1:IO Meter测试西数80G硬盘读取,0%随机) 第一图是全顺序读取的结果,这个硬盘连续读取的能力为55MB/S.IOps是877.测试区块仍是64K.
(图5-2:IO Meter测试西数80G硬盘读取,5%随机) 仅仅是加入了5%的随机数据,性能已经衰减到20MB/S,iops降低到474 后面的测试图我就不一一张贴了,整理成下图
接下来看看SAS 硬盘的情况 全顺序读取:
(图7:IOmeter测试希捷15000转sas硬盘顺序读取) 25%的随机数据读取:
(图7:IOmeter测试希捷15000转sas硬盘25%随机读取)
50%的随机数据读取:
100%的随机数据读取:
整理成图表:
综上,只要有少量的随机数据,硬盘的性能就会急剧的下降,sata和sas硬盘都不例外.
在来看看对固态硬盘来说,随机数据的影响.
讲完了硬盘,下一节,我们来看看虚拟盘的性能. (未完待续) 第六篇:<虚拟盘的性能分析> 虚拟盘: 虚拟盘是一种虚拟的网络存储空间,它是通过网络来管理和使用的远程硬盘空间,可用于传输、存储、下载和备份计算机数据文件,聊天软件绑定的网络硬盘与传统的存储方式相比较,具有管理和使用方便的特点。 虚拟盘工作过程: 客户机发出读取需求à指令通过网络传输到服务器à服务器去读取数据à通过网络将数据发送给客户机,整个环节中,最有可能造成延迟的部分就是后2个环节. 服务器读取数据的环节,一般是服务器先在缓存中寻找,如果缓存中没有,则到相应的硬盘中去读取.缓存命中的数据,其延迟是微乎其微的,所以主要延迟还是硬盘的延迟. 通过网络将数据发送给客户机这个环节,还要经历软件处理à网卡à网线à交换机à网线à客户机网卡à客户机,这么多的过程中,虚拟盘软件的传输协议,网卡的性能,交换机的性能,网线的性能都会影响到最终的虚拟盘性能. 总结起来,影响虚拟盘性能的主要因素就是:硬盘性能,软件性能,网络性能.下面逐个来分析一下. 首先来说说网络,典型的千兆网络,使用超5类网线传输,经过我们测试,其实延迟是非常之低的,看看这个测试图:
(图8:交换机性能测试) 这个测试表明,在64字节这样的极限条件下,2个交换机的通过率都超过99%以上,请注意测试单位是64字节,而不是64kb,普通硬盘如果用512字节来测试的话,连续数据也只有3-4MB/S,随机数据就只有几十KB/S了.交换机上单个包的延迟仅为4微秒,比硬盘的15毫秒的寻道时间少了3000倍.尽管网吧里的状况不可能象实验室中的测试条件那么好,但是实际上,网络上真正的延迟还是远比硬盘的延迟要低的多的多! 我们再来看看虚拟盘软件 在客户机用HDTUNE测试网维大师5.0版本虚拟盘的速度.我们将数据全部缓存在内存当中,以屏蔽硬盘对虚拟盘速度的影响,按64K的条件来测试,结果如下:
(图9:虚拟盘在缓存命中情况下随机读速度(客户机测试)) 测试方法是随机读取,在64K的条件下,速度约55MB/S左右,很好理解,服务器每次按64KB大小进行发包,1秒钟要达到55MB的流量,需要发880个包(普通硬盘每秒只能处理60个64K的数据),因而我们可以计算出虚拟盘软件+网络最终造成的延迟:64KB/55MB*1024=每个64K包的延迟=1.1毫秒 由此可见,软件性能和网络性能导致的延迟相加不过是1.1毫秒而已,远比普通硬盘的10毫秒-20毫秒的延迟小的多.所以:真正要提高虚拟盘的性能,关键还是在于硬盘,硬盘才是整个环节中的最大瓶颈. 我们加上硬盘的影响,做个直接的对比测试吧:
蓝色的是完全没有内存缓存的情况,所有的数据都是直接从硬盘中读取.在同样的测试条件下,同样的虚拟盘,缓存命中和缓存未命中带来的差异是惊人的.除了固态硬盘,其他2个硬盘的测试结果都非常的糟糕.希捷7200.11虚拟盘速度只有缓存命中情况下的1/10,超过90%的时间都损耗在硬盘的寻道时间上了.
分析到这里,要获得好的虚拟盘性能,对应的方法就很简单了: 1、尽可能的减少硬盘的读取,用内存对常用数据进行缓存. 2、尽可能提高服务器硬盘的性能,比如使用SSD硬盘 3、使用好的虚拟盘软件 4、网络性能不能太差 OK.下一节我们开始讲该怎么做. (未完待续) |



(图10:虚拟盘在有缓存和无缓存情况下随机读速度(客户机测试))
