优化磁盘缓存
磁盘缓存又称为虚拟缓存,它的读/写速度比管理磁介质快得多,是改善硬盘性能的主要手段。在硬盘空闲时会把数据预先存入缓存,一旦程序请求到此段资料,可以马上从缓存中得到,无须再读/写硬盘,特别是连续存取的操作之中,Cache能够极大地提高系统的整体速度。
Win9x在启动时会调用一部分主内存作为磁盘缓存,而且这部分空间不再允许其它程序使用,换言之,虚拟缓存将减少可用的内存容量,影响程序的运行。实际上,磁盘缓存是由于动态和固定两部分组成的,既占用一定空间,又可以按需求变更尺寸。磁盘缓存的容量不是越大越好,从32MB升到64MB绝不会实现4MB到8MB如此大的性能提升。因此,我们要考虑的不是缓存的大小,而是如何在硬盘速度与应用程序速度之间取得平衡。
一、怎样优化磁盘缓存
微软没有提供一种GUI(Graphics User Interface,图形用户界面)设置来控制磁盘缓存,我们只好靠手式修改windows目录下的system.ini文件来做优化。找到[vcache]一项,可以看见以下数值:
MinFileCacheSize=x
MaxFileCacheSize=y
ChunkSize=z
x、y值的单元是KB,z值的单位是bytes,在不同的计算机中它们的大小各不相同。我们怎样确定所需的优化值呢?这个很简单,最大文件缓存尺寸通常是主内存容量的1/4,如果你有64MB内存,MaxFileCacheSize=16MB*1024=16384KB。至于最小文件缓存尺寸一般为主内存容量的1/9,如果你有64MB内存,MinFileCacheSize=8*1024=8192。可是,我建议大家不要设置最小文件缓存尺寸,当应用程序需要更多内存时,就会自动从磁盘缓存中扣除,不会影响了软件的运行性能。若是把最小文件缓存尺寸设为与最大文件缓存尺寸相同,Win9x就会跳过这段内存空间,可以运行程序的内存只剩下48MB了。此外,当最小文件缓存尺寸过大的时候,视窗系统要花费许多时间来调整缓存的容量,因此不要过它设得过大。 ChunkSize是每一个缓存块的大小,虽然数值小能避免浪费内存空间,但会花费更多存取时间,还是不要改变的好。
二、Benchmark
在修改完毕后,再来看看它的实际效果。在测试之前,我已经开启了DMA(Direct Memory Access,直接内存存取)模式,并对硬盘做了碎片整理。每项测试均做三次,取其平均值得最终结果。5个最大文件缓存尺寸分别设为8MB、16MB、32MB、64MB和无限大。
测试系统:
CPU:英特尔赛扬450A SL32A (Malaysia马来西亚产)
主板:Abit BH6 rev.1.01
内存:128MB Hitachi PC100 SDRAM (6ns)
显卡:Creative Graphics Blaster RIVA TNT AGP(110MHz内核, 120MHz SDRAM)
硬盘:14.4GB IBM Deskstar Titan 14GXP (7,200转/分)
声卡:Sound Blaster Live! Value
测试结果中红色为最低值、白色为普通值,绿色为最高值
由于WinBench 99只测试磁盘的数据吞吐量,与实际应用有些差异,所以有些时候64MB磁盘缓存并不会比32MB快。
WinBench99 High-End Disk(高端磁盘)、Business Disk(商业磁盘)WinMark 99测试和Business(商业)Winstone99测试
WinMark 99得分显示越大对磁盘缓存,对硬盘子系统的性能提高帮助越大。顺便提一句,这也是优化WinBench 99的一种好方法。
游戏Turok、X Demo和Half Life的测试
测试结果显示在128MB机器上使用Windows的缺省值(32MB),可以得到最好的性能,太多或太少磁盘缓存均对游戏有影响。
3D Mark 99的测试,其结果与游戏Benchmark一样,在128MB机器上使用Windows的缺省值(32MB),可以得到最好的性能,太多或太少磁盘缓存均对3D Mark 99有影响。
三、总结
在商业级应用之中,磁盘缓存对软件的帮助很大,其数值越大越好,不过64MB与32MB相比,性能增益只不过是1.8%,完全可以忽略不计。在游戏级应用中,Windows的缺省值是最佳设置,我们根本不用手工进行调整。最终结论是最大文件缓存尺寸采用视窗缺省值,而最小文件缓存尺寸设置为0,可以让你的机器发挥最大功效。