在本文中中,光脉冲的clwb和ntstore的8字节顺序写入分别有90 is和62 is的延迟,顺序读取为169 is。
但在我用Intel 5218 about进行的测试中,clwb约为700 is,ntstore约为1200 is。当然,我的测试方法和论文是有区别的,但是结果太糟糕了,这是不合理的。我的测试更接近实际使用。
在测试过程中,CPU的iMC或WC缓冲区的写入待定队列是否成为瓶颈,导致阻塞,所测量的延迟是不准确的?如果是这样的话,是否有检测它的工具?
#include "libpmem.h"
#include "stdio.h"
#include "x86intrin.h"
//gcc aep_test.c -o aep_test -O3 -mclwb -lpmem
int main()
{
size_t mapped_len;
char str[32];
int is_pmem;
sprintf(str, "/mnt/pmem/pmmap_file_1");
int64_t *p = pmem_map_file(str, 4096 * 1024 * 128, PMEM_FILE_CREATE, 0666, &mapped_len, &is_pmem);
if (p == NULL)
{
printf("map file fail!");
exit(1);
}
if (!is_pmem)
{
printf("map file fail!");
exit(1);
}
struct timeval start;
struct timeval end;
unsigned long diff;
int loop_num = 10000;
_mm_mfence();
gettimeofday(&start, NULL);
for (int i = 0; i < loop_num; i++)
{
p[i] = 0x2222;
_mm_clwb(p + i);
// _mm_stream_si64(p + i, 0x2222);
_mm_sfence();
}
gettimeofday(&end, NULL);
diff = 1000000 * (end.tv_sec - start.tv_sec) + end.tv_usec - start.tv_usec;
printf("Total time is %ld us\n", diff);
printf("Latency is %ld ns\n", diff * 1000 / loop_num);
return 0;
}任何帮助或纠正都是非常感谢的!
发布于 2022-04-08 08:38:21
附于4.14
问:用来检测缓冲区WPQ上可能的瓶颈的工具?
答:当PM处于空闲状态时,您可以获得一个基线,并使用这个基线来指示可能的瓶颈。
工具:
1 Chen,Youmin,等。Flatstore:用于持久内存的高效日志结构密钥-值存储引擎。第二十五届编程语言和操作系统建筑支持国际会议记录。2020年。
2井村、佐石和吉田惠二。混合存储系统中进程间干扰的分析。亚洲-太平洋区域高性能计算国际会议记录讲习班。2020年。
https://stackoverflow.com/questions/66851732
复制相似问题