我有一个应用程序正在执行大量文件操作。它执行大量文件读写操作(大量小文件)。我们发现一些文件随机混在一起。文件 1 的输出将发送到文件 2,依此类推。我们已验证的代码不存在并发问题。它在除 AIX 之外的所有其他平台上均可运行。
在 Solaris 中我们遇到了这个问题,但启用 directio 后这个问题就解决了。
在 AIX 中我们尝试启用 dio,但问题仍然存在。
- 操作系统:AIX 6.1.6.3
- 架构:Power 6;
- 8 芯 SMT 型
- 存储:SAN
- 文件系统:JFS2
谢谢 Nikesh PL
答案1
嗯,它并不是在所有平台上都有效。在 Solaris 上它不起作用,除非您启用直接 I/O。直接 I/O 强制同步写入并禁用预读,因此您正在更改 I/O 的时间,可能会掩盖根本原因。
你可以尝试调试你的应用,这可能很困难,也很耗时,或者你也可以直接贴个创可贴在 AIX 上启用直接 I/O也。