问题标签 [perfmon]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
6704 浏览

c++ - 尝试在 Windows PC 上禁用处理器空闲状态(C 状态)

我需要防止处理器进入空闲状态(非 C0 C 状态)。诚然,我对处理器 C 和 P 状态了解不多,所以请耐心等待。我们使用来自第三方供应商的相机,偶尔会提供损坏的帧。供应商已确定当 CPU 进入空闲状态时,它会干扰通过火线传输帧。为了确认这一点,我在 Windows 7 PC 上使用了以下代码,实际上,禁用空闲状态解决了这个问题。

如果我运行我的应用程序并打开 Windows permon 并添加 %C1 时间、%C2 时间和 %C3 时间,当我禁用这些状态时,我发现它们都为零,当我启用它们时,我看到在C3 状态(这是在 Dell Precision T3500 四核 PC 上)。

我也需要在 XP 上执行此操作,但是这些调用在 XP 上不可用。所以我尝试执行以下操作来禁用空闲状态

但是,当我运行我的应用程序时,我仍然看到处理器在 C1 状态下花费时间(通过查看 perfmon 中的相同计数器)。而且我仍然遇到损坏的图像问题。XP PC 是单核戴尔 optiplex PC。

有人知道我如何防止进入 XP 上的任何 C1-C3 状态吗?正如我所说,我似乎已经在 Windows 7 上完成了它。

0 投票
0 回答
2494 浏览

perfmon - Perfmon 不会基于自定义模板创建新的数据收集器集(Win7 & WinServer 2008)

我正在尝试根据我已经创建的 XML 模板文件(来自 PAL)创建一个新的数据收集器集。我以前能够做到。然后,我想使用带有“logman import PAL -xml”C:\sqlserver.xml“”的 logman 来自动化它,这不起作用,说“参数不正确”。我对它不起作用很好,直到我发现我不能再通过 perfmon 创建它。

问题正是这里描述的方式:Perfmon can't create data collector set on Windows 7 x64。我右键单击用户定义文件夹中的“新建-> 数据收集器集”,我看到向导对话框出现。浏览并选择我的 xml 文件后,“下一步”和“完成”按钮被禁用,列表视图变为空(这 3 个默认值消失),我唯一能做的就是再次点击浏览按钮并选择不同的归档或取消。但是,与我链接的那个人不同,该注册表项在发生这种情况的任何机器上都不存在。

我在我的 Windows 7 机器以及两台装有 Windows Server 2008 SP2 的 VM 上执行了此操作

0 投票
1 回答
1420 浏览

glassfish - 可以将 JMeter perfMon 连接到 Glassfish 的端口 8686 以进行 JMX 监控吗?

我有一台服务器要监控,使用JMeter 的perfMon 插件。我已经启动并运行 Glassfish,它可以在端口 8686 上为我提供 JMX 详细信息,但我无法将我的 JMeter 连接到此信息。我已经读到我可以使用一些参数启动 JVM,但是由于 Glassfish 也可以这样做,所以不可能在那里获得读数吗?

稍微进一步解释一下。我在我想要监控的服务器上启动了一个 serverAgent。我的机器上有 JMeter,我使用本地的 URL,所以没有防火墙问题。在我使用 JMeter 的机器上,我以这种方式设置了 jp@gc - PerfMon Metrics Collector:

根据 Oracle 的说法,GF JMX 值的 url 应该有一个如下所示的链接:

我已经以各种方式尝试了这个 url,希望让它工作,但到目前为止还没有。我的 serverAgent 在尖叫,没有 SIGAR 对象用于度量类型 jmx,所以它似乎有可能在端口 8686 上从 GF 获得一些东西,但它没有 SIGAR 对象。

但是 SIGAR 可以连接到这个 GF 端口,为 JMeter 检索信息不是吗?Hyperic 使用 SIGAR iirc,根据他们的说法它连接得很好:)

有什么建议或建议吗?

0 投票
0 回答
378 浏览

perfmon - Perfmon - 功率计的刷新率

我正在编写一个工具来收集有关笔记本电脑功耗的信息。我需要测量当前的功耗,我使用 Perfmon 来测量。但是我发现了一个奇怪的错误。这是典型的功耗图表(这是“Power Meter” - “Power” - “_Total”):

测量值大约每 10-15 秒更新一次。

但如果运行 Everest(或 AIDA64)电源管理选项卡会更频繁地更新此选项,则结果会更准确:

测量值大约每 1-2 秒更新一次。

我不明白当我们跑珠穆朗玛峰时会发生什么。我真的需要得到准确的数据。你有什么想法?

