mirror of
https://github.com/postgres/postgres.git
synced 2025-05-01 01:04:50 +03:00
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.
This commit is contained in:
parent
0858ed20d2
commit
4646a8f32f
@ -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 @@
|
|||||||
* 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 @@
|
|||||||
*--------------------
|
*--------------------
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#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 */
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user