【问题标题】:Testing GC Pressure in Visual Studio在 Visual Studio 中测试 GC 压力
【发布时间】:2014-12-19 16:44:18
【问题描述】:

我正在 Visual Studio 2012 Ultimate 中运行负载测试。负载测试只重复执行一个 MsTest 单元测试。

我想知道我的代码对 GC 造成了多大的压力。我不知道该怎么做。

我首先在负载测试提供的默认列表中查找与内存相关的计数器。默认情况下,负载测试运行将提供以下类别的计数器:

  • 总体
  • 计算机
  • 错误

“计算机”选项扩展为提供多个选项,其中之一是“内存”。当我展开“内存”时,我看不到任何与 GC 相关的内容。

所以现在是时候在默认列表中添加额外的计数器了。

为此,我打开负载测试定义并转到“计数器集”并选择“添加自定义计数器集”。然后我“添加计数器”并选择“.NET CLR 内存”。我请求“所有计数器”和“所有实例”。

然后当我运行负载测试时,我看不到有任何方法可以报告这些新计数器或显示在图表中。不幸的是,“计数器窗格”显示了与我开始时相同的选择列表。正在执行的负载测试没有显示任何使用或监视新添加的计数器的迹象。

我错过了什么?

更新

根据 John O. 的输入,我将“.NET CLR Memory”计数器添加到“Agent”计数器集。这确实允许在“计数器”窗格中访问新计数器并在图表中可见。但是,当我选择“.NET CLR 内存”时,我还可以选择计数器将覆盖哪些“实例”。我不知道该选择哪一个:

  • 全球
  • 构建通知
  • 德文
  • devenv #1
  • devenv #2
  • MSBuild
  • MSBuild #1
  • MSBuild #2
  • SC通知
  • TfsComProviderSvr
  • TfsComProviderSvr #1
  • vstest.discoveryengine.x86

上面的多个实例,例如 devenv #1 和 devenv #2 显然代表了我目前在桌面上打开的三个 Visual Studio 实例。但这仍然没有告诉我应该选择上面的哪个项目以使计数器仅“查看”我的负载测试代码。我选择了“所有实例”单选按钮,但我更想知道我应该选择什么。

【问题讨论】:

  • 你可以给场景一个启动延迟,给负载测试一个冷却时间。然后,当测试未运行时,您应该会在开始和结束时看到一段时间。检查列出的所有计数器,看看在测试实际运行时发生了哪些变化。

标签: .net visual-studio load-testing performance-testing


【解决方案1】:

听起来您正在添加一个全新的计数器组。计数器集中的任何计数器都不会出现在负载测试结果中,除非该集映射到负载测试定义的“运行设置”部分。

您需要做的是将额外的计数器添加到现有计数器集之一。

在负载测试定义中,右键单击“代理”计数器集(我假设您要测量执行测试的代理机器上的内存)并选择“添加计数器”。从这里做你以前做过的事情。

现在,由于“代理”计数器集应该已经映射到“运行设置”中,您应该会在下次运行测试时看到可用于绘图的计数器。

更新

由于您想将内存计数器添加到新机器,因此您在问题中的原始步骤是正确的方法。然后,您只需将新计数器组映射到您要测量的任何机器。

  1. 打开负载测试定义,转到“计数器集”并选择“添加自定义计数器”。
  2. 选择“.NET CLR 内存”并保存新的计数器集
  3. 现在转到负载测试定义的“运行设置”部分。右键单击“计数器集映射”并选择“管理计数器集...”
  4. 将出现一个新的对话窗口。点击“添加计算机”按钮。
  5. 输入您要在其上测量 GC 压力的机器名称。点击机器旁边的 [+]。
  6. 应该会出现一堆节点,显示您也可以映射机器的计数器集。您应该会看到您创建的计数器集 - 检查它并单击“确定”
  7. 现在负载测试定义应在“计数器集映射”部分显示您正在测量 GC 的机器。

【讨论】:

  • 您是正确的,将 .NET CLR 内存计数器添加到代理使其可用(在“计算机”下)。但是,我假设代理和我的被测代码之间存在分离。我想测量我的被测代码的 GC 压力,而不是代理。我假设代理可以或确实在单独的进程中运行。有这方面的信息吗?
  • 您的被测代码和代理之间绝对应该分开 - 它们应该在完全不同的机器上。有关将计数器集添加到运行您的被测代码的机器的步骤,请参阅我的答案中的更新。
【解决方案2】:

收集数据和绘制图表是两个独立的活动。

在 Visual Studio 中打开测试结果并查看可用的图表。使用其中一个图表的上下文(右键单击)菜单并选择添加图表。在计数器窗格中选择要绘制图表的计数器,然后将其拖到新图表上或使用其上下文菜单并选择在图表上显示计数器

可以将单个计数器添加到图表中。通常可以添加树中各个计数器之上的一层,但不能添加更高的层。一些标准图表也可以添加额外的计数器。

也可以在测试运行时添加新图表。

【讨论】:

  • 您所描述的是我正在尝试做的......但是“计数器窗格”没有显示我添加到负载测试定义中的新“自定义”计数器。如果窗格中未显示新计数器,我无法从窗格中拖入。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-24
  • 2014-05-31
  • 2011-08-11
  • 2010-09-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多