如何使用.. QNX Momentics 应用分析器?

How to use .. QNX Momentics Application Profiler?

我想根据时间分析我的(多线程)应用程序。某些线程应该经常重新激活,即线程每隔固定时间间隔执行一次其主要工作。换句话说,有一个固定的时间片,其中所有线程都被重新激活。

更准确地说,我希望某些线程每 2 毫秒激活一次(因为这是循环周期)。我做了一些简化的测量,确认 2ms 确实有效。

为了更准确地分析我的应用程序,似乎适合使用 Momentics 的工具 "Application Profiler"。 然而,当我这样做时,我无法解释我选择的时间数字。我会对 average 以及 minmax 花费的时间感兴趣 before某个线程被重新激活。到目前为止,这个想法似乎是只能监视某些功能占用的时间。然而,事实似乎并非如此。例如。我有两行代码并排放置:

if (var1 && var2 && var3) var5=1; 需要 1 毫秒(平均)

if (var4) var5=0; 需要 5 毫秒(平均)

那应该告诉我什么?

另一件事让我感到困惑 - 父线程 "takes" 在 avg 上增加了 33ms,在 max 上增加了 2ms,在 [=1ms 上增加了 1ms =44=]分钟。除了 avg 不应大于 max 这一事实(即我更期望 avg不大于 2 毫秒 - 因为这是周期时间),它实际上增加了我 运行 分析工具的时间。所以,如果我 运行 该工具半小时,33 毫秒实际上大约是 120 秒。所以,似乎 avg 实际上是 total 线程占用 CPU.

的时间量

如果是这种情况,我假设能够使用 count 数字来抵消总时间,但这也不起作用。主要是由于这个数字几乎从不可用——即只有一个单独的列表条目(对于每个父线程)称为 ,它不代表特定的进程范围。

所以,我阅读了关于 "Application Profiler", incl. the manual about "New IDE Application Profiler Enhancements", as well as the official manual articles about how to use the profiler 工具的 QNX 社区 wiki.. 但我不知道如何使用该工具来满足我的兴趣。

底线:我很确定我误解和误用了该工具的预期用途。因此我的问题 - 我将如何解释数字或正确使用工具的反馈来确认我的 2ms 循环时间?


附加信息

System Profiler 应该可以满足您的需求。它连接到微内核,让您看到系统上所有线程的状态。我在类似的设置中使用它来找出我们的系统发生意外超时的原因。 (原因原来是关键线程上的页面等待。)