我真的很感激在这方面的任何建议。

0 投票
1 回答
1082 浏览

c#-4.0 - 使用 WMI 查询的 perfmon 计数器值问题

我正在构建 EXE,并通过它获取应用程序的 perfmon 计数器以使用 WMI 查询对其进行监视。我正在用我的本地机器测试它,似乎我的代码逻辑给了我一些计数器的错误值。

下面是我的计数器之一的代码(CacheTotalHitRatio在此处输入图像描述

当我在我的系统中使用perfmon exe查看它时,它会显示一些不同的东西,如下所示。

在此处输入图像描述

我认为 CacheTotalHitRatio是百分比,不应超过 100,但我的代码给出了更高的值。这里有什么问题或者我在这里做错了什么?

如果有人对 WMI 查询有经验,请告诉我。

提前致谢。

0 投票
0 回答
190 浏览

c# - 找不到基于速率的性能计数器示例

我们想在我们的应用程序中添加一些性能计数器,它们中的大多数都需要反映特定的速率,例如每小时的安全异常次数、每小时的用户登录次数、每 15 分钟的应用程序异常次数。所有在线示例都显示如何每秒执行此操作,但我们希望能够在自定义时间段(小时、分钟等)内执行此操作。

如果有人可以展示一些如何做到这一点的代码示例,那就太好了。据我了解,我们需要创建两个计数器:一个用于存储总数,一个用于存储时间段。

任何人都可以分享一些如何创建基于速率的性能计数器的代码吗?

0 投票
2 回答
4144 浏览

c++ - 如何读取 Windows 性能计数器?

我可以获得一个 C++ 代码来读取 Windows 性能计数器(类别、计数器名称和实例名称)吗?

在 c# 中这很容易,但我需要 c++ 代码。

谢谢

0 投票
1 回答
792 浏览

asp.net - 经典 ASP '请求执行' 永远不会大于 1

我们有一个复杂的应用程序,它使用简短的 ASP servlet 提供 AJAX JSON 流(使用 ADO 来获取数据)。任何给定的会话都可以同时从 10-20 个这些请求中启动。在构建负载时,我们比预期更早地遇到了严重的性能问题。(服务器是双 XEON、RAID 5、4gb 等)。在 perfmon 中进行调查,我们注意到“请求执行”数字永远停留在 1。永远不会更高。研究表明,20-50 的数字并不少见。Requests Queued 将徘徊在 10-20 左右,等待时间也会攀升。

我们已经将 ASPProcessorThreadMax 从默认的 25 设置为 40,但没有任何效果。它似乎一次只能处理一个请求,不用说,这是行不通的。我找不到任何描述这个特定问题的东西。非常感谢任何帮助。

0 投票
0 回答
206 浏览

.net - .NET 套接字的 perfmon 计数器,显示接收缓冲区状态

有谁知道 perfmon.exe 中的计数器,它将显示为 .NET 套接字缓冲的字节数?我希望在读取大量 UDP 数据包时看到一些趋势。

0 投票
2 回答
537 浏览

c# - parallel.foreach 和 perfmon 报告了线程

我有一个从包含 100s-1000 行的文本文件中读取的应用程序。

每行都使用 parallel.foreach 进行处理,使用 ParallelOptions 来限制触发的任务数量。这是“控制器”任务。

在这个“控制器”parallel.foreach 中是另一个parallel.foreach,它将执行实际工作。触发的每个控制器任务将执行相同的工作,并使用原始文件行中指定的不同数据输入。再次,这项工作 parallel.foreach 使用并行选项来限制触发的任务数量。

在我上次的测试中,我使用了 Controller foreach: MaxDegreeOfParallelism=4 Worker foreach: MaxDegreeOfParallelism:4

根据我的数学,这应该意味着任何时候最多有 16 个任务在工作。

但是,当我检查 perfmon.exe 时,我可以看到我的应用程序使用了 700 个线程。再过几个小时,这将超过 1000。

怎么会这样?为什么 GC 不收集这些完成的线程?

以前,我的代码在 Thread[] 中触发了具有相同问题的实际线程。然后我将它移到一个 Task[] 并遇到了同样的问题。我假设某处存在线程泄漏,并且引用仍然指向线程/任务。我花了很多时间寻找这个无济于事。

所以我转向parallel.foreach 的想法是,如果我从未创建过对任务的引用,就不会发生任务泄漏,因为这一切都发生在一个lamda 中。

但问题仍然存在。关于为什么会这样的任何想法?还是正常?

添加了下面的代码,由于所有测试和尝试调试这个问题,它有点乱,试图清理一下。