【发布时间】:2011-06-26 00:04:41
【问题描述】:
我有一个文件,a.dat,它是 1GB 并且驻留在磁盘上。出于性能原因,我重用此文件并根据需要简单地覆盖其内容,而不是创建一个新文件并让它增长(每个增长操作都必须在 inode 中更新其大小)。
我试图挤出更多的性能,并在手册页中搜索了 open 和 mount 以试图找出文件的 mtime 和 ctime 何时更新。据我了解,每次更改文件内容时,都会更新 mtime 和/或 ctime。 xfs 是这样工作的吗?
如果是这样,有没有办法在 linux 上禁用它?我不关心 mtime 和 ctime 并且宁愿不承担每次写入操作更新它们的成本。
最终,我将完全摆脱文件系统并直接写入设备,但同时我希望有一种方法可以使用文件系统来做到这一点。
根据回答进行编辑
为澄清起见,我正在写入 SSD,并且从 SSD 中挤出我可以执行的所有操作非常重要。 SSD 理论上每秒可以处理大约 25K 次操作,这些操作对我来说都很重要。除了写入我的文件之外,我不希望它们中的任何一个被浪费在任何事情上。在那张纸条上,实际上我的磁盘上有 200 个 1GB 文件正在写入。我试图用上面的问题来简化问题。
此外,每次写入都必须是同步的,并且我的程序将不会继续,直到我确定这些位在磁盘上(这是可能的)。但我认为这个注释与问题无关。
【问题讨论】:
-
祝你好运!但是为什么这被标记为 C++?
-
我正在使用 c/c++ 进行编码。我想它不一定特定于任何语言,但 c 解决方案将是最有用的。
标签: linux filesystems xfs