Hi,
On 2022-02-02 21:44:41 -0500, Tom Lane wrote:
> Andres Freund <andres@anarazel.de> writes:
> > On 2022-02-02 20:31:52 -0500, Tom Lane wrote:
> >> BTW, I also reproduced something that seems odd from the OP's
> >> postmaster logs: there are what seem a quite excessive number
> >> of checkpoints happening during these tests. That happens
> >> on my Linux box too, so it's not an OpenBSD issue. It looks
> >> like there are two per CREATE DATABASE --- I could understand
> >> one maybe, but why two?
>
> > I think that's unfortunately normal. There's two RequestCheckpoint()s in
> > createdb(). We should optimize that someday...
>
> Hmm. I wonder how much that slows down a check-world run.
> I suppose the second checkpoint should be pretty speedy
> for lack of anything to do, but still ...
There is a patch making CREATE DATABASE fully WAL logged [1].
cfbot timings aren't super reliable, but it provides perhaps a bit of
information.
It does seem to make individual create databases a bit faster. Comparing runs
with another patch and looking at windows (since that's the slowest and
doesn't run regression tests concurrently), we can see:
https://cirrus-ci.com/github/postgresql-cfbot/postgresql/commitfest/36/3314
https://cirrus-ci.com/github/postgresql-cfbot/postgresql/commitfest/36/3192
CF 3314:
[01:28:31.630] Checking plpgsql
[01:28:31.764] ============== creating database "pl_regression" ==============
[01:28:32.631] CREATE DATABASE
[01:28:36.515] Checking plperl
[01:28:36.751] ============== creating database "pl_regression" ==============
[01:28:37.560] CREATE DATABASE
[01:28:40.990] Checking plpythonu
[01:28:41.233] ============== creating database "pl_regression" ==============
[01:28:42.057] CREATE DATABASE
CF 3192:
[07:03:54.861] Checking plpgsql
[07:03:54.986] ============== creating database "pl_regression" ==============
[07:03:55.254] CREATE DATABASE
[07:03:58.950] Checking plperl
[07:03:59.234] ============== creating database "pl_regression" ==============
[07:03:59.484] CREATE DATABASE
[07:04:02.724] Checking plpythonu
[07:04:02.960] ============== creating database "pl_regression" ==============
[07:04:03.202] CREATE DATABASE
Which does seem to suggest createdb being noticably faster.
This is also visible in aggregate across several tests, e.g. "test_modules"
averaging ~45s for 36/3314, but ~30s for 36/3192.
For the longer running tap tests it doesn't seem to make much of a difference,
which make some sense.
Greetings,
Andres Freund
[1] https://commitfest.postgresql.org/36/3192/