我遇到一个问题,它似乎触及了我读到的有关 tmpfs 的所有限制。我非常乐意听到任何人对可能的解决方案的评论。
我有一个应用程序,它在运行时会生成一个大文件。这个文件可以增长到几 GB。
在程序执行期间,对此文件的 I/O 操作非常密集,任何管道都会对正在运行的应用程序产生重大的性能影响。
为了尝试加快速度,我创建了一个 tmpfs,它运行良好,性能得到了显著改善。但是,当 tmpfs 耗尽空间(~50%)物理 RAM 使用率时,应用程序会崩溃。这并不奇怪。
只有在创建数据的进程完成时,才需要应用程序生成的数据。因此,我需要的是一个基于 RAM 的文件系统,它将填充来自应用程序的数据。当这个基于 RAM 的文件系统已满时,它会将基于 RAM 的 tmpfs 的完整内容推送到物理磁盘,完全释放 RAM,然后继续接受来自应用程序的数据,再次填充 RAM。从而在应用程序运行的绝大多数时间内保持最小的 I/O 管道延迟。
当该过程完成时,我希望找到一个部分存在于磁盘上、部分存在于 RAM 中的单个大文件。
有什么想法吗?