问题
I want to analyze performance of long process (6-8 hours). I need information about created/finished processes (with command lines) and CPU utilization.
I found, that Windows Performance Analyzer (wpa.exe/xperfview.exe) is great tool for analyzing. I create performance data collector, select provider 'Windows Kernel Trace', keyword 'process' and got information about processes.
But I can't find how to collect information about CPU utilization with sampling. I know, that
xperf.exe -on Base
collect CPU information, but it generate too much information...
Also I can collect CPU utilization with performance counters as *.blg file, but I can't load this file into Windows Performance Analyzer. :(
Any ideas?
回答1:
You can get the CPU sampling with Stacks with this command from a command prompt (cmd.exe), running as admin:
xperf -on PROC_THREAD+LOADER+PROFILE -stackwalk profile -buffersize 1024 -MaxFile 1024 -FileMode Circular && timeout -1 && xperf -d C:\HighCPUUsage.etl
This creates a file with max size of 1GB. Xperf/ETW is not working well for long term analysis, because the files are getting too large. So, run the command, and if you see a high CPU usage in Taskmgr, press key to stop logging. Open the ETL in WPA.exe and now you see the last minutes.
来源:https://stackoverflow.com/questions/28315312/how-to-gather-cpu-utilization-sampling-with-xperf-windows-performance-toolkit