madvise管理内存映射文件

时间:2013-04-04 20:52:22

标签: c mmap

我有一个程序来处理由大量(300+)大容量内存(40MB +)映射文件组成的大型数据集。虽然它们是按顺序访问的,但所有文件都需要在一起。目前我是内存映射文件然后使用madviseMADV_SEQUENTIAL,因为我不希望这个东西比它需要更多的内存猪(没有任何{{1}消费成为一个问题)。程序运行速度比系统的磁盘低得多(比50倍慢)的问题表明它应该,并且变得比线性更快。因为涉及的文件数量增加了。处理100个文件比300个文件快10倍以上,尽管只有3倍的数据。我怀疑每次超过4kb页面时内存映射文件都会产生页面错误,净结果磁盘查找时间大于磁盘传输时间。

任何人都可以想到一种更好的方式,而不是经常使用madvise madviseMADV_WILLNEED,如果这是最好的方法,那么任何关于向前看多远的想法?

0 个答案:

没有答案