【发布时间】:2018-07-11 21:12:11
【问题描述】:
我需要一个性能稳定的 ARM 平台来进行精确的基准测试。目前我正在使用 Exynos 5422 Cortex A15/A7 设备。
通过禁用 Linux 内核中的各种频率缩放功能、为我的任务使用单独的 CPU 内核并将 IRQ 和内核工作队列移出,我的短期(10 秒范围内)性能变化不到 0.1%那个核心。
不幸的是,在几分钟的随机间隔内,内存带宽似乎减少了约 2%,就好像它有两种状态并在这两种状态之间切换。我能够得到小于 0.1% 的短期变化,所以这不是由测量误差引起的。由于减少量很小,因此不太可能是由内存频率变化或类似情况引起的。高精度测量表明,带宽减少非常均匀,并且不是由某些活动尖峰频率增加引起的。例如,我可以看到其他内核上的各种中断引起的带宽变化,原因是别的。温度变化对此也没有影响。
有没有人知道什么会导致这种随机的长期内存带宽减少?
【问题讨论】:
-
DMA 是否会争夺内存带宽?为了清楚起见,你是说你已经排除了从你的代码运行的核心窃取 CPU 周期的可能性,所以它只是内存带宽? (例如,通过将您的微基准更改为仅使用 ALU 指令,除了代码获取之外没有内存访问)。您是否有性能计数器来判断您是否遇到了 TLB 未命中(例如,由于某种原因而失效),或者缓存未命中是否增加(这可能表明预取出现了问题)?
-
是的,我已经排除了 CPU 本身的所有问题。 TLB 未命中是相同的。当基准测试速度较慢时,L2 未命中/总请求的比率较高 - 如果可用带宽减少并且预取完成的页面较少,直到缓存未命中,这是预期的结果。
标签: linux performance memory benchmarking