【问题标题】:create a cache when reading a slow IO device读取慢速 IO 设备时创建缓存
【发布时间】:2021-12-18 19:21:18
【问题描述】:

我每次都需要从位于慢速设备中的文件中读取几部分,所以我想一次读取整个文件,有没有办法做到这一点。请记住,我不想将其读取到 CPU 内存缓冲区,因为我需要调用另一个需要文件路径作为参数的 API,在 API 内部它处理文件的读取/查找,所以似乎我无法通过直接向 API 提供内存地址。

【问题讨论】:

  • 先将文件复制到内存支持的文件系统?
  • 是的,你认为复制/tmp/xxx下的文件是个好主意吗,/tmp下的文件有一些缓存,所以它会比/home/xxx等其他位置更快?
  • 不看你的电脑配置是无法回答的。类型为 tmpfs 的挂载点是内存支持的,因此这是您可以合理获得的最快速度。

标签: c++ linux file caching memory


【解决方案1】:

如果您的目标是速度,那么我会选择mmap(2),它也可以跨上下文共享。

【讨论】:

  • 如果我使用 mmap,那么如何将路径传递给接收文件路径作为参数的 API?
  • @BiaoCao:和你现在一样。诀窍是mmap 强烈建议操作系统将文件内容映射到内存中。由于操作系统无论如何都会在内存中保存文件内容,因此一旦向操作系统询问相同的文件内容,其他进程就会快速获取这些内容。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-11-09
  • 2019-06-27
  • 1970-01-01
  • 2018-10-11
  • 1970-01-01
  • 2015-05-25
  • 2020-09-18
相关资源
最近更新 更多