在 C 文件 I/O 中,该O_DIRECT
标志可用于最小化正在open()
编辑的文件的缓存影响。我知道这不是 POSIX 功能,自 2.4.10 版以来一直存在于 Linux 内核中,并且 Linus 通常反对该接口。在 NetBSD 下,它似乎像宣传的那样工作。示例调用:
int fd = 打开(文件名,O_DIRECT);
我正在尝试编写一些低级磁盘基准测试实用程序,并且使用O_DIRECT
看起来是测量磁盘和驱动器性能的潜在好方法,而不受操作系统文件系统/块缓存的影响。理想情况下,我希望能够在 Linux、Windows(Cygwin 可以)、Mac OS X 和 BSD 系统上运行基准测试。O_DIRECT
就基准测试的可移植性和可靠性而言,绕过操作系统磁盘缓存的最佳方法是什么?有替代品吗?