From: Benjamin LaHaise The biovec default mempool limit of 256 entries results in over 3MB of RAM being permanently pinned, even on systems with only 128MB of RAM. Since mempool tries to allocate from the system pool first, it makes sense to reduce the size of the mempool fallbacks to a more reasonable limit of 1-5 entries -- enough for the system to be able to make progress even under load. Signed-off-by: Benjamin LaHaise Cc: Jens Axboe Cc: Matt Mackall Signed-off-by: Andrew Morton --- fs/bio.c | 8 ++++---- 1 files changed, 4 insertions(+), 4 deletions(-) diff -puN fs/bio.c~reduce-size-of-bio-mempools fs/bio.c --- 25/fs/bio.c~reduce-size-of-bio-mempools Fri Jan 13 17:54:04 2006 +++ 25-akpm/fs/bio.c Fri Jan 13 17:54:04 2006 @@ -1246,11 +1246,11 @@ static int __init init_bio(void) scale = 4; /* - * scale number of entries + * Limit number of entries reserved -- mempools are only used when + * the system is completely unable to allocate memory, so we only + * need enough to make progress. */ - bvec_pool_entries = megabytes * 2; - if (bvec_pool_entries > 256) - bvec_pool_entries = 256; + bvec_pool_entries = 1 + scale; fs_bio_set = bioset_create(BIO_POOL_SIZE, bvec_pool_entries, scale); if (!fs_bio_set) _