Re: Cutting initdb's runtime (Perl question embedded)
Andres Freund <andres@anarazel.de>
From: Andres Freund <andres@anarazel.de>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: Andreas Karlsson <andreas@proxel.se>, pgsql-hackers@postgreSQL.org
Date: 2017-04-13T20:42:23Z
Lists: pgsql-hackers
On 2017-04-13 14:05:43 -0400, Tom Lane wrote: > Andres Freund <andres@anarazel.de> writes: > > On 2017-04-13 12:56:14 -0400, Tom Lane wrote: > >> Andres Freund <andres@anarazel.de> writes: > >>> Cool. I wonder if we also should remove AtEOXact_CatCache()'s > >>> cross-checks - the resowner replacement has been in place for a while, > >>> and seems robust enough. They're now the biggest user of time. > > >> Hm, biggest user of time in what workload? I've not noticed that > >> function particularly. > > > Just initdb. I presume it's because the catcaches will frequently be > > relatively big there. > > Hm. That ties into something I was looking at yesterday. The only > reason that function is called so much is that bootstrap mode runs a > separate transaction for *each line of the bki file* (cf do_start, > do_end in bootparse.y). Which seems pretty silly. Indeed. > On the whole, though, we may be looking at diminishing returns here. > I just did some "perf" measurement of the overall "initdb" cycle, > and what I'm seeing suggests that bootstrap mode as such is now a > pretty small fraction of the overall cycle: > > + 51.07% 0.01% 28 postgres postgres [.] PostgresMain # > ... > + 13.52% 0.00% 0 postgres postgres [.] AuxiliaryProcessMain # > > That says that the post-bootstrap steps are now the bulk of the time, > which agrees with naked-eye observation. The AtEOXact_CatCache weren't only in bootstrap mode, but yea, it's by far smaller wins in comparison to the regprocin thing. Greetings, Andres Freund
Commits
-
Attempt to identify system timezone by reading /etc/localtime symlink.
- 995b4fe0b14f 11.4 landed
- 8de574aa8bf7 10.9 landed
- 77dc741a1727 9.5.18 landed
- 75b0f21e1b19 9.6.14 landed
- 37011bcb30a9 9.4.23 landed
- 23bd3cec6eb1 12.0 landed
-
Make sure to run one initdb TAP test with no TZ set
- 033b969edde6 10.0 landed
-
Use one transaction while reading postgres.bki, not one per line.
- 85a0781334a2 10.0 landed
-
Move bootstrap-time lookup of regproc OIDs into genbki.pl.
- 5e39f06cfe65 10.0 landed