我有一个过程,比如说“A”,它的工作是将三个 4 GB 文件复制到一个临时文件中,然后通过覆盖现有文件来重命名它。“A”每 15 分钟执行一次。CentOS 版本为 2.6.32-504.23.4
boost::filesystem::copy_file()
rename()
现在我确定 copy_file() 只需要 5 秒,因为我有打印时间戳的代码。然而,似乎整个操作与 rename() 一起花费了 3 分钟以上。
所以我的问题是,文件的内容是在什么时候从内存写入磁盘的?我没有观察到复制的文件在任何时候都具有零大小。ext4 挂载带有默认选项。我之间也没有任何其他调用,例如 fsync() 。