Re: Explain buffers wrong counter with parallel plans
Amit Kapila <amit.kapila16@gmail.com>
From: Amit Kapila <amit.kapila16@gmail.com>
To: Robert Haas <robertmhaas@gmail.com>
Cc: Alvaro Herrera <alvherre@2ndquadrant.com>,
Adrien Nayrat <adrien.nayrat@anayrat.info>, Andres Freund <andres@anarazel.de>, PostgreSQL mailing lists <pgsql-hackers@postgresql.org>
Date: 2018-07-07T02:15:41Z
Lists: pgsql-hackers
On Sat, Jul 7, 2018 at 12:44 AM, Robert Haas <robertmhaas@gmail.com> wrote: > On Fri, Jul 6, 2018 at 9:44 AM, Amit Kapila <amit.kapila16@gmail.com> wrote: >> I have tried this idea, but it doesn't completely solve the problem. >> The problem is that nodes below LIMIT won't get a chance to accumulate >> the stats as they won't be able to call InstrStopNode. > > I'm not sure I understand. Why not? I see that we'd need to insert > an extra call to InstrStopNode() if we were stopping the node while it > was running, because then InstrStartNode() would have already been > done, but the corresponding call to InstrStopNode() would not have > been done. But I'm not sure how that would happen in this case. Can > you explain further? > Okay, let me try. The code flow is that for each node we will call InstrStartNode()->ExecProcNodeReal()->InstrStopNode(). Now let's say we have to execute a plan Limit->Gather-> Parallel SeqScan. In this, first for Limit node, we will call InstrStartNode() and ExecProcNodeReal() and then for Gather we will call InstrStartNode(), ExecProcNodeReal() and InstrStopNode(). Now, Limit node decides that it needs to shutdown all the nodes (ExecShutdownNode) and after that it will call InstrStopNode() for Limit node. So, in this flow after shutting down nodes, we never get chance for Gather node to use stats collected during ExecShutdownNode. -- With Regards, Amit Kapila. EnterpriseDB: http://www.enterprisedb.com
Commits
-
Adjust comment atop ExecShutdownNode.
- 32b16d497a93 10.6 landed
- f34d4b79fab4 11.0 landed
- 4f9a97e417ca 12.0 landed
-
Prohibit shutting down resources if there is a possibility of back up.
- 69de17186ad9 9.6.11 landed
- ba10eaef509b 10.6 landed
- c054afd0a22c 11.0 landed
- 2cd0acfdade8 12.0 landed
-
Fix buffer usage stats for parallel nodes.
- 19df1702f5c5 9.6.10 landed
- b805b63ac277 10.5 landed
- dac7fe13bbf1 11.0 landed
- 85c9d3475e4f 12.0 landed
-
Match the buffer usage tracking for leader and worker backends.
- 7124c93fb54f 9.6.10 landed
- ef305bd59d98 11.0 landed
- ccc84a956b00 12.0 landed
-
Improve division of labor between execParallel.c and nodeGather[Merge].c.
- 01edb5c7fc3b 10.0 cited