愚蠢的内存延迟和TLB测试器
注意!这是一个快速的修改,代码本身包含一些硬编码的常量,您应该查看并可能更改以匹配您的机器。
除了代码本身中的可调整值外,Makefile 中还包含其他硬编码的值,其中"make run"脚本将测试内存大小范围从 4 KB 到 256 MB,并使用了 64 字节的硬编码步长。为了获得有意义的数值,步长通常至少要等于缓存行的大小,尽管在具有多个不同缓存行大小的情况下,您可能只需使用不同的步长,并观察其对分数的影响。
请注意,在执行随机列表案例时仍然使用"步长",但由于最终结果将是追踪一个随机链,因此在内存中它不像只是链条条目粒度那样具有"步长"。您可以使用奇数步长值来观察不对齐加载如何改变图像,例如。 另外,用于测试的实际内存大小取决于您拥有的缓存量,但也取决于您拥有的内存量。 要实际获得大页(使用"-H"标志时),不仅需要您的架构支持,还需要有足够的可用内存,才能让操作系统在第一次分配大页。
因此,如果您在使用 384MB L4 缓存的 s390 上运行,则应将最大内存区域大小增加到至少 1G,但还应将步长增加到 256,以匹配缓存行大小。此外,请注意,使用 MADV_HUGEPAGE 显然是 Linux 特有的,但使用 madvise() 表示它是建议性的,而不是某个硬性要求,并且根据您的情况,您可能根本不会看到 hugepage 案例。例如, MADV_HUGEPAGE 显然取决于您的内核是否支持它,而 n
暂无开放 Issues,或尚未同步最近议题。