mirror of
https://github.com/postgres/postgres.git
synced 2025-09-06 13:46:51 +03:00
Adjust DSM and DSA slot usage constants.
When running a lot of large parallel queries concurrently, or a plan with a lot of separate Gather nodes, it is possible to run out of DSM slots. There are better solutions to these problems requiring architectural redesign work, but for now, let's adjust the constants so that it's more difficult to hit the limit. 1. Previously, a DSA area would create up to four segments at each size before doubling the size. After this commit, it will create only two at each size, so it ramps up faster and therefore needs fewer slots. 2. Previously, the total limit on DSM slots allowed for 2 per connection. Switch to 5 per connection. Also remove an obsolete nearby comment. Author: Thomas Munro Reviewed-by: Robert Haas, Andres Freund Discussion: https://postre.es/m/CA%2BhUKGL6H2BpGbiF7Lj6QiTjTGyTLW_vLR%3DSn2tEBeTcYXiMKw%40mail.gmail.com
This commit is contained in:
@@ -45,13 +45,8 @@
|
||||
|
||||
#define PG_DYNSHMEM_CONTROL_MAGIC 0x9a503d32
|
||||
|
||||
/*
|
||||
* There's no point in getting too cheap here, because the minimum allocation
|
||||
* is one OS page, which is probably at least 4KB and could easily be as high
|
||||
* as 64KB. Each currently sizeof(dsm_control_item), currently 8 bytes.
|
||||
*/
|
||||
#define PG_DYNSHMEM_FIXED_SLOTS 64
|
||||
#define PG_DYNSHMEM_SLOTS_PER_BACKEND 2
|
||||
#define PG_DYNSHMEM_SLOTS_PER_BACKEND 5
|
||||
|
||||
#define INVALID_CONTROL_SLOT ((uint32) -1)
|
||||
|
||||
|
Reference in New Issue
Block a user