Re: ParallelFinish-hook of FDW/CSP (Re: [HACKERS] Steps insideExecEndGather) - Mailing list pgsql-hackers
From | Kouhei Kaigai |
---|---|
Subject | Re: ParallelFinish-hook of FDW/CSP (Re: [HACKERS] Steps insideExecEndGather) |
Date | |
Msg-id | 9A28C8860F777E439AA12E8AEA7694F8012A4DCB@BPXM15GP.gisp.nec.co.jp Whole thread Raw |
In response to | Re: ParallelFinish-hook of FDW/CSP (Re: [HACKERS] Steps inside ExecEndGather) (Claudio Freire <klaussfreire@gmail.com>) |
Responses |
Re: ParallelFinish-hook of FDW/CSP (Re: [HACKERS] Steps inside ExecEndGather)
|
List | pgsql-hackers |
> -----Original Message----- > From: pgsql-hackers-owner@postgresql.org > [mailto:pgsql-hackers-owner@postgresql.org] On Behalf Of Claudio Freire > Sent: Monday, February 06, 2017 1:05 PM > To: Kaigai Kouhei(海外 浩平) <kaigai@ak.jp.nec.com> > Cc: Amit Kapila <amit.kapila16@gmail.com>; Robert Haas > <robertmhaas@gmail.com>; pgsql-hackers <pgsql-hackers@postgresql.org> > Subject: Re: ParallelFinish-hook of FDW/CSP (Re: [HACKERS] Steps inside > ExecEndGather) > > On Mon, Feb 6, 2017 at 1:00 AM, Claudio Freire <klaussfreire@gmail.com> > wrote: > > On Sun, Feb 5, 2017 at 9:19 PM, Kouhei Kaigai <kaigai@ak.jp.nec.com> wrote: > >>> If the use case for this is to gather instrumentation, I'd suggest > >>> calling the hook in RetrieveInstrumentation, and calling it > >>> appropriately. It would make the intended use far clearer than it is > now. > >>> > >>> And if it saves some work, all the better. > >>> > >>> Until there's a use case for a non-instrumentation hook in that > >>> place, I wouldn't add it. This level of generality sounds like a > >>> solution waiting for a problem to solve. > >>> > >> The use cases I'd like to add are extension specific but significant > >> for performance analytics. These statistics are not included in > Instrumentation. > >> For example, my problems are GPU execution time, data transfer ratio > >> over DMA, synchronization time for GPU task completion, and so on. > >> Only extension can know which attributes are collected during the > >> execution, and its data format. I don't think Instrumentation fits these > requirements. > >> This is a problem I faced on the v9.6 based interface design, so I > >> could notice it. > > > > > > What RetrieveInstrumentation currently does may not cover the > > extension's specific instrumentation, but what I'm suggesting is > > adding a hook, like the one you're proposing for ParallelFinish, that > > would collect extension-specific instrumentation. Couple that with > > extension-specific explain output and you'll get your use cases > > covered, I think. > > > In essence, you added a ParallelFinish that is called after > RetrieveInstrumentation. That's overreaching, for your use case. > > If instrumentation is what you're collecting, it's far more correct, and > more readable, to have a hook called from inside RetrieveInstrumentation > that will retrieve extension-specific instrumentation. > > RetrieveInstrumentation itself doesn't need to parse that information, that > will be loaded into the custom scan nodes, and those are the ones that will > parse it when generating explain output. > > So, in essence it's almost what you did with ParallelFinish, more clearly > aimed at collecting runtime statistics. > I also had thought an idea to have extra space to Instrumentation structure, however, it needs to make Instrumentation flexible-length structure according to the custom format by CSP/FDW. Likely, it is not a good design. As long as extension can retrieve its custom statistics on DSM area required by ExecParallelEstimate(), I have no preference on the hook location. One thing we may pay attention is, some extension (not mine) may want to collect worker's statistics regardless of Instrumentation (in other words, even if plan is not under EXPLAIN ANALYZE). It is the reason why I didn't put a hook under the ExecParallelRetrieveInstrumentation(). Thanks, ---- PG-Strom Project / NEC OSS Promotion Center KaiGai Kohei <kaigai@ak.jp.nec.com>
pgsql-hackers by date: