安装Windows Performance Toolkit进行0.1微秒级CPU监控
- 2019 年 12 月 23 日
- 筆記
我研究了WPR,它的最小时间单位是0.1微秒,即10000个单位是1毫秒,精细度非常高
安装过程如下
先运行安装文件进行下载,下载时只勾选Windows Performance Toolkit和dotnet即可,下载相关文件到默认目录C:UsersAdministratorDownloadsWindows Kits10WindowsSDK,然后再进到这个目录进行安装,安装的时候只安装Windows Performance Toolkit
https://download.microsoft.com/download/4/2/2/42245968-6A79-4DA7-A5FB-08C0AD0AE661/windowssdk/winsdksetup.exe



C:UsersAdministratorDownloadsWindows Kits10WindowsSDK






安装成功后在开始菜单找到Windows Performance Recorder,可以在图形界面上点鼠标,也可以通过命令行方式操作,其官网文档的命令行demo较少,目前比较实用的就是CPU监控部署

我命令行调用WPR写了个for循环,1分钟写一个监控文件,到60次结束后计数器重置为0,$times继续++,目前已经循环了一个小时,完全符合我的预期,如果不通过循环覆盖,1小时就得写10TB左右的量,内存和硬盘肯定存不下。
for($times=1;$times -le 60;$times++)
{
wpr -start cpu -instancename CpuSession;
Start-Sleep -seconds 60;
wpr -stop c:cpu$times.etl -instancename CpuSession;
if($times -eq 60) {$times=0}
}
核心代码就上面几行,后来我搞了几版完善健壮性,V3版是比较OK的版本。
使用说明:脚本运行起来不要关窗口直到你收到告警(比如用户自建数据库集群发生高可用切换时他会收到告警),这个时候就可以上机关掉脚本运行的窗口结束循环了,但是结束之前的最后一个循环节只执行了wpr -start,还没执行stop,需要你手动执行wpr -stop cpu.etl -instancename CpuSession把WPR彻底关停后再做分析。
如果执行过程中的屏显日志需要采集,可以重定向到一个txt文件。
