linux - 直写 RAM 磁盘,还是文件系统的海量缓存?

标签 linux optimization filesystems ramdisk

<分区>

我有一个程序非常频繁地访问文件系统,读取和写入一组工作文件。这些文件的大小为几千兆字节,但还没有大到无法放在 RAM 磁盘上。该程序运行的机器通常是 Ubuntu Linux 盒子。

有没有办法将文件管理器配置为拥有非常非常大的缓存,甚至缓存写入以便稍后写入磁盘?

或者有没有办法创建一个 RAM 磁盘,它可以写入真实磁盘?

最佳答案

默认情况下,Linux 将使用空闲 RAM(几乎全部)来缓存磁盘访问,并延迟写入。内核用来决定缓存策略的启发式算法并不完美,但在特定情况下击败它们并不容易。此外,在日志文件系统(即现在所有的默认文件系统)上,对磁盘的实际写入将以一种弹性崩溃的方式执行;这意味着一些开销。您可能想尝试摆弄文件系统选项。例如,对于 ext3,尝试使用 data=writeback 或什至 async 挂载(这些选项可能会提高文件系统性能,但代价是降低对崩溃)。此外,使用 noatime 来减少文件系统事件。

以编程方式,您可能还希望通过内存映射(使用 mmap)执行磁盘访问。这需要一些动手操作,但它可以更好地控制数据管理和优化。

关于linux - 直写 RAM 磁盘,还是文件系统的海量缓存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2282276/

相关文章:

c# - 如何指定 createfilew 函数获取未缓存的结果?

python - 如何循环遍历文件并在 Python 中重命名它们

linux - RStudio 服务器导出功能背后的代码

c++ - libstdc++ - 不使用 qmake 静态链接

具有较小学习曲线的 C++ 图形 API - linux

algorithm - 优化! - 它是什么?它是如何完成的?

java - 三元运算符是否比 Java 中的 "if"条件快

c++ - 浮点运算优化导致 Visual C++ 出现罕见且奇怪的行为

在 C 中创建自己的 FILE* 指针?

linux - 从另一个 screen session 中启动 screen session