我希望 近似 最糟糕的案例执行时间(WCET),以便在linux上执行一系列任务。大多数专业工具要么昂贵(1000美元),要么不支持我的处理器架构。
因为,我不需要紧张,我的思路是我:
考虑到最大的时钟周期数和知道核心频率,我可以得到一个估计
这是一种健全的实用方法吗?
其次,为了解释来自其他任务的干扰,我将与每个随机分配的核心并行运行整个任务集(40)任务,并执行相同的事情50,000次。
一旦我得到估计值,将增加10%的安全边际以应对不可预见的干扰和未经测试的路径。本文提出了10%的保证金" Preepmtive多任务系统中最差情况执行时间的逼近"作者:Corti,Brega和Gross
答案 0 :(得分:0)
一些意见:
1)即使尝试以这种方式计算最坏情况边界也意味着假设没有不常见的输入会导致任务花费更多甚至更少的时间。一个极端的例子是一个错误,导致其中一个任务进入无限循环,或导致整个事件陷入僵局。无论输入如何,您都需要像代码审查那样确定所花费的时间总是几乎相同。
2)输入数据可能会影响某种程度的时间。即使这对您来说不明显,也可能因为您调用的某些库函数的实现细节而发生。因此,您需要对有代表性的现实生活数据进行测试。
3)当你得到50K的测试结果时,我会绘制某种概率图 - 参见例如http://www.itl.nist.gov/div898/handbook/eda/section3/normprpl.htm并将其链接起来。我会寻找孤立的点,表明在少数情况下一些运行可疑速度慢或可疑速度快,因为(1)的代码审查说不应该像这样运行。我还想检查一下,增加10%的最大值可以使我与我绘制的点相距很远。您还可以根据输入数据绘制不同参数的时间,以检查那里没有任何模式。
4)如果你想尝试一种非常复杂的方法,你可以尝试将统计分布拟合到你找到的值 - 参见例如https://en.wikipedia.org/wiki/Generalized_Pareto_distribution。但绘制数据并查看数据可能是最重要的事情。