public inbox for [email protected]
help / color / mirror / Atom feedFrom: Riaan Stander <[email protected]>
To: [email protected]
Subject: Re: Postgres IO sweet spot
Date: Mon, 16 Feb 2026 16:57:14 +0200
Message-ID: <[email protected]> (raw)
In-Reply-To: <[email protected]>
References: <[email protected]>
Good day all
Just following up of there is any advice from the community. My original
post was very long, but just wanted to paint the picture.
In summary I just want to find out if anybody has some concrete advice
on storage devices that is acceptable for usage with Postgres,
especially latency. I've highlighted some tests I've done, but I need to
interpret the numbers correctly.
Any feedback on the following will help
* Acceptable write IO latency
o WAL
o Data
o Temp
o ...
* Acceptable read IO latency
* Any other storage/drive related advice
Regards
Riaan
On 2026/02/11 01:13, Riaan Stander wrote:
> Good day
>
> We host our own Postgres (v17) server on-prem as the backbone of our
> SaS application. It's a fairly busy OLTP application with a database
> per tenant strategy. This obviously does complicate our setup.
> Our hosting platform is as follows:
> 3 x Host Servers running Microsoft Storage Spaces in a 3 way mirror
> Ubuntu VM hosting Postgres
>
> A few months ago we had some severe performance issues with lots of
> queries and writing operations just pending. After some deep
> investigation we started realizing that it was disk IO causing the
> issue. We used iostat and could see the write await was above 30ms and
> sometimes even spiking much higher. This was resolved by moving our
> backups (made with Veeam) from backing up the primary to a slave on
> other infrastructure. Our current happy state where clients are not
> experiencing issues is a iostat write await of 5ms and lower.
>
> All was good for a few months until recently when this issue started
> again. This time it could not be the backups. We had various hardware
> vendors involved, but at some point it came to light that the Storage
> Spaces hardware are all mechanical disks with NVME only used for
> Storage Spaces journaling and caching. There are now some discussions
> of upgrading drives to SSD, but my concern is that this is not
> guaranteed to solve the issue. Especially with the 3 way mirror it
> seems all writes will go to the other hosts before returning. So
> latency is almost impossible to remove.
>
> So now my question. I started running some IO tests using fio,
> pg_test_fsync & pg_test_timing. Before we spend days/months trying to
> tune Postgres settings I'm trying to get some definitive published
> information about what IO numbers I should expect when running plain
> hardware tests with Postgres completely out of the loop. I've seen
> some info about 1ms and less write latency is what you want for WAL.
> My logic says that if you have a stiffie drive for storage you can
> tune it, but you still have a stiffie drive.
>
> These are the tests I've run so far
> 1. WAL-Style Latency Test (4K random sync writes)
> fio --name=wal-latency --filename=$TESTDIR/fio_wal_test --size=2G
> --rw=randwrite --bs=4k --iodepth=1 --ioengine=libaio --direct=1
> --fsync=1 --runtime=60 --group_reporting
>
> 2. Random Read IOPS Test (index lookup simulation)
> fio --name=index-read --filename=$TESTDIR/fio_index_test --size=8G
> --rw=randread --bs=4k --iodepth=32 --ioengine=libaio --direct=1
> --runtime=60 --group_reporting
>
> 3. Mixed OLTP Test (70% read / 30% write)
> fio --name=oltp-mixed --filename=$TESTDIR/fio_oltp_mixed --size=8G
> --rw=randrw --rwmixread=70 --bs=8k --iodepth=32 --ioengine=libaio
> --direct=1 --runtime=60 --group_reporting
>
> 4. Checkpoint Burst Test (sequential write pressure)
> fio --name=checkpoint-burst --filename=$TESTDIR/fio_checkpoint
> --size=20G --rw=write --bs=1M --iodepth=64 --ioengine=libaio
> --direct=1 --runtime=60 --group_reporting
>
> 5. PostgreSQL fsync Code Path Test
> pg_test_fsync -f $TESTDIR/pg_test_fsync
>
> 6. Timer / Scheduling Jitter Test
> pg_test_timing -d 3
>
> Regards
> Riaan
>
>
>
view thread (5+ messages) latest in thread
reply
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: [email protected]
Cc: [email protected], [email protected]
Subject: Re: Postgres IO sweet spot
In-Reply-To: <[email protected]>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox