我需要一个具有稳定性能特征的ARM平台,以实现精确的基准测试。目前我正在使用Exynos 5422 Cortex A15 / A7设备。
我通过禁用Linux内核中的各种频率扩展功能,使用单独的CPU内核完成任务并移动IRQ和内核,使得短期(10秒范围内)性能变化小于0.1%工作中的核心工作。
不幸的是,在几分钟的随机间隔期间,内存带宽似乎减少了~2%,好像它有两个状态并在此之间切换。我能够获得低于0.1%的短期变化,因此这不是由测量误差引起的。由于减小很小,因此不太可能由内存频率变化或类似情况引起。高精度测量表明带宽减少非常均匀,并且不是由于某些活动尖峰的频率增加引起的。例如,我可以看到由其他内核上的各种中断引起的带宽变化,原因是其他原因。温度变化对此也没有影响。
有没有人有任何想法会导致这种随机的长期记忆带宽减少?
答案 0 :(得分:1)
内存行为极其复杂(*)。一种方法是实际执行多次运行,获取其基质并应用您的统计知识来优化结果。你可以尽可能稳定并仔细检查,问题是下一次运行,你可能会因为一个未知原因得到不同的东西,如果你不检查就不会看到它。
它们是专门的基准测试工具,可以做到这一点并自动计算相关统计数据,并帮助您确定基准测试的准确程度。 Java中的一个例子是JMH。当然,在您的环境中,这会有所不同,除非您可以通过网络触发计算。
找到带宽问题的原因可能是有益的,我希望你能找到它。但对我来说,能够忍受这样的问题并从中获得最大收益是有好处的。
(*)内存中需要的内容可以是L1,L2或L3缓存。或者您可能必须从内存中获取它。根据内存设计和之前请求的内容,对数据的访问可能会再次发生很大变化。
harwdware本身使用内存来显示和各种其他设备。内存本身可以在很短的时间内保持信息的存在,因此内存控制器将刷新内存的内容,从而影响其带宽和反应性。 (这也解释了在断电时内容丢失的原因:没有及时刷新)。系统本身可能会决定重新分配程序中的内存,对其进行碎片整理,用于某些后台任务......