I / O基准测试:在较小的文件上编写大文件与使用fsync

时间:2011-07-27 23:42:14

标签: c caching io

我正在使用I / O基准来测量系统的I / O性能。基准测试使用各种i / o原语(写入,pwrite,mmap等)将文件写入磁盘并报告性能。该基准测试的文档指出,为了避免由于缓存的影响而看到不切实际的结果,应该编写一个至少等于系统主内存大小的文件。

我的问题是,如果你在程序中使用fsync,它是否应该避免缓存的影响,因为它会将未写入的i / o缓冲区刷新到磁盘上?我问这是因为我们的系统有64GB主内存,每次写入64GB文件,因为我们的实验需要很长时间。如果我可以写一个像4G或8G这样的小文件,测试会更快。

我在示例程序中使用了fsync并验证了在使用fsync时通常看不到缓存效果,但我很想知道人们要说什么,以及为什么基准编写者不会这样做。

提前致谢。

1 个答案:

答案 0 :(得分:1)

你是对的; fsync()(或甚至fdatasync())在数据写入磁盘之前不应返回。

您描述的基准听起来并不是特别复杂。