Hi,
On 2023-07-17 16:42:31 +0200, Dimitrios Apostolou wrote:
> Thanks, it sounds promising! Are the changes in the 16 branch already,
> i.e. is it enough to fetch sources for 16-beta2?
No, this is in a separate branch.
https://github.com/anarazel/postgres/tree/aio
> If so do I just configure --with-liburing (I'm on linux) and run with
> io_method=io_uring?
It's probably worth trying out both io_uring and worker. I've not looked at
performance on btrfs. I know that some of the optimized paths for io_uring
(being able to perform filesystem IO without doing so synchronously in an
in-kernel thread) require filesystem cooperation, and I do not know how much
attention btrfs has received for that.
> Else, if I use the io_method=worker what is a sensible amount of worker
> threads?
Depends on your workload :/. If you just want to measure whether it fixes your
single-threaded query execution issue, the default should be just fine.
> Should I also set all the flags for direct I/O? (io_data_direct=on
> io_wal_direct=on).
FWIW, I just pushed a rebased version to the aio branch, and there the config
for direct io is
io_direct = 'data, wal, wal_init'
(or a subset thereof).
From what I know of btrfs, I don't think you want direct IO though. Possibly
for WAL, but definitely not for data. IIRC it currently can cause corruption.
Greetings,
Andres Freund