On Tue, Nov 1, 2016 at 1:33 AM, Kouhei Kaigai <kai...@ak.jp.nec.com> wrote:
> Hello, > > The attached patch implements the suggestion by Amit before. > > What I'm motivated is to collect extra run-time statistics specific > to a particular ForeignScan/CustomScan, not only the standard > Instrumentation; like DMA transfer rate or execution time of GPU > kernels in my case. > > Per-node DSM toc is one of the best way to return run-time statistics > to the master backend, because FDW/CSP can assign arbitrary length of > the region according to its needs. It is quite easy to require. > However, one problem is, the per-node DSM toc is already released when > ExecEndNode() is called on the child node of Gather. > > This patch allows extensions to get control on the master backend's > context when all the worker node gets finished but prior to release > of the DSM segment. If FDW/CSP has its special statistics on the > segment, it can move to the private memory area for EXPLAIN output > or something other purpose. > > One design consideration is whether the hook shall be called from > ExecParallelRetrieveInstrumentation() or ExecParallelFinish(). > The former is a function to retrieve the standard Instrumentation > information, thus, it is valid only if EXPLAIN ANALYZE. > On the other hands, if we put entrypoint at ExecParallelFinish(), > extension can get control regardless of EXPLAIN ANALYZE, however, > it also needs an extra planstate_tree_walker(). > > Right now, we don't assume anything onto the requirement by FDW/CSP. > It may want run-time statistics regardless of EXPLAIN ANALYZE, thus, > hook shall be invoked always when Gather node confirmed termination > of the worker processes. > > Moved to next CF with "needs review" status. Regards, Hari Babu Fujitsu Australia