Re: pg14b1 stuck in lazy_scan_prune/heap_page_prune of pg_statistic
Justin Pryzby <pryzby@telsasoft.com>
From: Justin Pryzby <pryzby@telsasoft.com>
To: Alvaro Herrera <alvherre@alvh.no-ip.org>
Cc: pgsql-hackers@lists.postgresql.org, Matthias van de Meent <boekewurm+postgres@gmail.com>, Masahiko Sawada <sawada.mshk@gmail.com>, Peter Geoghegan <pg@bowt.ie>, Andres Freund <andres@anarazel.de>, Tom Lane <tgl@sss.pgh.pa.us>
Date: 2021-06-08T18:45:14Z
Lists: pgsql-hackers
On Tue, Jun 08, 2021 at 02:01:51PM -0400, Alvaro Herrera wrote: > On 2021-Jun-08, Justin Pryzby wrote: > > > On Tue, Jun 08, 2021 at 12:06:02PM -0400, Alvaro Herrera wrote: > > > On 2021-Jun-06, Justin Pryzby wrote: > > > > > > > However, I also found an autovacuum chewing 100% CPU, and it appears the > > > > problem is actually because autovacuum has locked a page of pg-statistic, and > > > > every other process then gets stuck waiting in the planner. I checked a few > > > > and found these: > > > > > > Hmm ... I wonder if this could be related to commits d9d076222f5b, > > > c98763bf51bf, etc. I don't have any connecting thoughts other than the > > > tuple visibility code being involved. Do you see any procs with the > > > PROC_IN_SAFE_IC flag set? > > > > Can you give me a hint how to do that from a corefile ? > > (gdb) set $i=0 > (gdb) set $total = ProcGlobal->allProcCount > (gdb) while($i<$total) > >print ProcGlobal->allProcs[$i++]->statusFlags > >end They're all zero except for: $201 = 1 '\001' $202 = 3 '\003' $203 = 1 '\001' src/include/storage/proc.h-#define PROC_IS_AUTOVACUUM 0x01 /* is it an autovac worker? */ src/include/storage/proc.h-#define PROC_IN_VACUUM 0x02 /* currently running lazy vacuum */ src/include/storage/proc.h:#define PROC_IN_SAFE_IC 0x04 /* currently running CREATE INDEX -- Justin
Commits
-
Deduplicate choice of horizon for a relation procarray.c.
- 3d0a4636aa4c 14.0 landed
- d9d8aa9bb9aa 15.0 landed
-
Use correct horizon when vacuuming catalog relations.
- 5a1e1d83022b 14.0 landed
-
Truncate line pointer array during VACUUM.
- 3c3b8a4b2689 14.0 cited
-
Remove tupgone special case from vacuumlazy.c.
- 8523492d4e34 14.0 cited
-
Refactor lazy_scan_heap() loop.
- 7ab96cf6b312 14.0 cited
-
snapshot scalability: Don't compute global horizons while building snapshots.
- dc7420c2c927 14.0 cited