【发布时间】:2016-04-28 12:07:29
【问题描述】:
我有一个文件描述符,我总是向其中写入两个浮点数。请注意,我总是在向文件写入任何内容之前调用 rewind(),这意味着我总是在写入第一行。基本上,将其视为在文件中维护“当前状态”。写完后我也会调用 fflush() 。我在我的应用程序中遇到延迟峰值,当我检查时,我发现 fflush() 通常需要大约 2-3 微秒(是的,我有一个邪恶的快速服务器),但在其他时间(大约 6-7“正常写入-flush 周期”)我看到所花费的时间增加了数千次(15000+ 微秒)
你能告诉我在这种情况下我必须检查什么吗?如何修复/调试此问题?
【问题讨论】:
-
嗯,您正在写入某种类型的存储,可能(您还没有说过)HDD。我能想到的两种本地持久存储机制(HDD 和 SSD)都将根据它们还需要做什么而具有不同的响应时间。 150000 微秒仍然是一个非常短的时间。
-
使用内存映射文件有帮助吗?
-
@Wildling 使用内存映射文件有帮助吗? 从 Linux Torvalds 阅读 this post。
mmap()不是某种让一切变得更快的魔法。