|
|
本帖最后由 bcyj 于 2009-6-4 12:24 编辑
原理上你说的没错,但是结论并不是必然的。举个极端的例子吧:
前提:4个硬盘组RAID 0,单盘性能:4k 200 IOPS/128k 100 IOPS,分别按照4k stripe size和 128k stripe size组成RAID 0
8K IOPS理论性能:4k stri ...
harleylg 发表于 2009-6-4 08:23 ![]()
你以为每次访问文件都是从头访问到尾的(也就都是对齐的访问)?
你以为mft表里的内容也是全部对齐的?
你以为文件的附加权限控制也是对齐的?每个权限占一个簇?
你还是没有了解产生跨越的概率的问题,4k的stripe size,读写4k的数据,纯理论上,刚好位于一个簇里的机率是4k分之一.而按windows来说,实质上它都是按512(一个扇区)的大小来对齐读取的,那么刚好位于一个簇里的机率就是9分之一
4k stripe raid0: 200 × 4 / (4 * (1-0.11))=202 IOPS
128k stripe raid0:200 * 4 * ((256-16)/256)=744 IOPS
都说了很多次了,这个是一个理论概率问题,又拿什么8M的请求来说,如果一个请求大于stripe size的话,需要多盘响应的机率就是百分百了
就像大条带理论上的持续性能不如小条带的,但是由于卡上的预读缓存,实际上基本上没差别,而由于小条带占用卡的cpu比较高,有时候大条带持续更快.
最后,就是大的条带可以减低卡的运算量,让卡的运算能力不成为瓶颈.而预读缓存可以提高持续的性能,所以就在缓存大小和预读之间取个平衡,我第一个回帖那个公式就是根据实际测试结果来推导出来的比较合适日常家用的公式 |
|