【问题标题】:Visual Studio 2015 StandardCollector.Service.exe runaway I/OVisual Studio 2015 StandardCollector.Service.exe 失控 I/O
【发布时间】:2017-09-01 07:15:43
【问题描述】:

Visual Studio 2015(14.0.25431.01 更新 3)由于 StandardCollector.Service.exe 引起的大量 I/O 即将完全停止。调试项目会导致在 temp 目录中写入持续 200 mb / sec 的数据。所有性能数据 (etl)。

内存分配正常。

这种行为是新的。我使用 Visual Studio 15 多年没有(但通常)抱怨。

我追踪到了诊断工具。在工具 -> 调试 -> 常规 -> 选项 -> 启用诊断工具中禁用诊断工具,同时调试解决 I/O 问题。但是,这不是一个永久的解决方案,因为我依赖此功能。

问:打开调试时启用诊断工具时,导致大量 I/O 的原因是什么?

【问题讨论】:

  • @orion6.andre.jager,在Tools->Options->IntelliTrace下,取消勾选“Enable IntelliTrace”,然后使用诊断工具,结果如何?
  • 这种行为并不新鲜,它一直都是这样做的。您找到的解决方法是正确的。只有在您真正需要它时才重新打开它,最好是在一个适度的单元测试风格的程序上。这是一个非常有用的功能,可以让程序员升级到 VS2015,并让新手了解他们的程序如何影响系统。但在他们真正需要它的确切时间,当他们学习到足以编写高性能程序时,它就会耗尽燃料。它根本无法扩展,也不能。恭喜你。
  • @Jack Zhai-MSFT。在打开“调试时启用诊断工具”之前,我打开了“启用 IntelliTrace”。然而,这并没有解决问题。
  • @Jack Zhai-MSFT,感谢您的链接。与链接中描述的问题相比,我没有任何内存泄漏。在我的情况下,该过程正在以 > 200 mb / sec 的速度将数据写入磁盘,并且不会停止让 Visual Studio 停止并且无法恢复。
  • @orion6.andre.jager,很抱歉造成我的误解,我会向其他成员报告和讨论这个问题,如果我有任何最新信息,我会在这里分享。

标签: visual-studio-2015 io visual-studio-debugging


【解决方案1】:

免责声明:我使用 Visual Studio,特别是诊断工具

您启用了 CPU 使用率工具,这是一个使用 Windows 事件跟踪 (ETW) 的分析器。基本上,它每毫秒收集一个 CPU 堆栈,并将该信息写入 ETL 文件,我们从中分析和显示性能信息。无论您是否在调试会话之间打开它,我们都会坚持下去,特别是这样您就可以打开它、重新启动调试和配置应用程序启动。我们最大的问题之一是它很容易打开和忘记。

要关闭它,请切换到诊断工具中的 CPU 使用率选项卡,然后按“启用 CPU 收集”按钮(文本因 VS 版本而异)。上面的 CPU 图表应该从绿色变为蓝色,表明它已被关闭。此外,在最新版本的 Visual Studio 中,我们添加了资源限制,如果系统上的磁盘或内存使用率过低,则会禁用诊断工具,这在启用和忘记 CPU 工具时很常见。

【讨论】:

  • 一个巨大的 21 GB System.1.etl 文件被丢弃在我的系统上,我不断收到磁盘空间警告,直到我意识到发生了什么。我不确定磁盘空间的默认资源限制是否真的有意义。基于总磁盘空间而不是可用空间可能不是最好的主意。
  • 我还可以确认磁盘限制功能在最新版本的 Visual Studio (15.5.2) 上肯定不起作用。
  • 不幸的是,使用可用磁盘空间有点复杂,因为它是一个移动的目标,可能会导致轻微的性能损失,但我会看看。如果磁盘限制功能不起作用,请通过 VS 中的反馈提交错误。请注意,我们的最短会话持续时间为 5 分钟,即使超出磁盘或内存限制,我们仍将继续运行。这是为了帮助那些试图收集痕迹但已经达到极限的小型驱动器。
猜你喜欢
  • 1970-01-01
  • 2015-10-28
  • 1970-01-01
  • 1970-01-01
  • 2015-11-01
  • 2017-03-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多