posix上的延迟读取()

我们有一个非常对延迟敏感的应用程序,因为读取的延迟峰值非常非常糟糕。 我已经测试了XFS和ext4,并将O_ASYNC写入文件,然后fdatasync()结束时可能会导致1秒或更长的读取延迟峰值! 我然后尝试了O_SYNC并且我获得了更稳定的读取延迟,但写入文件非常慢。 因此,我尝试编写O_ASYNC并同步写入文件的每5兆字节,其快速和读取延迟也相当稳定。 但是,30分钟后,我仍然可以获得需要一秒钟或更长时间的读数。 如果你在Linux上构建了对延迟敏感的应用程序,你是如何处理文件系统的,或者你根本不使用它并将设备安装为RAW设备?     
已邀请:
文件系统总是会增加少量延迟,因此对于真正对延迟敏感的应用程序,我会考虑使用原始设备绕过文件系统,或者使用O_DIRECT绕过操作系统缓存打开文件。 SSD存储延迟的其他技巧包括: 通过从多个线程读取/写入,使用现代SSD中的固有并行性。延迟不会减少,但如果真正的问题是IOPS,这会有所帮助。 检查SSD上文件系统的对齐情况。如果做得不对,那么性能提高了一半,延迟时间加倍。 检查磁盘调度算法。 Linux“noop”调度程序通常是基于SSD的存储的最佳选择。 使用更好的SSD硬件,例如基于PCIe的SSD通常可提供更低的延迟 那说:一秒钟的读取时间听起来不对。负载/利用率如此之高以至于硬件根本无法应对它,更多/更好的硬件将是最佳解决方案或其他东西是非常错误的。     

要回复问题请先登录注册