From: | Andres Freund <andres(at)anarazel(dot)de> |
---|---|
To: | pgsql-hackers(at)postgresql(dot)org |
Cc: | Thomas Munro <thomas(dot)munro(at)gmail(dot)com>, Heikki Linnakangas <hlinnaka(at)iki(dot)fi>, Noah Misch <noah(at)leadboat(dot)com>, Robert Haas <robertmhaas(at)gmail(dot)com>, Jakub Wartak <jakub(dot)wartak(at)enterprisedb(dot)com> |
Subject: | Re: AIO v2.5 |
Date: | 2025-03-10 18:23:12 |
Message-ID: | ge6nsuddurhpmll3xj22vucvqwp4agqz6ndtcf2mhyeydzarst@l75dman5x53p |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
Hi,
Attached is v2.6 of the AIO patchset.
Relative to 2.5 I:
- Improved the split between subsystem initialization and main AIO commit, as
well as the one between worker infrastructure and io_method=worker
Seemed worth as the only one voicing an opinion about squashing those
commits was opposed.
- Added a lot more comments to aio.h/aio_internal.h. I think just about
anything that should conceivably have a comment has one.
- Reordered fields in PgAioHandle to waste less due to padding
- Narrowed a few *count fields, they were 64bit without ever being al to reach
that
- Used aio_types.h more widely, instead of "manual" forward declarations. This
required moving a few typedefs to aio_types.h
- Substantial commit message improvements.
- Removed the pg_aios.error_desc column, due to:
https://postgr.es/m/qzxq6mqqozctlfcg2kg5744gmyubicvuehnp4a7up472thlvz2%40y5xqgd5wcwhw
- Reordered the commits slightly, to put the README just after the
smgr.c/md.c/... support, as the readme references those in the examples
- Stopped creating backend-local io_uring instances, that is vestigial for
now. We likely will want to reintroduce them at some point (e.g. for network
IO), but we can do that at that time.
- There were a lot of duplicated codepaths in bufmgr.c support for AIO due to
temp tables. I added a few commits refactoring the temp buffers state
management to look a lot more like the shared buffer code.
I'm not sure that that's the best path, but they all seemed substantial
improvements on their own.
- putting io_method in PG_TEST_INITDB_EXTRA_OPTS previously broke a test,
because Cluster::init() puts PG_TEST_INITDB_EXTRA_OPTS after the # options
specified by ->extra. I now worked around that by appending the io method to
a local PG_TEST_INITDB_EXTRA_OPTS, but brrr.
- The tracepoint for read completion omitted the fact that it was a temp
table, if so.
- Fixed some duplicated function decls, due to a misresolved merge-conflict
Current state:
- 0001, 0002 - core AIO - IMO pretty much ready
- 0003, 0004 - IO worker - same
- 0005, 0006 - io_uring support - close, but we need to do something about
set_max_fds(), which errors out spuriously in some cases
- 0007 - smgr/md/fd.c readv support - seems quite close, but might benefit from
another pass through
- 0008 - README - I think it's good, but I'm probably not seeing the trees for
the forest anymore
- 0009 - pg_aios view - naming not resolved, docs missing
- 0010 to 0014 - from another thread, just included here due to a dependency
- 0016 to 0020 - cleanups for temp buffers code - I just wrote these to clean
up the code before making larger changes, needs review
- 0021 - keep BufferDesc refcount up2date for temp buffers - I think that's
pretty much ready, but depends on earlier patches
- 0022 - bufmgr readv AIO suppot - some naming, some code duplication needs to
be resolved, but otherwise quite close
- 0023 - use AIO in StartReadBuffers() - perhaps a bit of polishing needed
- 0024 - adjust read_stream.c for AIO - I think Thomas has a better patch for
this in the works
- 0025 - tests for AIO - I think it's reasonable, unless somebody objects to
exporting a few bufmgr.c functions to the test
- the rest: Not for 18
Greetings,
Andres Freund
From | Date | Subject | |
---|---|---|---|
Next Message | Jacob Champion | 2025-03-10 18:25:51 | Re: dblink: Add SCRAM pass-through authentication |
Previous Message | Fujii Masao | 2025-03-10 18:07:32 | Re: Add “FOR UPDATE NOWAIT” lock details to the log. |