lmbench如何用C测量L1和L2caching的等待时间? (在手册中不能理解说明)

我想了解lmbench如何测量L1,L2和主内存的延迟。

lat_mem_rd的手册页提到了这个方法,但是我不清楚:

基准运行为两个嵌套循环。 外部循环是步幅大小。 内部循环是数组大小。 对于每个arrays大小,基准testing会创build一个指向前进一步的指针环。 遍历数组是由

p =(char **)* p;

在for循环中(for循环的头部不重要;循环是展开循环1000加载长)。 循环完成一百万次加载后停止。

你如何“创造一个指向前进的指针环”? 这是不是意味着如果stride的大小是128字节,你需要build立一个链接列表,每个节点与前一个节点相距128字节? malloc只是返回一些随机的免费内存,所以我不明白在C中是如何可能的。而在这段代码中,我总是会遇到分段错误。 (testing过了,p应该用什么初始化?)

SO( 链接 )上有一个类似的线程,第一个答案讨论了这个问题,但是它没有提到如何使用链表来描述链表。 我也看了看源代码本身(lat_mem_rd.c),但是也不能理解这个。

任何帮助表示赞赏。

您可以分配大块内存,然后将链接列表的元素分配到您想要的任何边界的分配块中。