Re: Large writable variables
Tom Lane <tgl@sss.pgh.pa.us>
Attachments
- formatting-shave-bits.patch (text/x-diff) patch
I wrote: > Andres Freund <andres@anarazel.de> writes: >> top unitialized allocations: >> 0000000008435040 0000000000085280 b DCHCache >> 0000000008391168 0000000000043840 b NUMCache > Here's a patch to improve that situation. Hm, looking at that more closely, there's a problem with the idea of allocating the cache slots one-at-a-time. Currently, sizeof(DCHCacheEntry) and sizeof(NUMCacheEntry) are each just a bit more than a power of 2, which would cause palloc to waste nearly 50% of the allocation it makes for them. We could forget the one-at-a-time idea and just allocate the whole array on first use, but I feel like that's probably not a good answer. I'm inclined to instead reduce DCH_CACHE_SIZE and NUM_CACHE_SIZE enough to make the structs just less than powers of 2 instead of just more --- AFAICS, both of those numbers were picked out of the air, and so there's no reason not to pick a different number out of the air. Also, I noticed that the biggest part of those structs are arrays of FormatNode, which has been designed with complete lack of thought about size or padding issues. We can very easily cut it in half on 64-bit machines. The attached patch does both of those things. It's independent of the other one but is important to make that one efficient. regards, tom lane
Commits
-
Apply unconstify() in more places
- 0a8590b2a09e 12.0 landed
-
Improve unconstify() documentation
- f2898de98a54 12.0 landed
-
Drop const cast from dlsym() calls
- e6f5d1accd3a 12.0 landed
-
Const-ify a few more large static tables.
- 48d818ede15b 12.0 landed
-
Improve tzparse's handling of TZDEFRULES ("posixrules") zone data.
- fb38d9a2e1ed 9.5.15 landed
- ec5fe7f799a4 9.4.20 landed
- e7eb07f70951 12.0 landed
- db4f9c0258be 11.1 landed
- c776cd47245a 9.3.25 landed
- 312f632005f3 10.6 landed
- 1164389e12b0 9.6.11 landed
-
Avoid statically allocating statement cache in ecpglib/prepare.c.
- e15aae829e3e 12.0 landed
-
Reorder FmgrBuiltin members, saving 25% in size.
- 28d750c0cd5b 12.0 landed
-
Add macro to cast away const without allowing changes to underlying type.
- d1211c63f010 12.0 landed
-
Mark constantly allocated dest receiver as const.
- 93ca02e00560 12.0 landed
-
Avoid statically allocating formatting.c's format string caches.
- fd85e9f78d44 12.0 landed
-
Correct constness of system attributes in heap.c & prerequisites.
- 02a30a09f9e5 12.0 landed
-
Avoid statically allocating gmtsub()'s timezone workspace.
- baa94ebe2cc8 9.3.25 landed
- 5ef71d4bd322 9.6.11 landed
- 27ba589b745f 9.4.20 landed
- 18c725413fad 9.5.15 landed
- d64a54fb9c81 10.6 landed
- d11268237378 11.1 landed
- 3dfef0c519de 12.0 landed
-
Correct constness of a few variables.
- 62649bad831f 12.0 landed
-
Move the replication lag tracker into heap memory.
- e73ca79fc78d 12.0 landed