【发布时间】:2019-08-09 03:53:11
【问题描述】:
在 ARM SMP Linux 内核中使用 writealloc 缓存策略是否存在架构上的原因?我们可以将其更改为写回缓存策略吗?
内核启动日志:
[0.000000] 为 SMP 强制写入分配缓存策略
[0.000000]内存策略:数据缓存writealloc
【问题讨论】:
-
你为什么要'回写'?你有一些硬件问题吗?有一些参数(CP15 配置)可以使大的连续写入绕过缓存。例如,一个大的
memset()。这是您不希望写入分配的唯一工作负载;除非你有一些硬件错误......所以只是说你的愿望似乎被误导了,因为你没有解释你为什么要这样做。即,即使你可以,这似乎是个坏主意。 -
使用 writealloc,memcpy 比写回缓存策略更慢。这可能使 UP 比 SMP 更快地执行内存操作。不过SMP应该更厉害了……这不是出乎意料吗?
-
memcpy就像memset,这就是我提到的。请参阅:memcpy with write cache 来自 embedded.com。差异并不那么显着(10-15% 最坏的情况),然后你必须永远不要使用复制的目标。还有其他工作负载可以使写入分配受益。我相信如果您愿意,您仍然可以请求不可缓存的内存。你只是不能告诉内核使用它。
标签: linux-kernel arm