我目前正在进行b +树与普通平衡树的性能测试,对C中的磁盘文件操作(可能是一种dbms)进行性能测试.预计b b +树比bbst快,因为它执行的磁盘数量较少I/O操作.但我发现,经过一些测试,系统正在对磁盘文件进行缓存,文件完全保存在内存中(我的内存大小为32GB)!b + tree绝不会比bbst更快,因为不会执行磁盘I/O. 所以我想知道是否有办法禁用系统缓存,以便b +树将在perf中获胜?我试过用O_DIRECT | O_SYNC打开文件:
int fd = Open("sb.dat", O_DIRECT|O_SYNC|O_CREAT|O_RDWR, S_IRWXU|S_IRWXG|S_IRWXO);
Run Code Online (Sandbox Code Playgroud)
但它似乎不起作用.
以下是getrusage()提供的一些信息
页面回收:1359821
页面错误:9
据我所知,即使您使用,内核仍然会缓存磁盘上的块O_DIRECT
,您可以删除内核缓存,但这仅在第一次有效:
echo 3 > /proc/sys/vm/drop_caches
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
585 次 |
最近记录: |