You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Visual Studio 2022 CPU分析器ETW资源耗尽问题求助

解决VS CPU Profiler报ETW资源耗尽问题的方案及分析

排查ETW日志器占用情况(用xperf)

  • 打开管理员命令提示符,执行以下命令列出所有活跃的ETW日志器:
    xperf -loggers
    
    输出会包含每个日志器的名称、所属进程PID、运行状态。重点关注Running状态的条目,找出除Sysmon外的其他占用进程。
  • 根据PID定位进程:
    tasklist /fi "PID eq <目标PID>"
    
    或者直接在任务管理器中查找对应PID的进程。
  • 停止残留的ETW会话:如果发现异常残留的会话(比如VS诊断工具崩溃后未关闭的VsPerf会话),用以下命令停止:
    xperf -stop <日志器名称>
    

针对性修复步骤

  • 确认EtwMaxLoggers注册表设置生效:修改HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\WMI下的EtwMaxLoggers DWORD值后,必须重启系统才能生效,仅重启VS无效。
  • 临时关闭Sysmon测试:执行命令停止Sysmon服务:
    net stop Sysmon64
    
    (如果是32位版本用net stop Sysmon),再尝试启动VS的CPU分析工具。如果恢复正常,说明Sysmon的ETW会话加上其他进程的会话已达上限,可考虑精简Sysmon的事件收集配置,或者保持EtwMaxLoggers设置为256。
  • 清理VS缓存:删除VS组件缓存目录:
    %LOCALAPPDATA%\Microsoft\VisualStudio\<你的VS版本号>\ComponentModelCache
    
    重启VS后再测试诊断工具。
  • 简化VS诊断配置:在VS诊断工具面板中,只启用「CPU Usage」,禁用其他不必要的诊断项(如内存、事件跟踪),减少ETW会话占用。

原因分析

  • ETW日志器是系统级资源,每个活跃的ETW会话(包括Sysmon、VS Profiler、系统诊断服务等)都会占用一个日志器实例,当数量达到EtwMaxLoggers上限时就会触发报错。
  • 即使只运行Sysmon,后台可能存在Windows自带的诊断服务、第三方监控工具,或是VS异常退出后残留的ETW会话,这些都会占用资源,重启VS无法清理系统级的残留会话。
  • 若修改注册表后仍未解决,大概率是未重启系统让设置生效,或是仍有隐藏进程在占用ETW资源。

内容的提问来源于stack exchange,提问作者John Stritenberger

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 11:52:37