2012年8月23日 星期四

診斷與解決Windows 7開機緩慢問題 (Troubleshooting the slow boot time issues on Windows 7)

許多使用Windows 用戶均有類似的經驗,Windows 作業系統剛安裝完成時,由於系統乾淨單純,尚未安裝其它程式或工具,所以開機時總能迅速順利的啟動系統,但是隨著使用時間的增長,系統也安裝越來越多的程式與工具,設定越來越複雜的組態,而讓系統開機越來越為緩慢,甚至慢到無法忍受的情況,本文將針對Windows 7作業系統開機緩慢的問題提供有效的診斷方法,以期能夠找出開機緩慢的真正原因,然後對症下藥將問題加以解決。

開機診斷工具

根據經驗,絕大部份的Windows系統開機緩慢的原因大抵有二:

  1. 開機時載入執行過多程式
  2. 開機時載入的某個程式或服務出了問題,而導致執行過久或無法順利執行完成而出現持續等待狀況。

由上述的潛在原因可知,欲找出Windows開機過慢的原因除了需要了解開機時是否載入過多或非必要的程式,還需要判斷是否有開機相關程式出了問題,第一個問題我們可藉助systeminternals的Autoruns程式(http://technet.microsoft.com/en-us/sysinternals)加以診斷,至於找出開機過慢原因可利用事件檢視器內的Diagnostic-Performance 記錄功能來判斷。

使用Autoruns檢查開機程式

Windows本身雖然提供了『系統設定』(msconfig)工具可用來檢查開機程式,如下圖可從『啟動』或『服務』設定頁來停用啟動項目或服務,但啟動設定頁下只包含登錄資料庫的『run』機碼下所設定的程式,這並無法包括所有開機啟動的程式和元件,亦即它不夠完備,此外,您雖然也可以透過登錄編輯器(regedit)到登錄機碼內逐步檢查與修改開機程式,但登錄編輯器並不友善亦不易使用。
sysconfig000

雖然網路上可找到許多「開機啟動」相關的管理工具,可以讓我們自行設定哪些程式可以在開機時自動執行、哪些不可以自動執行,不過這些工具恐怕都比不上微軟的Sysinternals AutoRuns 來的完整複雜。

Autoruns for Windows工具除了可以檢視、管理開機時自動執行的程式、服務與軟體元件之外,還可管理檔案總管附掛元件、瀏覽器的附加元件或外掛、系統排程、桌面小工具、登入的驗證提供軟體等項目,更可詳細檢查、管理開機自動載入的硬體驅動程式與多媒體解碼器以及列印監視器(Print Monitors)…等等項目,所以如果你想要完整的控管Windows系統的啟動方式,Autoruns絕對是最實用的工具。

下圖為執行autoruns後的畫面,您可以從『Everything』設定頁看到系統開機時所開啟的程式、服務與附加元件,您可以將不必要的程式或元件給清除停用,不過請確認為真正無需要開機時啟用的程式才予以清除,如果無法確定請先到網路上以程式名稱查詢其作用之後再決定是否禁止於開機時啟用,其實很多程式安裝時均設定開機時自動啟用其程式更新(如google update)或監控用途,這些軟體其實均可設定不要開機啟用以免延長開機時間並加重系統負載量。

autoruns1

使用Startup Monitor程式監控開機程式的變更

當您安裝應用程式時,它們經常會自動將自己的程式安裝在開機啟動區,以便日後隨著開機自動執行其程式,雖然您可以透過msconfig、autoruns或直接編輯登錄資料庫等多種方法來停止這些程式開機執行,但一旦日後您又再度執行這些程式時,它們通常又會企圖再度將其安裝在開機啟動區,所以建議您應該安裝一個可用來監控開機程式變更的工具,以便只要有任何程式被設定為開機啟動或刪除時將會警告提示您,並讓您有機會禁止這項動作,例如筆者常使用的 "startup monitor"就是一個可免費下載 (http://www.windowsstartup.com/),用來監控啟動程式變更,並可讓您決定是否允許這項動作的實用工具。

startmonitor

利用事件檢視器內的Diagnostic-Performance 記錄功能來診斷開機緩慢的元兇

使用者若想要知道到Windows系統是否有開機過於緩慢的問題以及導致過慢的元兇為何,需要藉助Windows Vista和Windows 7 所提供的新版記錄類型--應用程式及服務記錄檔,檢視其下的【Microsoft | Windows | Diagnostics-Performance】記錄檔的的作業(Operational)工作分類,這個記錄檔工作分類主要包括了開機和關機效能的監視記錄,識別碼為 1xx 者為開機效能問題事件,識別碼為 2xx 者為關機效能問題事件,識別碼為 3xx 者為待機時間事件

在本文中我們主要關注於1xx的開機效能事件即可,如下圖所示您可以在此子節點中看到一些事件識別碼介於100到110間的事件,其中事件識別碼100 將可以讓您知道系統開機時總共花費了多少時間 (確認是否過慢),而其餘的事件識別碼101到110則可提供緩慢的原因出於那裡。

diag_perf

建立二個自訂檢視以隨時檢查開機緩慢問題

為了方便觀察與判斷開機過慢的問題,建議在事件檢視器中依據事件識別碼建立二個自訂檢視:

  • 事件識別碼100的自訂檢視:用以了解系統開機時耗費多少時間。
  • 事件識別碼101~110的自訂檢視:用以了解那個問題或環節出了問題而導致開機過慢。
  1. 開啟『事件檢視器』。
  2. 請由『自訂檢視』目錄的右鍵功能表上選取『建立自訂檢視』選項。
    event_custom
  3. 請於出現的『建立自訂檢視』對話方塊,先勾選所有的事件等級,再『依記錄』選取『應用程式及服務 | Microsoft | Windows | Diagnostics-Performance』途徑勾選底下的『Operational』選項。並在『內含/排除事件識別碼』下的輸入方塊輸入 "100",如下圖所示。
    event100
  4. 『將篩選器儲存到自訂檢視』對話方塊,輸入一個名稱,再『確定』按鈕。
  5. 請重複上面建立自檢視步驟,將『內含/排除事件識別碼』下的輸入方塊輸入 "101-110",並另外命名不同的名稱,用以建立第二個自訂檢視。
    event101_1
  6. 下圖為完成二個自訂檢視後的事件檢器畫面。
    eventviewer100

檢查開機時間是否過慢

本節將利用上面的第一個自訂檢視(識別碼為100)檢查開機是否過慢,開機是否花費太多時間,所以請直接觀察識別碼為100的事件內容,如下圖所示,『開機持續時間』就是系統開機所花費的時間,單位為毫秒(千分之一秒),所以下圖顯示了我的開機時間為118.705秒,至於下方的 "IsDegradation" 則是指Windows 的啟動時間與平常相比是否有延遲,該值為為true時代表為真,false值則為假。

event_100

若按一下"詳細資料"標籤頁,則可以顯示啟動時間的詳細信息,此處我們僅需要關注以下三個值即可:

  1. MainPathBootTime
    MainPathBootTime 是指啟動時當螢幕第一次出現飄動的Windowslogo 時直到桌面出現所經過的時間。值得留意的是MainPathBootTime 階段的結束並不代表著著啟動過程完全結束,此時雖然已經可以使用系統,但一些較低優先權的程序或服務仍然繼續載入,故此時的系統回應速度應會較慢。
  2. BootPostBootTime:
    BootPostBootTime 是指桌面出現之後到系統真正完成啟動載入過程之間的時間,判斷BootPostBootTime 結束的指標為在100ms 的時間內系統空閒時間已達到80% 或以上。
  3. BootTime
    BootTime 就是指前面的啟動持續時間,也是MainPathBootTime 和BootPostBootTime 之加總,微軟認為為計算出真正的啟動持續時間是將此時間再減去10 秒,這是因為通常在啟動結束之後還需要花10 秒左右的時間來確認系統達到認定BootPostBootTime 結束的標準,亦即在100ms 的時間中系統閒置時間已經達到80% 或以上這個條件。

event_100_detail

檢查開機效能降低原因

一旦確認開機過慢的事實存在,接下來將利用第二個自訂檢視(事件識別碼為101-110)來檢查那個服務或程式導致開機效能降低,101至110代表不同的開機效能降低的狀況:

事件識別碼為101

101 事件是指某個應用程序啟動時所花費的時間超過正常時間,而影響到系統的啟動變慢。 其中"總時間”是指該程序啟動的總花費時間,而“效能降低時間”是指該程序啟動比平常正常啟動時多花費的時間。 值得留意是某些程序若在開機時進行升級動作可能會導致拖慢了系統啟動(例如防毒軟體),因此這種原因所導致的101 事件算是正常的,並不需要處理,除非您認為並不需要升級。 但是如果某個程序經常導致101 事件,那麼就需要考慮是否有設定不當的問題存在,或可否升級該程式,或者將其卸載重裝、甚至尋找替代程式,如果不需要在開機自動啟動的話還可以取消其開機自動啟動。

bootdeg

事件識別碼為102

102 事件是指某個驅動程序初始化所花費的時間超過正常時間,導致系統啟動變慢。 不過如果您先前有執行了驅動程式升級,那麼出現102 事件是正常的。 但是如果某個特定驅動程序經常導致102 事件的話,建議將其升級為最新版本,如果當前版本已經為最新版本的話,請嘗試重新卸載安裝。

事件識別碼為103

103 事件是指某個服務啟動花費的時間超過正常時間,導致系統啟動變慢。服務偶爾出現103 事件可能是正常的,但是如果某個特定服務經常會導致103 事件的話,可以將其啟動類型修改為"自動(延遲啟動)"或者“手動”。

 事件識別碼為106

106 事件是指背景最適化花費較長時間完成,導致系統啟動變慢。根據經驗,106 事件最常是由背景預先擷取(BackgroundPrefetch)這項功能導致的,偶而出現該情況為正常,但是如果106 事件太常出現的話,可以嘗試停用或清空預先擷取。

prefetch

事件識別碼為109

109 事件是指某項設備裝置導致系統啟動變慢,如果109 事件經常出現的話,請檢查相關設備是否出現任何問題。

結語

使用Windows 7系統越久,就越可能發生開機緩慢的問題,為了解決這項問題,您可以利用autoruns來將不必要的開機程式從啟動區移除,再安裝stratup monitor工具以隨時監控是否有程式企圖設定為開機啟動,最後如果遭遇開機緩慢的問題,請透過Windows 7 事件檢視器內的Diagnostics-Performance記錄(僅限於Windows Vista/Windows 7等桌面平台,Windows Server 2008並不支援),找出導致系統啟動變慢的元兇,從而加以修正來提高系統啟動速度。

 

相關文章】