我需要测量低延迟应用程序的消息解码延迟(3到5 us)。
我使用了以下方法,
1. Get time T1
2. Decode Data
3. Get time T2
4. L1 = T2 -T1
5. Store L1 in a array (size = 100000)
6. Repeat same steps for 100000 times.
7. Print array.
8. Get the 99% and 95% presentile for the data set.
但是我在每次测试之间都有波动。有人可以解释一下这个原因吗? 你能为此建议任何替代方法。
注意:应用程序紧密循环(获得100%cpu)并通过任务集 commad绑定到CPU
答案 0 :(得分:0)
可以使用代码分析器或使用现有系统调用来收集性能指标的方法有很多种。
北卡罗来纳州立大学拥有可用的不同类型的计时器和分析器的良好资源,以及在其HPC网站here上使用每个和一些示例的适当案例。
在大多数现代系统中不可避免地会出现波动,与超线程和频率调整相关的某些BIOS设置会对某些应用的性能产生重大影响,功耗和冷却/环境设置也会如此。
将结果分布作为直方图和/或将它们拟合为高斯分布也将有助于确定分布的正常程度以及波动是正常的统计噪声还是严重的异常值。运行额外的测试也是有益的。