磁盤緩存又稱為虛擬緩存,它的讀/寫速度比管理磁介質快得多,是改善硬盤性能的主要手段。在硬盤空閒時會把數據預先存入緩存,一旦程序請求到此段資料,可以馬上從緩存中得到,無須再讀/寫硬盤,特別是連續存取的操作之中,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,可以讓你的機器發揮最大功效。