本帖最后由 jeffxl 于 2012-3-28 15:38 编辑
文章为JEFFXL原创内容,转载请注明出处,欢迎转载
很多人都有一个概念,认为SSD的4K随机性能等同于同尺寸小文件操作性能。首先这里有一个误区,什么是随机访问?随机访问是不同的读写请求造成的访问地址碎片化、乱序化的访问。
连续的小文件访问不一定是随机的,这点从光驱复制大量小文件(比如光盘软件安装)对比从光盘直接运行只读程序(比如各种PE或其他只读方式的应用)差别是巨大的(寻道音和速度几乎不可忍受),连续的小文件复制可以是持续访问,连续寻道,并不需要额外的光头/磁头移动,也不需要等待潜伏期(如果需要,请先了解相关机械寻道原理)。复制连续的小文件产生的压力远小于运行程序时产生的随机寻址压力。
同理随机访问并不等于小文件访问,譬如魔兽世界在资源载入过程和无缝地图产生的即时资源载入过程,这些访问往往都是访问的魔兽世界文件夹内那些容量巨大的材质库,单个文件都是N个G的容量。那么这么大的文件访问操作难道是持续访问?因为材质是分布在这类大文件的不同的位置,而用户在游戏当中的行为完全不可预知,即时读取需要的材质几乎是随机的,就在那些大型资源文件的某个部分当中,访问自然就是随机的了。其实几乎没有什么应用的运行过程产生的IO是持续访问,不管资源文件的大小,是否碎片化,访问一定是随机的。
那么复制连续的大文件就是持续咯?也不全对,机械盘/光盘是面型存储的,寻道访问数据时是线性的,寻址是径向移动磁头摇臂并配合盘片旋转(这叫潜伏期等待)来寻找到他需要的数据。那么如果这个大文件的存储分布是碎片化的(物理分布碎片化,非寻址逻辑碎片化),那么在复制这些文件时就会产生额外的寻道和潜伏期等待(看文件碎片数量的大小,需要的响应时间不同)时间,那么这样的操作对于物理上的寻址访问来说也是接近随机访问的。大家知道机械盘非常不擅长这样的操作,所以这里就产生了随机性能问题。可以看出就算是大型文件的复制粘贴也不一定是持续访问。页面文件(虚拟内存实体文件)也是同理,可能8G的页面文件那么大,但页面文件的访问几乎是纯4K随机访问。
复制粘贴文件,无论大小,不一定是随机也不一定是持续访问,要看文件分布是否是连续的。跑应用时访问大型文件的IO操作不一定是持续访问,要看访问需求的分布。家庭典型应用产生的IO几乎全部为随机访问
综上所述,随机性能并不等于小文件操作能力,有时候小文件性能大于同尺寸随机能力,有时候小文件性能低于随机能力。而往往在大家的应用环境中,小文件操作性能必定低于随机能力,下面将通过不同架构的操作系统复制大量小文件来测试操作系统对文件操作的影响,谈谈小文件性能低下是由什么产生的?(这里谈的连续分布的小文件)
各种产品的随机性能,大家通过浏览本版都有一些认识了,但大家知道不同的操作系统对小文件操作有什么区别吗?下面就从实际的测试来验证这些到底有什么区别(下篇发布,敬请期待) |
|