3. 物理內存充足時分頁文件工作嗎 雖然實測結果表明分頁文件對于目前的大內存系統仍然有提高性能的作用,但我敢說,很多網友肯定還有另外一個疑慮——分頁文件到底和物理內存是個啥關系?頻繁的硬盤讀寫難道真不會拖累系統運行么?
要回答這個問題其實也很簡單,只要借助一款第三方軟件——AIDA64就可以了。上圖是硬件檢測軟件AIDA64對筆者電腦的檢測,可以看到當前電腦的存儲系統是由4GB物理內存、4GB分頁文件共同組成,其中物理內存+分頁文件的總和被AIDA64稱作交換區(Windows稱“虛擬內存”)。那么當一款程序啟動時,它究竟會首先使用物理內存?還是按照整個虛擬內存的概念同步使用呢? 這里需要說明的是,微軟有關虛擬內存的定義是與AIDA64不同的,它是將物理內存+分頁文件視為一個虛擬內存(相當于AIDA64中的“交換區”),而AIDA64則是將物理內存+交換區視為虛擬內存。說實話AIDA64的這種劃分比較令人費解,因為將一個現實數值(物理內存)與一個虛擬數值(交換區)合并原本就沒有什么實際意義。因此這里我們主要還是以微軟定義為準。 最終答案非常明顯,就是當物理內存用盡后,Windows才會啟用分頁文件。如果你不信,不妨也像我一樣打開AIDA64(軟件支持實時更新,可以很直觀地看到各個數值的變化),然后隨意啟動幾款程序,觀察一下“頁面文件”的數值變化。你會發現隨著程序啟動,物理內存和交換區數值都在持續變化,唯獨頁面文件卻始終保持著0MB。 換句話說,在物理內存可以滿足當前需要時,Windows并不會棄用高速內存而選用速度更慢的硬盤文件(分頁文件),因此我們絲毫不必擔心開啟分頁文件會影響系統整體性能,除非是你的物理內存真的無法滿足系統需要。 4. 分頁文件如何設置才合理 那么又一個問題來了,如果說分頁文件在現今的Windows中仍然有利無弊的話,那么我們究竟是應該讓Windows自行管理,還是給它設定一個具體的數值呢? 有關這個問題,筆者曾經和一位微軟工程師聊過,雙方的焦點在于,分頁文件是一項很古老的設置,最初是將其設定為一個可變量,官方推薦是物理內存的1.5倍(即你在系統→分頁文件設置框內看到的推薦值)。 但要注意的是,這條規則的設計背景是在數十年前,那時的內存普遍只有幾十兆(服務器也不過如此)。但時至今日,當物理內存已經跨入GB時代,甚至個別用戶已經用上16GB以上的超大內存,再去一昧照搬從前的標準顯然并不適合。
依然還是開頭圖書館的例子,現在的情形可以變更為館藏容量未變(10000本),但每人每次的可借閱數升級為15本(即物理內存變大了),相應門口小書架的圖書量也增加為500本(分頁文件按比例擴大)。那么問題來了,如果說50本的小書架可以幫我們提高效率的話,那么500本書架所消耗的時間又是多少?如果碰巧這500本中仍然沒有你想要的,需要重新進入圖書館(10000本)里繼續查找的話,系統效率不慢才怪。 回到現實版中來,小書架容量的暴增其實就相當于分頁文件擴張(比如16GB內存按微軟標準計算就是16GB~24GB),那么在現行機械硬盤的讀取速度下(這里不考慮隨機讀取與線性讀取區別),若想遍歷一遍16GB或者24GB空間所花費的時間,恐怕也是相當大的。換句話說,如此一來分頁文件非但沒有提高系統性能,反而真的會成為系統性能的拖累! 為了更好地說明結果,我們仍然通過PCMark 7進行了一次基準測試。與先前測試略有不同的是,此次主要是對分頁文件的大小進行了調整,根據測試機內存劃分為“系統托管(實測為4GB)”、“512MB”、“2GB”、“4GB”幾檔,當然也沒忘增加了一個大容量“12GB”。
最終結果一目了然,隨著分頁文件的增長,系統評分開始成比例提高,到達4GB時幾乎出現了此次評測最好的成績。但當筆者人為將其升至12GB時,整體評分又有了明顯下降,從而最終佐證了我們先前的推測。 雖然上述測試已經大體推算出一個分頁大小,但我們并不建議所有用戶都采用這一設置。原因就是每個人的硬件配置各有不同,大鍋飯式設置并不一定適合每一個人。考慮到分頁文件大小可能對性能的影響,我們建議在用戶內存不超4GB的情況下,可以選擇由Windows自行托管,而當用戶內存高于4GB,則應使用手工設置的方法,將分頁文件限定在一個范圍之內(建議不超6GB),這樣既可保證系統正常的吞吐需求,也不至于因分頁文件過大而拖累系統速度! 此外對于動手能力較強的網友,也可自行通過“性能監視器”(perfmon.msc)添加一個“Paging File Usage”來統計自己電腦中分頁文件的實際利用率,借此精確計算出自己的電腦究竟適合多大的分頁文件。只不過考慮到該步驟操作較為繁瑣,這里就不單獨介紹了。 寫在最后 事實上就像Windows中的很多組件一樣,虛擬內存并不像大家想象得那樣簡單,除了眾所周知的補充內存功能外(實際上現在這個用途已經很少會用到了),它還承擔著提高物理內存命中率及穩定性的作用。甚至某些時候,Windows的一些核心功能也會用上虛擬內存(如SuperPrefetch、內存轉儲等)。 此外個別第三方軟件(如Photoshop、3Dmax等)也是虛擬內存的忠實擁護者,強行關閉很可能導致運行出錯或崩潰。當然考慮到硬盤開銷及整體運行效能,用戶最好根據自身條件對分頁文件大小進行限定,盡量不要讓分頁文件過于龐大。總之在這個問題上,并沒有什么一定之規,更多的是需要使用者靈活處理。
附:幾個小問題的解答: 1. 分頁文件移至別的分區是否可提高性能? 根據微軟的設計,操作系統允許同時建立多個分頁文件,而且Windows會很智能地從中挑選出性能最高的進行讀取。但要注意的是這個設計只針對于多塊硬盤,比如你的Windows裝在硬盤1,而分頁文件設在硬盤2,那么由于操作系統可以同時從兩塊硬盤上讀取數據(一塊讀取操作系統,一塊讀取分頁文件),最終結果就是Windows的效率大增。但如果用戶只有一塊硬盤,將分頁文件由C盤轉移至其他分區,理論上并不會有明顯改進,除非是你的C盤空間過于緊張! 2. 設固定大小可否減少硬盤碎片? 有人認為Windows默認的可變大小,常常是導致分頁文件出現碎片的主要原因,這個問題我們需要從另一個角度考慮。正如大家已知的,分頁文件的一個重要特性是作為內存補充使用(雖然這種情況目前已經很少,但不排除完全沒有),因此當你偶然遇到一個極耗內存程序時,還是有可能將虛擬內存耗盡并導致最終崩潰。那么此時如果使用的是默認可變內存,相當于給了Windows一次騰挪輾轉的機會,也許崩潰就不會發生。 當然這里要特別說一句的是,如果你的虛擬內存大小合理,一般情況下是不會導致Windows隨意調整分頁文件大小的,而這樣的話產生磁盤碎片的機率也就不是很多了。 |