diff options
Diffstat (limited to 'src/backend/utils')
-rw-r--r-- | src/backend/utils/cache/relcache.c | 20 | ||||
-rw-r--r-- | src/backend/utils/mmgr/aset.c | 26 | ||||
-rw-r--r-- | src/backend/utils/mmgr/mcxt.c | 4 |
3 files changed, 33 insertions, 17 deletions
diff --git a/src/backend/utils/cache/relcache.c b/src/backend/utils/cache/relcache.c index 38c2c5016ef..87992769e99 100644 --- a/src/backend/utils/cache/relcache.c +++ b/src/backend/utils/cache/relcache.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/utils/cache/relcache.c,v 1.181 2002/11/15 17:18:49 tgl Exp $ + * $Header: /cvsroot/pgsql/src/backend/utils/cache/relcache.c,v 1.182 2002/12/15 21:01:34 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -647,9 +647,9 @@ RelationBuildRuleLock(Relation relation) */ rulescxt = AllocSetContextCreate(CacheMemoryContext, RelationGetRelationName(relation), - 0, /* minsize */ - 1024, /* initsize */ - 1024); /* maxsize */ + ALLOCSET_SMALL_MINSIZE, + ALLOCSET_SMALL_INITSIZE, + ALLOCSET_SMALL_MAXSIZE); relation->rd_rulescxt = rulescxt; /* @@ -994,9 +994,9 @@ RelationInitIndexAccessInfo(Relation relation) */ indexcxt = AllocSetContextCreate(CacheMemoryContext, RelationGetRelationName(relation), - 0, /* minsize */ - 512, /* initsize */ - 1024); /* maxsize */ + ALLOCSET_SMALL_MINSIZE, + ALLOCSET_SMALL_INITSIZE, + ALLOCSET_SMALL_MAXSIZE); relation->rd_indexcxt = indexcxt; /* @@ -2851,9 +2851,9 @@ load_relcache_init_file(void) */ indexcxt = AllocSetContextCreate(CacheMemoryContext, RelationGetRelationName(rel), - 0, /* minsize */ - 512, /* initsize */ - 1024); /* maxsize */ + ALLOCSET_SMALL_MINSIZE, + ALLOCSET_SMALL_INITSIZE, + ALLOCSET_SMALL_MAXSIZE); rel->rd_indexcxt = indexcxt; /* next, read the index strategy map */ diff --git a/src/backend/utils/mmgr/aset.c b/src/backend/utils/mmgr/aset.c index bafe9153e82..e210e42049a 100644 --- a/src/backend/utils/mmgr/aset.c +++ b/src/backend/utils/mmgr/aset.c @@ -11,7 +11,7 @@ * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/utils/mmgr/aset.c,v 1.48 2002/09/04 20:31:33 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/utils/mmgr/aset.c,v 1.49 2002/12/15 21:01:34 tgl Exp $ * * NOTE: * This is a new (Feb. 05, 1999) implementation of the allocation set @@ -371,10 +371,11 @@ AllocSetInit(MemoryContext context) * Frees all memory which is allocated in the given set. * * Actually, this routine has some discretion about what to do. - * It should mark all allocated chunks freed, but it need not - * necessarily give back all the resources the set owns. Our - * actual implementation is that we hang on to any "keeper" - * block specified for the set. + * It should mark all allocated chunks freed, but it need not necessarily + * give back all the resources the set owns. Our actual implementation is + * that we hang onto any "keeper" block specified for the set. In this way, + * we don't thrash malloc() when a context is repeatedly reset after small + * allocations, which is typical behavior for per-tuple contexts. */ static void AllocSetReset(MemoryContext context) @@ -697,6 +698,21 @@ AllocSetAlloc(MemoryContext context, Size size) block->freeptr = ((char *) block) + ALLOC_BLOCKHDRSZ; block->endptr = ((char *) block) + blksize; + /* + * If this is the first block of the set, make it the "keeper" block. + * Formerly, a keeper block could only be created during context + * creation, but allowing it to happen here lets us have fast reset + * cycling even for contexts created with minContextSize = 0; that + * way we don't have to force space to be allocated in contexts that + * might never need any space. Don't mark an oversize block as + * a keeper, however. + */ + if (set->blocks == NULL && blksize == set->initBlockSize) + { + Assert(set->keeper == NULL); + set->keeper = block; + } + block->next = set->blocks; set->blocks = block; } diff --git a/src/backend/utils/mmgr/mcxt.c b/src/backend/utils/mmgr/mcxt.c index 313a6ad56dd..9ce0c4ca72f 100644 --- a/src/backend/utils/mmgr/mcxt.c +++ b/src/backend/utils/mmgr/mcxt.c @@ -14,7 +14,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/utils/mmgr/mcxt.c,v 1.36 2002/11/13 00:37:06 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/utils/mmgr/mcxt.c,v 1.37 2002/12/15 21:01:34 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -80,7 +80,7 @@ MemoryContextInit(void) */ TopMemoryContext = AllocSetContextCreate((MemoryContext) NULL, "TopMemoryContext", - 8 * 1024, + 0, 8 * 1024, 8 * 1024); |