I was poking around in the allocator code out of curiosity after reading the thread 'Improving the memory allocator', and noticed the following in spell.c:
/* * "Compact" palloc: allocate without extra palloc overhead. * * Since we have no need to free the ispell data items individually, there's * not much value in the per-chunk overhead normally consumed by palloc. * Getting rid of it is helpful since ispell can allocate a lot of small nodes. * * We currently pre-zero all data allocated this way, even though some of it * doesn't need that. The cpalloc and cpalloc0 macros are just documentation * to indicate which allocations actually require zeroing. */ #define COMPACT_ALLOC_CHUNK 8192 /* must be > aset.c's allocChunkLimit */ #define COMPACT_MAX_REQ 1024 /* must be < COMPACT_ALLOC_CHUNK */ In aset.c, we have, #define ALLOC_MINBITS 3 /* smallest chunk size is 8 bytes */ #define ALLOCSET_NUM_FREELISTS 11 #define ALLOC_CHUNK_LIMIT (1 << (ALLOCSET_NUM_FREELISTS-1+ALLOC_MINBITS)) 1 << 13 gives 8192 if my math is correct. Note the comment, 'must be > aset.c's allocChunkLimit'. Is the comment wrong or the assumption wrong? merlin -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers