办公商用PC: i5-4670, 8G DDR3, 500G 64M 7200转HD(最讨厌这种垃圾硬盘),卡出翔。
网管不给加SSD,忍无可忍,自立更生。
众所周知,这种配置的瓶颈在于HD,不过HD自身的问题又集中在4K读写上。计算机的外存储寻址最小单位是4KB,小于4KB的文件也占用4KB,一些变态软件由大量的数KB文件组成,比如说QQ, 旺旺,还有IE缓存,系统TMP文件等等。
实际上,像POWERPCB这种单线程软件是由少数大文件组成,SSD的增速作用并不是很明显,持续读500MB/S的数据,CPU根本忙不过来。SATA3的HD其实刚好,卡的实际上是QQ,旺旺,浏览器。。。
HD的最大寻址时间是6mS,大多数U盘只有0.5mS, 也就是说,在读取大量的小文件时,U盘的表现会比HD好得多。要是大文件是从HD读,小文件从U盘读就好了。
通过了解,windows的readyboost可将U盘作为HD的加速器,启用readyboost后,一些需要频繁读取的小的文件将被系统丢进U盘,并生成一个list,以后需要再读取这些小文件时,将定向到U盘,从而提高小文件的访问速度。这玩意儿实际上在U盘上建一个名叫readyboost.sfcache的文件,该文件的作用实际上是占坑,锁定数据存放位置避免被FAT挪用。系统将Prefetch预读文件封装到放到readyboost.sfcache文件去,相当于是绕过了FAT作直接寻址了,并不改变它的大小日期等属性。readyboost.sfcache文件在系统盘有一个镜像,当U盘被移除时,系统会自动转向镜像文件存取,不过4K读写速度会变成HD级别,一切回复过去,并不会什么不良反应。微软在最初推出readyboost时承诺,用于readyboost用途的U盘寿命在10年以上。做没做磨损平衡不清楚,不过这个应用从工作原理上来看,应该只是一个只供读的buffer, 而非写入的buffer. 再加上早期的U盘最差也是MLC,写入寿命在万次以上,作为只读的数据块来说,基本上对寿命是没有多大影响的。
手头有几个U盘,近年购买的USB3.0的32G,64G的TOSHIBA U盘居然都是TLC颗粒,写寿命只有500次,还是有点不放心用上去。倒是有一个用了10余年的4G的USB2.0 U盘居然是SLC,插上去启用readyboost之后,U盘灯闪了差不多十分钟,一阵狂写。停下来后测试4K读盘速率从HD模式的0.6M/S一下子窜到HD+U盘的3M/S,写盘0.8M/S无变化(HD的4K随机写稍好于随机读,在于大容量缓存的协助,在写盘时系统只要将数据送入硬盘的buffer就算完事了,不过DRAM有一个刷新周期,记得最长是64mS,如果不打算浪费资源去刷新的话,就必须尽量提前将Buffer里的数据真正的写入指定扇区,写完后是否还有个回信就不清楚了,没作过多的学习。暗自高兴了几分钟。数据看上去倒是不错,不过两天的使用下来,似乎没有什么鸟用。
接下来,用primoramdisk分2G做ramdisk,关机前作镜像备份,开机时重新导入。加速效果非常好,不过ramdisk最怕停电,万一遇上停电就惨了,还是算了。而且占用了2G的内存,再开个虚拟机就很吃紧了,此方法亦作废。
最后锁定primocache,将上面那块4G的SLC盘格式化为二进制存储格式,将U盘变成一个直接寻址的存储器,绕过文件系统成为系统内存与HD之间的二级缓存。不过我只启用了读缓冲,半闭了写缓冲。也就是说只有读盘的数据才会进入U盘,操作系统需要写入HD的数据,是不会写U盘的,尽量避免对U盘的磨损。
成绩如何?请看
看一下阿里旺旺的程序文件夹,就是这么变态,平均大小为16K。
假如启动程序需要读出一半,再假设这些16K文件的4K块都是连续的,那么HD最快也需要5秒钟才能全部读出来,实际上HD的平均读取时间还要翻倍,再加上用户文件,C++库等,难怪需要20多秒。这些大量的小文件被缓存到U盘上以直接寻址的方式被命中,那只需要三秒钟,难怪可以秒开。excel的感觉最棒