Commit 4646a8f3 authored by Tom Lane's avatar Tom Lane

Reduce the minimum allocable chunk size to 8 bytes (from 16). Now that

ListCells are only 8 bytes instead of 12 (on 4-byte-pointer machines
anyway), it's worth maintaining a separate freelist for 8-byte objects.
Remembering that alloc chunks carry 8 bytes of overhead, this should
reduce the net storage requirement for a long List by about a third.
parent 0858ed20
...@@ -11,7 +11,7 @@ ...@@ -11,7 +11,7 @@
* Portions Copyright (c) 1994, Regents of the University of California * Portions Copyright (c) 1994, Regents of the University of California
* *
* IDENTIFICATION * IDENTIFICATION
* $PostgreSQL: pgsql/src/backend/utils/mmgr/aset.c,v 1.54 2003/11/29 19:52:04 pgsql Exp $ * $PostgreSQL: pgsql/src/backend/utils/mmgr/aset.c,v 1.55 2004/05/26 19:44:15 tgl Exp $
* *
* NOTE: * NOTE:
* This is a new (Feb. 05, 1999) implementation of the allocation set * This is a new (Feb. 05, 1999) implementation of the allocation set
...@@ -85,7 +85,7 @@ ...@@ -85,7 +85,7 @@
* CAUTION: ALLOC_MINBITS must be large enough so that * CAUTION: ALLOC_MINBITS must be large enough so that
* 1<<ALLOC_MINBITS is at least MAXALIGN, * 1<<ALLOC_MINBITS is at least MAXALIGN,
* or we may fail to align the smallest chunks adequately. * or we may fail to align the smallest chunks adequately.
* 16-byte alignment is enough on all currently known machines. * 8-byte alignment is enough on all currently known machines.
* *
* With the current parameters, request sizes up to 8K are treated as chunks, * With the current parameters, request sizes up to 8K are treated as chunks,
* larger requests go into dedicated blocks. Change ALLOCSET_NUM_FREELISTS * larger requests go into dedicated blocks. Change ALLOCSET_NUM_FREELISTS
...@@ -93,8 +93,8 @@ ...@@ -93,8 +93,8 @@
*-------------------- *--------------------
*/ */
#define ALLOC_MINBITS 4 /* smallest chunk size is 16 bytes */ #define ALLOC_MINBITS 3 /* smallest chunk size is 8 bytes */
#define ALLOCSET_NUM_FREELISTS 10 #define ALLOCSET_NUM_FREELISTS 11
#define ALLOC_CHUNK_LIMIT (1 << (ALLOCSET_NUM_FREELISTS-1+ALLOC_MINBITS)) #define ALLOC_CHUNK_LIMIT (1 << (ALLOCSET_NUM_FREELISTS-1+ALLOC_MINBITS))
/* Size of largest chunk that we use a fixed size for */ /* Size of largest chunk that we use a fixed size for */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment