| From: | Andres Freund <andres(at)anarazel(dot)de> | 
|---|---|
| To: | pgsql-hackers(at)postgresql(dot)org | 
| Subject: | postgresql.conf.sample ordering for IO, worker related GUCs | 
| Date: | 2025-01-31 01:19:05 | 
| Message-ID: | x3tlw2jk5gm3r3mv47hwrshffyw7halpczkfbk3peksxds7bvc@lguk43z3bsyq | 
| Views: | Whole Thread | Raw Message | Download mbox | Resend email | 
| Thread: | |
| Lists: | pgsql-hackers | 
Hi,
While working on polishing the AIO patchset, I was trying to figure out where
to fit the new GUCs. So far I had a new "top-level" #--- style section named
"WIP AIO GUC docs" which I suspect you all won't let me get away with.
There is an existing (sub-)section which already has a few related GUCs and
could fit AIO related ones.
#------------------------------------------------------------------------------
# RESOURCE USAGE (except WAL)
#------------------------------------------------------------------------------
...
# - Asynchronous Behavior -
Except that the list of GUCs in it seems confusing:
#backend_flush_after = 0                # measured in pages, 0 disables
#effective_io_concurrency = 1           # 1-1000; 0 disables prefetching
#maintenance_io_concurrency = 10        # 1-1000; 0 disables prefetching
#io_combine_limit = 128kB               # usually 1-32 blocks (depends on OS)
#max_worker_processes = 8               # (change requires restart)
#max_parallel_workers_per_gather = 2    # limited by max_parallel_workers
#max_parallel_maintenance_workers = 2   # limited by max_parallel_workers
#max_parallel_workers = 8               # number of max_worker_processes that
                                        # can be used in parallel operations
#parallel_leader_participation = on
The first four GUCs make some sense under the heading, but why are the worker
GUCs in the same section?
Seems like it would make sense to introduce a new "Worker Processes"
sub-section?
I am wondering if it'd be better to get rid of "Asynchronous Behavior" and
instead have "# - IO -" or such?  E.g. io_combine_limit isn't really about
anything asynchronous, but still seems like it should belong in the same
section as the rest?
I also wonder if fsync, recovery_init_sync_method, data_sync_retry shouldn't
be in that new subsection. Or maybe it should even be a top-level section.
FWIW, AIO currently adds the following GUCs:
#io_method = worker                     # worker, io_uring, sync
                                        # (change requires restart)
#io_max_concurrency = -1		# Max number of IOs that may be in
					# flight at the same time in one backend
					# (change requires restart)
#io_workers = 3                         # 1-32; relevant only if io_method = worker
Greetings,
Andres Freund
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Tom Lane | 2025-01-31 01:53:41 | Re: Using Expanded Objects other than Arrays from plpgsql | 
| Previous Message | Peter Smith | 2025-01-31 01:13:09 | Re: Improve error handling for invalid slots and ensure a same 'inactive_since' time for inactive slots |