基本介紹
XP Superfetch,Vista,什麼是Superfetch,Windows 7,Superfetch,為何第一次啟動程式會感覺很慢?,這是什麼原因造成的呢?,Windows 7記憶體占用大的原因,查看預載入的記憶體,使用建議,Windows8,使用建議,方法:,
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記憶體占用如此之大。
Superfetch記憶體管理機制會將用戶可能使用的應用程式頁面利用記憶體可用空間進行預載入;儘可能地避免系統發生從硬碟的頁面調用;讓應用程式最快速度開啟;不會由於計算機長時間閒置而使突然使用變得回響遲緩;在退出大型應用程式後會主動將之前被迫轉移到虛擬記憶體中的頁面重新調入記憶體當中。這樣看起來似乎專業了點,所以接著往下看,會很好地對這些特點進行理解。
為何第一次啟動程式會感覺很慢?
相信大家都有過類似的經歷。當我開機後,第一次運行一個程式,就比如說是Word吧,可能需要5秒才能啟動。當我關閉後再開,也許只用2秒。如果我不關閉,直接打開另外一個Word檔案,那就更快了。
這是什麼原因造成的呢?
當我們開機後,工作集裡面沒有Word這個員工(頁面),他還在家(硬碟)裡面。於是當我召喚他的時候,它才從家走到辦公室(工作集)。這樣的過程就叫做硬調頁了,當然需要的時間長。而當我們關閉了Word時候,他就被派往大廈的另一房間,我卻馬上再次召喚他,這時,另一個房間內的數據還沒被清零,他便不用從家裡走來,而是直接從數據結構裡面引入就可以了。在不關閉這個程式Word的情況下,他也不用為其他程式讓路的時候,它還存在於辦公室(工作集)裡面,召喚他的時候就會更快。這樣的無需從硬碟中重新調用數據,而是將數據結構中的頁面重新掛載到工作集中的過程,便叫做軟調頁了。大家都知道記憶體速度遠遠快於硬碟,所以軟調頁的使用就是第二次運行程式變得很快的原因了。
Windows 7記憶體占用大的原因
至2014年,我們知道了當記憶體中有所需程式頁面的時候會使程式啟動變得更快。而Windows 7中的Superfetch已經具有了學習的功能,自從第一次使用Windows 7時,Superfetch就開始記錄我們的使用習慣,將我們經常使用的程式的頁面在開機後進行提前載入,那么當我們第一次開啟程式的時候便可以獲得像第二次開啟一樣的速度了。所以這些預載入的頁面就會使得我們的記憶體占用變多。簡單地說就是讓所有程式操作在記憶體中進行,避免使用硬碟硬調頁空間,這也就是為 何感覺Windows 7占用很大記憶體的原因。
查看預載入的記憶體
而在XP時代,也許你也有過類似的經歷:當開始使用一些程式後,由於有事便離開了。回來的時候卻發現系統回響十分緩慢,特別糟糕。這是由於XP的記憶體管理模式效率非常低下。
當我們離開後,程式都處於不使用狀態。這時系統的一些後台程式,如磁碟整理、防毒軟體等程式就會全速運行,導致我們使用的一些程式頁面不得不被擠到了硬碟虛擬記憶體中。可是當這些後台程式完成任務後,XP系統並不會把之前被擠到虛擬記憶體的頁面導回記憶體里。於是在再次使用電腦時,系統才會手忙腳亂的進行臨時調配,甚至是硬調頁。導致程式回響極其遲緩。所以看上去XP的空閒記憶體很多,事實上都沒起什麼太大的作用。
使用建議
1、多使用休眠和睡眠
由於SuperFetch要在開機後進行預載入,所以建議大家不要關機。儘量使用休眠或睡眠,這樣SuperFetch的預載入內容就會保留。從而提高速度和效率。
2、使用ReadyBoost
很多從XP升上來的用戶由於系統的記憶體不夠大,所以無法全面的發揮SuperFetch的功能。我們可以使用ReadyBoost功能來幫我們解決這個難題。
只要符合條件的快閃記憶體都可以加速我們的系統。ReadyBoost功能是利用快閃記憶體的容量作為SuperFetch預載入頁面的儲存空間。但由於微軟採用了特殊的算法,所以並不會影響快閃記憶體的壽命。還有,用於ReadyBoost的快閃記憶體最好為物理記憶體大小1~2.5倍。如果系統物理記憶體足夠大的話,就沒有必要使用ReadyBoost了。右鍵點擊隨身碟盤符選擇屬性,切換到readyboost一欄,速度達到標準的隨身碟都可以開啟這個功能。
Windows8
Windows8/8.1默認開啟Superfetch,對於平常使用的程式回響速度會有較明顯的加速作用,特別當大記憶體配置時。由於win8/8.1用戶普遍發現開機後有短暫發生磁碟占用100%的情況,被認為可能是開機後短時間內系統回響緩慢的誘因之一。
使用建議
Windows8 要設定好 Superfetch 服務
方法:
控制臺 – 管理工具 – 服務 – Superfetch – 啟動類型 – 自動(延遲啟動)(默認啟動類型為自動無延遲),可以避免剛啟動好Win8對硬碟的頻繁訪問,而不建議直接禁用該服務。