Re: Streaming I/O, vectored I/O (WIP)
Melanie Plageman <melanieplageman@gmail.com>
From: Melanie Plageman <melanieplageman@gmail.com>
To: Thomas Munro <thomas.munro@gmail.com>
Cc: Heikki Linnakangas <hlinnaka@iki.fi>, Dilip Kumar <dilipbalaut@gmail.com>, Robert Haas <robertmhaas@gmail.com>,
pgsql-hackers <pgsql-hackers@postgresql.org>, Andres Freund <andres@anarazel.de>
Date: 2024-04-03T12:23:53Z
Lists: pgsql-hackers
On Tue, Apr 2, 2024 at 8:32 PM Thomas Munro <thomas.munro@gmail.com> wrote: > > Here are the remaining patches discussed in this thread. They give > tablespace-specific io_combine_limit, effective_io_readahead_window > (is this useful?), and up-to-1MB io_combine_limit (is this useful?). > I think the first two would probably require teaching reloption.c how > to use guc.c's parse_int() and unit flags, but I won't have time to > look at that for this release so I'll just leave these here. > > On the subject of guc.c, this is a terrible error message... did I do > something wrong? > > postgres=# set io_combine_limit = '42MB'; > ERROR: 5376 8kB is outside the valid range for parameter > "io_combine_limit" (1 .. 32) Well, GUC_UNIT_BLOCKS interpolates the block limit into the error message string (get_config_unit_name()). But, I can't imagine this error message is clear for any of the GUCs using GUC_UNIT_BLOCKS. I would think some combination of the two would be helpful, like "43008 kB (5376 blocks) is outside of the valid range for parameter". The user can check what their block size is. I don't think we need to interpolate and print the block size in the error message. On another note, since io_combine_limit, when specified in size, rounds up to the nearest multiple of blocksize, it might be worth mentioning this in the io_combine_limit docs at some point. I checked docs for another GUC_UNIT_BLOCKS guc, backend_flush_after, and it alludes to this. - Melanie
Commits
-
Fix typos and incorrect type in read_stream.c
- 2ea4b2927722 17.0 landed
-
Use streaming I/O in pg_prewarm.
- 3a352df05e65 17.0 landed
-
Provide API for streaming relation data.
- b5a9b18cd0bc 17.0 landed
-
Provide vectored variant of ReadBuffer().
- 210622c60e1a 17.0 landed
-
Provide vectored variants of smgrread() and smgrwrite().
- 4908c5872059 17.0 landed
-
Provide multi-block smgrprefetch().
- b485ad7f07c8 17.0 landed
-
Provide vectored variants of FileRead() and FileWrite().
- 871fe4917e1e 17.0 landed
-
Provide helper for retrying partial vectored I/O.
- 0c6be59f5e34 17.0 landed
-
Optimize pg_readv/pg_pwritev single vector case.
- 15c9ac362993 17.0 landed
-
bufmgr: Support multiple in-progress IOs by using resowner
- 12f3867f5534 16.0 cited