Wil*_*ill 9 linux performance ramdisk
我有一个程序对文件系统的影响很大,随机读取和写入一组工作文件。这些文件总共有几 GB 的大小,但我可以腾出 RAM 来将它们大部分保存在内存中。该程序运行的机器通常是 Ubuntu Linux 机器。
有没有办法将文件系统配置为具有非常大的缓存,甚至可以缓存写入以便稍后访问磁盘?我了解断电等问题,并准备接受这一点。抛开崩溃,在正常操作中,写入最终应该到达磁盘!
或者有没有办法创建一个可以直写到真实磁盘的 RAM 磁盘?
小智 8
考虑使用使用 fast-and-loose 挂载选项的 ext4 文件系统:
noatime,data=writeback,nobh,barrier=0,commit=300
Run Code Online (Sandbox Code Playgroud)
推迟将数据从缓存写回物理磁盘。
除此之外,您可以使用aufs在常规文件系统之上联合安装 tmpfs 文件系统,完成所有写入,然后将 tmpfs 合并回真正的文件系统。
小智 6
您是否看到大量 IO 等待,表明现有缓冲区未满足读取和写入请求?正如其他人所指出的,Linux 非常擅长为缓冲区提供备用 RAM,因此您应该先检查一下。
如果您没有看到 IO 等待,那么您的性能问题(您甚至有问题吗?您的问题没有说)可能是由于来自许多小程序启动的 IO 操作的内核上下文切换造成的。在这种情况下,您可以通过重写应用程序以使用内存映射文件来获得显着的性能提升。但这对 StackOverflow 来说更像是一个问题。