c - 用于管理共享映射文件的库或工具

标签 c linux shared-memory

免责声明:这可能是一个研究问题,因为我找不到我要找的东西,而且它非常具体。

问题:我有一个自定义搜索应用程序,需要读取 100K 到 10M 的文件,每个文件的大小在 0.01MB 到大约 10.0MB 之间。每个文件包含一个数组,可以通过 mmap 直接加载为数组。我正在寻找一种解决方案,可以在需要文件之前将文件预取到 RAM 中,如果系统内存已满,则弹出已经处理过的文件。

我知道这听起来很像是操作系统内存管理和类似 memcached 的组合。我实际上正在寻找的是像 memcached 这样的东西,它不返回键的字符串或值,而是返回所选数组开头的地址。此外,(这是一个不同的主题)我希望能够管理共享内存,使 CPU 内核和 RAM 之间的距离在 NUMA 机器上最短。<​​/p>

我的问题是:“这样的工具/库是否已经存在?”

最佳答案

您的问题与this one有关

我不确定您是否需要查找图书馆。您只需要了解如何有效地使用系统调用。

我相信readahead系统调用可以帮助你。

关于c - 用于管理共享映射文件的库或工具,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8067861/

相关文章:

c - 如何将 void** 数组(函数的返回值)分配给变量?

c - 写入共享内存段导致段错误

c - 调试strlen时Eclipse报错

c++ - 全局(静态编译)变量位于何处?

linux - 在 bash 中运行多个进程

c++ - 我怎样才能让我的 linux 服务触发我的信号?

c++ - 如何从 C++ 程序获取 Linux 上的主板 ID

c - 在C中使用共享内存

python - 在 celery 任务中共享巨大的分类器对象

c - 为什么 gcc 在读取时保留被调用者保存寄存器?