SuperFetch

SuperFetch

Superfetch內存管理機制會將用戶可能使用的應用程序頁面利用內存可用空間進行預載入;儘可能地避免系統發生從硬碟的頁面調用;讓應用程序最快速度開啟;不會由於計算機長時間閑置而使突然使用變得響應遲緩;在退出大型應用程序後會主動將之前被迫轉移到虛擬內存中的頁面重新調入內存當中。

XP Superfetch


Vista

下面的Superfetch技術,即“超級預讀取”,由XP系統中的Prefetch進化而來。
下面,先說什麼是Prefetch:
Windows XP操作系統中,微軟對虛擬內存技術做了進一步改進,發展出了預取技術(Prefetch),預取技術的基本思路是,在載入某個程序之前,預先從硬碟上中載入一部分該程序運行所需的數據到物理內存中,這樣便能加快程序的啟動速度。
在Windows XP中,使用預取技術的具體方法是:在系統和應用程序啟動時,監視內存頁面與交換文件以及硬碟上其它文件的數據交換狀況,當發生數據交換時,Windows XP會紀錄下每一個程序運行時經常需要讀取的硬碟文件,並將讀取的情況記錄在\windows\Prefetch目錄中的pf後綴名文件中。
一旦建立了這些pf文件,在每次需要啟動系統或相應程序的時候,Windows會首先中斷當前準備載入的程序,而轉去查找\Windows\Prefetch目錄,看是否有當前載入程序的紀錄,如果有紀錄,則馬上按照紀錄的情況載入程序運行過程中可能會用到的所需文件到物理內存中。這項任務完成之後,Windows才繼續載入被中斷的程序。
經過這樣的處理之後,在程序運行過程中,需要讀取那些文件時,由於文件已經被“預取”到內存中,此時就不用再到硬碟上進行讀取,因此減輕了程序載入過程中頻繁交換內存頁面與交換文件的現象,改善了內存不足時程序運行的響應速度。
為了進一步優化預取操作的效率,Windows XP還會定期對pf文件進行分析處理,組織好程序文件載入的順序,並將這些分析處理后的信息存放在\Windows\Prefetch目錄中的Layout.ini文件中。同時還會通知磁碟碎片整理程序,在下次運行碎片整理時,按照Layout.ini文件記錄的內容,將相關文件的位置整理在連續的硬碟區塊中。
這項技術從根本上說仍然屬於被動式的調度。換句話說,只有在程序主動發起載入請求時,Windows才會進行相關的調度操作。
被動式調度的存在可能對系統性能造成一些影響。我們考慮這樣一個例子,假設你有在工作的午休時間運行殺毒軟體的習慣,那麼在下班前,一般會停止處理工作程序,然後運行殺毒軟體,此時,如果使用的是Windows XP,那麼操作系統會將工作程序所佔用的內存頁面寫入硬碟交換文件中,並讀取殺毒軟體的文件載入內存。午休過後,殺毒軟體已經運行完畢,但是你在重新開始使用工作程序的時候,系統仍然需要經歷殺毒軟體和工作程序的硬碟交換文件與內存頁面的交換過程,此時程序的響應速度明顯降低。
如果系統能夠進一步自動記錄下這些經常性的操作行為所發生和結束的時間,當時運行的前台和後台軟體等等詳細情況,那麼在內存有空閑空間的時候,就可以在預定的時機預先將一部分文件載入到內存中,這樣就避免了上面例子中發生的不愉快情況。

什麼是Superfetch

不錯,這正是Windows Vista中Superfetch技術所能解決的問題。由於採用了新演演算法,Superfetch不但繼承了Windows XP預取技術的全部優點,還進一步具備監視程序運行時狀況,時間等詳細情況的功能,可以根據用戶的使用習慣,自動預先將存放在硬碟的交換文件轉換到內存頁面中去,使用戶經常運行的程序啟動時的速度得到進一步的加快。
Superfetch技術的中心思想是:“過分空餘的內存空間即是浪費”。的確,如果一個操作系統總是保留著過多的空餘物理內存耗費電能,卻不能夠利用這些多餘的內存空間提高系統性能的話,為什麼不更好地利用這些多餘的內存空間呢?將這些多餘的物理內存作為緩存使用,就是Superfetch技術的本質。而也正是由於採用了這種以內存為緩存的策略,才造成了Vista對內存容量的饑渴!
如果你對這項技術感到反感,或者物理內存容量實在太小,那麼到管理工具—服務中關閉Superfetch服務也是一種選擇。但需要注意的是,如果再次開啟Supertech服務,那麼由於需要經過一段監視記錄用戶使用習慣的過程,因此需要等待較長一段時間后,Superfetch技術才能重新為系統帶來明顯的提速效果。
打開2008的Superfetch
首先:SuperFetch的目的是提升前台進程的性能,預取前台進程的內容。而Windows Server 2008主要目的是用作伺服器,幾乎很少有前台進程,所以沒有採用SuperFetch技術。然而可以打開:
打開註冊表編輯器找到 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PrefetchParameters 這個註冊表項
新建 DWORD 項 名稱為 EnablePrefetcher 數值為 3
新建 DWORD 項 名稱為 EnableSuperfetch 數值為 3
打開 服務,將SuperFetch設為 自動 可以立刻啟動成功

