On Sat, 20 Jun 2020 at 08:00, Robert Haas <robertmh...@gmail.com> wrote: > > On Thu, Jun 18, 2020 at 10:10 PM David Rowley <dgrowle...@gmail.com> wrote: > > Here's a patch which caps the maximum chunk size to 131072. If > > someone doubles the page size then that'll be 2GB instead of 1GB. I'm > > not personally worried about that. > > Maybe use RELSEG_SIZE?
I was hoping to keep the guarantees that the chunk size is always a power of 2. If, for example, someone configured PostgreSQL --with-segsize=3, then RELSEG_SIZE would be 393216 with the standard BLCKSZ. Not having it a power of 2 does mean the ramp-down is more uneven when the sizes become very small: postgres=# select 393216>>x from generate_Series(0,18)x; ?column? ---------- 393216 196608 98304 49152 24576 12288 6144 3072 1536 768 384 192 96 48 24 12 6 3 1 (19 rows) Perhaps that's not a problem though, but then again, perhaps just keeping it at 131072 regardless of RELSEG_SIZE and BLCKSZ is also ok. The benchmarks I did on Windows [1] showed that the returns diminished once we started making the step size some decent amount so my thoughts are that I've set PARALLEL_SEQSCAN_MAX_CHUNK_SIZE to something large enough that it'll make no difference to the performance anyway. So there's probably not much point in giving it too much thought. Perhaps pg_nextpower2_32(RELSEG_SIZE) would be okay though. David [1] https://www.postgresql.org/message-id/caaphdvoppka+q5y_k_6cuv4u6dphmz771veumuzls3d3mwy...@mail.gmail.com