2009-02-08 29 views
1

我在Windows上對我的代碼進行了一些性能測量,我發現測量之間的結果差異很大。在任務管理器系統空閒進程佔用幾乎100%的CPU時,稍慢一點的臨時探索就會顯示出來。Windows系統空閒進程干擾性能測量

有誰知道系統閒置進程的實際含義以及它可能運行的Windows功能?

注意:我沒有使用任務管理器來衡量性能,我只是用它來看看在特別慢的測量期間還有哪些運行。

請先考慮一下,這是不是編程相關和關閉問題。除非我認爲有理由說明這一點,否則我不會問這個問題。在這種情況下,我認爲這顯然是因爲它對我的開發和測試環境造成了不利影響,爲了整理它,我需要更多地瞭解它。編程不會以編寫代碼開始和結束。

回答

4

除了執行HLT指令(該指令使CPU內核進入低功耗狀態(C1))之外,空閒進程通常不會執行任何有用的工作。但是,您的基準測試不會佔用100%的CPU時間,這對於猜測正在發生的事情打開了大門。

如果您的應用程序是單線程的,並且您的測試系統是多核/超線程/多CPU,那麼您應該會看到兩個核心的空閒CPU時間爲50%左右,四個人爲75%任務管理器中的CPU時間百分比包括所有內核。 (我相信老版本的Windows有一個選項可以改變這一點,但我沒有在Vista上看到它。)

如果空閒進程佔用大量的CPU,那可能表明您的應用程序正在花費一個很多時間睡覺。它可能正在等待來自某些外部來源(例如磁盤或網絡)的數據。它可能花費很多時間等待同步對象(例如互斥或事件)。它也可能花費很多時間調用Sleep()函數。分析你的代碼應該確定它花費的時間。獲得完全可重複的基準測試結果可能需要您禁用處理器/磁​​盤/網絡密集型後臺應用程序和服務(例如搜索索引,SMS軟件清單,病毒掃描,Windows更新下載,IncrediBuild/distcc)或連接機器到一個孤立的網絡(或根本沒有網絡)。

我假設你爲你的應用程序編寫了一個基準測試,並且你只是試圖使用任務管理器來診斷爲什麼基準測試結果不符合你的預期。任務管理器不是測量應用程序性能的準確方法。

2

系統空閒進程是Windows在處理器上運行時的一種默認進程,當它沒有別的計劃運行時。這個過程就像一個管家一樣,試圖節省系統電源等。

如果您要測量程序的性能,請不要使用Windows任務管理器。改爲使用性能監視器(您可以通過在命令行鍵入'perfmon'開始)。或者更好的是,使用profiler

-1

如果你的「系統空閒進程」佔用了100%,那麼你的機器基本上是無聊的,什麼都沒有發生。如果在任務管理器中將所有事情加起來,則從100%中減去該數字,然後您將獲得「系統空閒進程」的值。注意它幾乎不消耗內存,不會影響性能。