要解決問題,就需要准確的收集相關的性能信息,我們知道,在Windows XP時代,可以使用 Bootvis 工具收集相關的信息。
Bootvis:一個專門用於收集和分析Windows XP啟動速度的工具。曾經很不幸的被錯誤的認為是XP的啟動速度優化工具。
但是由於 Windows Vista 內核體系的變革,加上全新的引導模式的引入,BootVis 肯定是不能勝任的,看來需要找到一個更好的獲取 Windows Vista 相關性能數據的辦法了。
Microsoft Windows Performance Toolkit(簡稱xperf)是微軟最近一段時間內推薦的丈量Windows性能的一個全新的工具,適合於Windows Vista或更高版本。最新版本是4.1.1.1。
可以在這裡免費下載。
安裝xperf的過程非常的簡單,安裝完成以後,就需要開始收集相關的性能數據了。本次我關注的是 Windows Vista 的啟動速度,因此我需要收集的是Boot階段的數據。
用管理員模式啟動cmd.exe,然後進入xperf安裝目錄,輸入下面的命令:
輸入這個命令以後,xbootmgr 會自動重啟系統,然後開始收集相關的啟動信息數據。重啟完成以後,xbootmgr 會等待 explorer 全部啟動完成以後,生成一個日志文件(擴展名是:etl)到xperf安裝目錄下面。下面我們需要對這個文件進行分析。
分析的過程有很多方法,最簡單的方法就是進入命令行模式,切換到xperf安裝目錄下,輸入:
命令自動分析,然後輸出一個 xml 的報告文件。
下面我要說的是一個更細致的分析過程。
1.打開 etl 文件:使用 xperfview boot_BASE+CSWITCH_1.etl 命令,會調用 xperfview 工具對 etl 文件進行詳細的解析。etl 文件是xperf原始的性能數據文件,裡面記錄了所有收集到的數據。
2.xperfview 解析完成以後,會看到類似於下方的圖片:
找到 process lifetimes 分類(如上圖),會發現到50多秒的時候,系統裡面的第一個用戶態進程smss.exe才啟動(進程ID:748),之前的時間都花費在 system 上。換句話說,運行在內核態的各種驅動程序,包括 Windows 內核和執行體用了 50 多秒才完成啟動子系統之前的初始化動作,這個時間花費的也太長了。
3.由於初始化 Windows 內核和執行體等動作用了 50 多秒,這個非常的不正常,因為我們需要看看在這50秒內的詳情。
在 Disk Utilization by process 裡面,選擇 0-50 秒這個時間段: