PostgreSQL – IOPS Needs of Root Volume vs Database/Log Files Volume

database-designpostgresql

I'm setting up a database server via AWS EC2, using:

  1. Root EBS Volume, General-purpose SSD
  2. EBS Volume, Provisioned IOPS

And intending to configure PostgreSQL to have the database and log files on the PIOPS volume.

I'm wondering how much IOPS strain that the root volume will have, since the base install of the DB engine and instance will be there, hence still handling the flow of data for the networking and database logic.

For example, if I have 2000 IOPS on the DB volume and 3 IOPS on the root volume, that database server would certainly be bottlenecked by the root IOPS. What does a good ratio look like?

Best Answer

A 'gp2' EBS volume will have plenty of performance for use as a root volume. There won't be any problems.

See details on EBS gp2 volumes on Amazon's documentation.

General Purpose (SSD) volumes [... have ...] the ability to burst to 3,000 IOPS for extended periods of time, and a baseline performance of 3 IOPS/GiB up to a maximum of 10,000 IOPS (at 3,334 GiB).

...

Volumes earn I/O credits every second at a baseline performance rate of 3 IOPS per GiB of volume size. For example, a 100 GiB General Purpose (SSD) volume has a baseline performance of 300 IOPS.

You'll be fine. Your root volume shoudn't be doing tons of I/O anyway. Frequently used data like program binaries will be cached in the kernel buffer caches in instance RAM. You're mainly looking at write activity for log files, etc, and it's unlikely that'll be a problem.

Do make sure, if you log via syslog, that flushes are not forced after each log write though. That usually involves prefixing the log output line with a -.