Windows 7


Superfetch

並不是一個新的技術,在Vista時代就已經開始採用,不過鑒於用過Vista的人數比較少,而XP時代的各種電腦技巧始終還深入人心,所以很多人都在疑問為何Windows 7內存佔用如此之大。

為何第一次啟動程序會感覺很慢?

相信大家都有過類似的經歷。當我開機后,第一次運行一個程序,就比如說是Word吧,可能需要5秒才能啟動。當我關閉后再開,也許只用2秒。如果我不關閉,直接打開另外一個Word文件,那就更快了。

這是什麼原因造成的呢?

當我們開機后,工作集裡面沒有Word這個員工(頁面),他還在家(硬碟)裡面。於是當我召喚他的時候,它才從家走到辦公室(工作集)。這樣的過程就叫做硬調頁了,當然需要的時間長。而當我們關閉了Word時候,他就被派往大廈的另一房間,我卻馬上再次召喚他,這時,另一個房間內的數據還沒被清零,他便不用從家裡走來,而是直接從數據結構裡面引入就可以了。在不關閉這個程序Word的情況下,他也不用為其他程序讓路的時候,它還存在於辦公室(工作集)裡面,召喚他的時候就會更快。這樣的無需從硬碟中重新調用數據,而是將數據結構中的頁面重新掛載到工作集中的過程,便叫做軟調頁了。大家都知道內存速度遠遠快於硬碟,所以軟調頁的使用就是第二次運行程序變得很快的原因了。

Windows 7內存佔用大的原因

至2014年,我們知道了當內存中有所需程序頁面的時候會使程序啟動變得更快。而Windows 7中的Superfetch已經具有了學習的功能,自從第一次使用Windows 7時,Superfetch就開始記錄我們的使用習慣,將我們經常使用的程序的頁面在開機後進行提前載入,那麼當我們第一次開啟程序的時候便可以獲得像第二次開啟一樣的速度了。所以這些預載入的頁面就會使得我們的內存佔用變多。簡單地說就是讓所有程序操作在內存中進行,避免使用硬碟硬調頁空間,這也就是為 何感覺Windows 7佔用很大內存的原因。

查看預載入的內存

而在XP時代,也許你也有過類似的經歷:當開始使用一些程序后,由於有事便離開了。回來的時候卻發現系統響應十分緩慢,特別糟糕。這是由於XP的內存管理模式效率非常低下。
當我們離開后,程序都處於不使用狀態。這時系統的一些後台程序,如磁碟整理、殺毒軟體等程序就會全速運行,導致我們使用的一些程序頁面不得不被擠到了硬碟虛擬內存中。可是當這些後台程序完成任務后,XP系統並不會把之前被擠到虛擬內存的頁面導回內存里。於是在再次使用電腦時,系統才會手忙腳亂的進行臨時調配,甚至是硬調頁。導致程序響應極其遲緩。所以看上去XP的空閑內存很多,事實上都沒起什麼太大的作用。

使用建議

任何人都希望通過優化的手段讓自己的電腦運行速度達到最理想的狀態,而內存又是影響電腦運行速度非常重要的因素,我們在了解了Windows 7的內存管理機制,再來介紹哪些方法可以給系統加速。
1、多使用休眠和睡眠
由於SuperFetch要在開機後進行預載入,所以建議大家不要關機。盡量使用休眠或睡眠,這樣SuperFetch的預載入內容就會保留。從而提高速度和效率。
2、使用ReadyBoost
很多從XP升上來的用戶由於系統的內存不夠大,所以無法全面的發揮SuperFetch的功能。我們可以使用ReadyBoost功能來幫我們解決這個難題。
只要符合條件的快閃記憶體都可以加速我們的系統。ReadyBoost功能是利用快閃記憶體的容量作為SuperFetch預載入頁面的儲存空間。但由於微軟採用了特殊的演演算法,所以並不會影響快閃記憶體的壽命。還有,用於ReadyBoost的快閃記憶體最好為物理內存大小1~2.5倍。如果系統物理內存足夠大的話,就沒有必要使用ReadyBoost了。右鍵點擊U盤盤符選擇屬性,切換到readyboost一欄,速度達到標準的U盤都可以開啟這個功能。

Windows8


Windows8/8.1默認開啟Superfetch,對於平常使用的程序響應速度會有較明顯的加速作用,特別當大內存配置時。由於win8/8.1用戶普遍發現開機後有短暫發生磁碟佔用100%的情況,被認為可能是開機后短時間內系統響應緩慢的誘因之一。

使用建議

Windows8 要設置好 Superfetch 服務

方法:

控制面板 – 管理工具 – 服務 – Superfetch – 啟動類型 – 自動(延遲啟動)(默認啟動類型為自動無延遲),可以避免剛啟動好Win8對硬碟的頻繁訪問,而不建議直接禁用該服務。