Linux 下如何关闭 CPU cache?

2020-07-18 11:25:02 +08:00
 vcfghtyjc

为了避免由于数据在不同层的 cache 所带来的运行时间的差异,我想要关闭 CPU cache,让所有数据都存在 DRAM 里。稍微搜索了一下,好像没什么清晰的解决方案,想问问有没有大神知道如何做。

谢谢!

10704 次点击
所在节点    Linux
108 条回复
yangbonis
2020-07-18 11:27:36 +08:00
cpu 没有提供这个功能,cache 就是 cpu 的一部分,下电就关了
venster
2020-07-18 11:31:21 +08:00
Q:北京到上海的高铁太密集,场站员工抱怨压力大
A:没问题,这就把高铁停了
dalabenba
2020-07-18 11:33:46 +08:00
/proc/iomem 获取分布信息,/proc/mtrr 改
nightwitch
2020-07-18 11:35:06 +08:00
cpu cache 是 cpu 的组成元件,这还能关掉的? 你先说清楚是什么问题导致你有这个需求,大伙再来讨论解决方案
nightwitch
2020-07-18 11:42:31 +08:00
gcc 内置的__builtin___clear_cache,__builtin_prefetch 以及 Linux 的 cacheflush 可能有点用。
dalabenba
2020-07-18 11:45:34 +08:00
@dalabenba 当然你要排除是不是 cache 的影响速度的话应该用 perf 去看 cache miss 率而不是关 cache,毕竟代码都是越快越好
vcfghtyjc
2020-07-18 11:50:24 +08:00
@dalabenba 谢谢。能否详细说一下怎么使用吗?我通过 `/proc/iomem` 看到了各个硬件设备的内存,但是没看到 cpu 的 cache 。
vcfghtyjc
2020-07-18 11:51:29 +08:00
@dalabenba 因为系统里还有其他影响因素,我是希望先关掉 cache,避免由于 locality 带来的干扰。
vk42
2020-07-18 11:57:35 +08:00
赞成#6,除了调试 CPU bug 的基本没见过关 cache 来做 performance profiling 的,你只是没找到对的工具和方法。
现在 CPU 关 cache 非常 tricky,以前老型号还有能在 BIOS 里全局关的
misaka19000
2020-07-18 11:58:31 +08:00
你能保证操作系统在进程 schedule 的进程运行时间一致吗,如果这个都保证不了就先不要考虑 CPU 的 cache 了
Nich0la5
2020-07-18 12:04:33 +08:00
这是什么魔鬼需求还需要关 cache 的?
wnpllrzodiac
2020-07-18 12:05:48 +08:00
cache 速度比内存都快,没了 cache cpu 就变渣渣了啊
Juszoe
2020-07-18 12:22:42 +08:00
关闭 cache,这速度不得倒退十几年
em70
2020-07-18 12:26:33 +08:00
说得好像你知道 CPU cache 里存的是啥一样
kokutou
2020-07-18 12:32:48 +08:00
没了 cache,开机怕是都要 2 小时
tempdban
2020-07-18 12:45:34 +08:00
兄弟,就算是关闭了广义的 cache,cpu 里边的另一些 cache 你是永远关不掉的,如果你有性能优化有关的问题,可以尝试联系我
nevin47
2020-07-18 13:04:18 +08:00
LZ 你要知道,当前主流 CPU 的 architecture 决定了数据本来就是层层透过 cache 到达 cpu 里面的,完全 disable cacheline 是几乎不可能的,不过实在想这么玩,可以魔改一下 mm,让你所有拿到的内存都标记上 nocache,这样每次内存语义都会从内存同步一次
aijam
2020-07-18 13:10:04 +08:00
realpg
2020-07-18 13:12:18 +08:00
真是鸟大了啥林子都见过了……
reus
2020-07-18 13:17:34 +08:00

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/691081

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX