PostgreSQL Performance Farm 2024 Progress Update
It feels like it was time to revisit the PostgreSQL Performance Farm that Tomas Vondra envisioned back in 2010. Between that and several Google Summer of Code iterations starting in 2018, the project just didn't seem to gain enough traction. See Ilaria Battiston's presentation in 2022 for a demo.
I spent a few days proofing whether something like BuildBot might work on a whim. It was to see if I could get something basic working in order to get a feel for whether leveraging an established continuous integration framework might be worth the trade offs from building our own system. The result was a system running 4 TPC-derived workloads that are simply running the tests quickly, not necessarily interestingly, just to produce data.
I added some additional desired functionality after a few more days:
- Trigger only when there are code changes.
- Define Buildbot worker specific test and PostgreSQL parameters.
- Overrides to the Buildbot worker defined test and PostgreSQL parameters.
- Submit patches against PostgreSQL and the test kits.
Next I wanted to see how much effort is needed to mine the data, especially since the results of the tests are not captured in a structured way. I'm pretty sure it would take me much longer than a few days to write a new BuildBot view, so I instead opted to try scripting something to munge data and plot metrics. I declared success by being able to quickly do so. Here's an example of results from one system vanillaleaf, a Buildbot worker, showing the DBT-2 test metric per commit per branch:
The PostgreSQL community has access to a couple of systems for processor and memory intensive workloads, thanks to Equinix Metal, OSUOSL and IBM. Both systems are continuing to run small tests so if building an interface to peruse results is successful, then I'll have more to show in the near future.