我想在时间方面描述我的(多线程)应用程序。应该经常重新激活某些线程,即线程在每个固定时间间隔执行一次主要作业。换句话说,有一个固定的时间片,其中所有线程都被重新激活。
更准确地说,我希望某些线程每2ms激活一次(因为这是循环周期)。我做了一些简化的测量,证实2ms确实有效。
为了更准确地分析我的应用程序,似乎适合使用Momentics的工具“Application Profiler”。 但是,当我这样做时,我无法解释我选择的时间数字。我会对 min 和 min 以及 max 时间感兴趣之前某个线程是重新激活。到目前为止,我们的想法是只能监控某些功能占用的时间。然而,即便如此也不是这样。例如。我有两行代码,它们彼此相邻:
if (var1 && var2 && var3) var5=1;
需要1毫秒(平均)
if (var4) var5=0;
需要5毫秒(平均)
那应该告诉我什么?
另一件事让我感到困惑 - 父线程在 avg 上“花费”33ms,在 max 上花费2ms,在 min 上花费1ms。除了 avg 不应该大于 max 这一事实(即更多我希望 avg 不大于2ms - 因为这是循环时间),它实际上增加了我运行分析工具的时间越长。所以,如果我将该工具运行半小时,那么33ms实际上就像是120s。因此,似乎 avg 实际上是线程占用CPU的总时间。
如果是这种情况,我会假设能够使用 count 数字来抵消总时间,而这个数字也不起作用。主要是由于该数字几乎从未可用 - 即只有一个单独的列表条目(对于每个父线程)称为 ,它不代表特定的进程范围。
所以,我读了关于"Application Profiler"的QNX社区维基,包括。有关"New IDE Application Profiler Enhancements"的手册,以及有关如何使用profiler工具的官方手册文章......但我无法弄清楚如何使用该工具来满足我的兴趣。
底线:我很确定我误解并误用了该工具的用途。因此,我的问题是 - 我如何解释数字或正确使用工具的反馈来确认我的2ms周期时间?
其他信息
答案 0 :(得分:1)
System Profiler应该可以满足您的需求。它挂钩到微内核,让你看到系统上所有线程的状态。我在类似的设置中使用它来找出我们的系统出现意外超时的情况。 (原因是关键线程上的页面等待。)