12/29/2008

Vista 效能雜談: superfetch

很多人感覺 Vista 越用越快, 這並不是錯覺, 而是因為 Vista 的 Superfetch 正在發揮它的功能. Superfetch 的前身是 prefetcher, XP 時代就有, 在 Vista 時期變得成熟並且更積極:


disk I/O 是系統效能的最大殺手, 現下 CPU 的指令是以 nano second 在算的, 而 disk i/o 則是以 millisecond 在算的, 這兩者相差百萬倍, 故而, 減少 blocking i/o, 能有效增加系統效能, 這是 superfetch 的基本精神.


當系統執行時, Superfetch 服務會在背景記錄每一支程式的 disk I/O, 包括啟動的頻率, 載入那些 DLL, 開啟那些資料檔等等. 這樣的使用計錄累積一段時間之後, superfetch 開始"猜"使用者最可能需要那些檔案, 然後利用系統閒置的時間把這些檔案預載到記憶體中, 等使用者真的要執行這支程式時, 因為所有需要的檔案已經載入記憶體中, 不再需要從磁碟中讀取, 所以可以大幅增加啟動速度.

 

除此之外, prefetch 也會要求系統的磁碟重組程式把這些檔案重組到鄰近的磁區. 等磁碟重組程式開始進行例行性的最佳化時, 會根據之前 superfetch 的提供的資料更精準地最佳化. 理論上, 檔案重組後, 因為 seeking 大幅減少, 所以存取速度會快很多. 讓 superfetch 的預載更有效率


預載檔案需要使用記憶體, superfetch 隨時監視系統記憶體的使用量, 當有應用程式開始需要大量記憶體時, superfetch 會動態地把記憶體歸還給系統, 讓應用程式有足夠的記憶體而不需要 paging. 反之, 等應用程式把記憶體釋回系統後, superfetch 會再次把檔案預載回記憶體中.


可想而知這樣的機置要有很多 ram 才能順暢, 所以如果可以的話, 最好讓 Vista machine 安裝 2G 以上的記憶體. 同時, 如果 CPU 不太差, 加插一支 USB 拇指碟啟動 ReadyBoost, 效能的改進將更為顯著

沒有留言: