3

我们有一个对延迟非常敏感的应用程序,从某种意义上说,读取的延迟峰值非常非常糟糕。

我已经测试了 XFS 和 ext4,将 O_ASYNC 写入文件,然后在最后写入 fdatasync() 会导致读取延迟达到 1 秒或更多峰值!

然后我尝试了 O_SYNC,我得到了更稳定的读取延迟,但写入文件非常慢。

因此,我尝试编写 O_ASYNC 并每隔 5 兆字节同步写入文件,它的快速和读取延迟也相当稳定。

但是,30 分钟后,我仍然可以阅读需要一秒钟或更长时间的内容。

如果您在 Linux 上构建对延迟敏感的应用程序,您是如何处理文件系统的,还是根本不使用它并将设备作为 RAW 设备安装?

4

1 回答 1

0

文件系统总是会增加少量延迟,因此对于真正延迟敏感的应用程序,我会考虑通过使用原始设备绕过文件系统或使用 O_DIRECT 打开文件绕过操作系统缓存。

SSD 存储延迟的其他技巧是:

  • 通过从多个线程读取/写入来使用现代 SSD 中固有的并行性。延迟不会减少,但如果真正的问题是 IOPS,这会有所帮助。
  • 检查 SSD 上文件系统的对齐情况。如果这样做不正确,您的性能会减半,延迟会加倍。
  • 检查磁盘调度算法。Linux“noop”调度程序通常最适合基于 SSD 的存储。
  • 使用更好的 SSD 硬件,例如通常提供更低延迟的基于 PCIe 的 SSD

也就是说:从一秒钟开始的阅读时间听起来并不正确。负载/利用率太高以至于硬件根本无法应对,更多/更好的硬件将是最好的解决方案,或者其他东西是非常错误的。

于 2011-10-16T11:11:21.963 回答