我試圖衡量長時間運行過程中的CPU利用率水平。我懷疑每次運行task-manager查看數據時,由於taskmanager具有更高的優先級,因此進程的CPU利用率下降。如果我給予我的進程實時優先級,那麼任務管理器完全鎖定,我無法使用它。我希望我的大部分CPU週期專用於此過程,並且我想大致瞭解它的使用量。我不需要一秒鐘的顯示器,只需要幾張快照讓我知道發生了什麼。我怎樣才能做到這一點?衡量/測量沒有TaskMgr的CPU使用率?
回答
編程方式使用C API,你可以使用性能計數器API。 (CPU使用率只是另一個計數器)。您可以使用low-level registry API to query the performance counter作爲數據。或者你可以使用PDH API(性能數據助手API) - 這可能是你想要的。我已經在過去使用過,PDH api很容易使用。
另一個幫助枚舉可用計數器名稱的工具是perfmon。 (只需運行c:\ windows \ system32 \ perfmon.exe)。它也是任務管理器的有用替代方案。它也做記錄和圖表。您可以爲多處理器上的每個邏輯處理器設置計數器。
C API無法訪問,但對perfmon有很好的建議!我總是忘記使用該工具。本文有幫助:http://adminfoo.net/2007/04/windows-perfmon-top-ten-counters.html – SFun28 2010-11-08 17:31:03
或許procdump - 但sysinternals process tools的人應該幫助
我不知道你對任務管理器的關注是有效的。任務管理器足夠輕便,不會淹沒長時間運行的進程並竊取足夠的CPU週期。如果你的過程真的是那個CPU餓了,你會在任務管理器中看到它。如果你沒有看到你所期望的CPU使用率太高,那麼你的假設是你的過程需要一段時間,因爲它使用了大量的CPU是錯誤的。也許你的長時間運行過程是長時間運行的,因爲它的IO限制或等待事件或睡眠很多。即做其他事情比使用CPU。如果它使用大量CPU但不是100%,或許它的效率不如我上面列出的相同原因。
你可以寫在行通過GetProcessTimes
一些微不足道的工具,查詢這個特定的進程(通過ID,比如):
main()
HANDLE h = OpenProcess(PROCESS_QUERY_INFORMATION, FALSE, id);
for(;;) {
GetProcessTimes(h, /*..times.. */);
printf("time taken %d\n", (kerneltime+usertime));
Sleep(1000);
}
我敢肯定,在.net中可能有這樣做的方法。我在十年內沒有碰過C++。尋找一個開箱即用的工具。將嘗試這個職位上的其他建議像perfmon和sysinternals的東西。 – SFun28 2010-11-08 17:26:16
@馬丁貝克特:procmon中,您可以看到詳細的CPU使用率在特定的工藝
- 1. 測量程序的CPU/RAM使用率
- 2. 不可測量的CPU使用率?
- 3. 如何測量CPU使用率
- 4. 有沒有辦法讓WinRT應用程序測量自己的CPU使用率?
- 5. 高MySQL CPU使用率但沒有大量查詢
- 6. 測量CPU頻率縮放效果
- 7. 測量C++和Java進程的CPU使用率
- 8. 測量Maple函數的執行時間和CPU使用率
- 9. Android - CPU使用率和電量消耗
- 10. Postgres常量CPU使用率30%
- 11. 如何在後臺任務中精確測量CPU使用率?
- 12. 電池&CPU使用率和溫度測量結果意味着
- 13. CPU時間測量
- 14. 如何測量Mesos中每個容器的CPU利用率?
- 15. 測量新/舊代碼的CPU佔用率,對特定功能
- 16. 有沒有辦法來測量JavaScript的CPU處理滯後
- 17. 衡量一個進程獨立的CPU核心使用情況?
- 18. 擺率測量
- 19. 如何獲取作爲taskmgr的CPU使用情況? C#
- 20. CPU使用率( 「」)
- 21. CPU使用率
- 22. 衡量cpu使用兒童但不是孫子
- 23. Spark CPU利用率監測
- 24. 測量裸機ARM Cortex A9系統的CPU效率
- 25. 限制java應用到特定量的CPU使用率
- 26. 有沒有辦法使用Google Analytics測量協議的採樣率
- 27. 您使用什麼工具衡量衡量指標的績效?
- 28. 使用matlab來衡量挑選彩色卡片的概率
- 29. 衡量有趣嗎?
- 30. 測量CPU和子進程
做的特性*不*設置你的進程,以實時,如果你想別的運行(如您的鼠標光標)。 – Gabe 2010-11-06 21:06:07