Because all pages must go into the cache, data is unnecessarily copied from mmapped regions to cache. Avoid this copying by storing the mmapped regions directly in the cache. First, the cache code needs a clean up clarification of the concept, especially the meaning of the pending list (allocated cache entries whose content is not yet valid). Second, the cache must be able to handle differently sized objects so that it can store individual pages as well as mmapped regions. Last, the cache eviction code must be extended to allow either reusing the read buffer or unmapping the region. Changelog: v3: do not mmap fractional pages v2: add mmapped regions to page cache Petr Tesarik (7): cache: get rid of search loop in cache_add() cache: allow to return a page to the pool cache: do not allocate from the pending list cache: add hit/miss statistics to the final report cache: allocate buffers in one big chunk cache: allow arbitrary size of cache entries cache: store mapped regions directly in the cache cache.c | 81 +++++++++++++++++---------------- cache.h | 16 +++++-- makedumpfile.c | 138 ++++++++++++++++++++++++++++++++++----------------------- 3 files changed, 138 insertions(+), 97 deletions(-) -- 1.8.4.5