1
0
mirror of https://github.com/postgres/postgres.git synced 2025-06-14 18:42:34 +03:00

Introduce two fields in EState to track parallel worker activity

These fields can be set by executor nodes to record how many parallel
workers were planned to be launched and how many of them have been
actually launched within the number initially planned.  This data is
able to give an approximation of the parallel worker draught a system
is facing, making easier the tuning of related configuration parameters.

These fields will be used by some follow-up patches to populate other
parts of the system with their data.

Author: Guillaume Lelarge, Benoit Lobréau
Discussion: https://postgr.es/m/783bc7f7-659a-42fa-99dd-ee0565644e25@dalibo.com
Discussion: https://postgr.es/m/CAECtzeWtTGOK0UgKXdDGpfTVSa5bd_VbUt6K6xn8P7X+_dZqKw@mail.gmail.com
This commit is contained in:
Michael Paquier
2024-10-09 08:07:48 +09:00
parent 01fce8dab1
commit de3a2ea3b2
4 changed files with 21 additions and 0 deletions

View File

@ -158,6 +158,8 @@ CreateExecutorState(void)
estate->es_sourceText = NULL;
estate->es_use_parallel_mode = false;
estate->es_parallel_workers_to_launch = 0;
estate->es_parallel_workers_launched = 0;
estate->es_jit_flags = 0;
estate->es_jit = NULL;

View File

@ -182,6 +182,13 @@ ExecGather(PlanState *pstate)
/* We save # workers launched for the benefit of EXPLAIN */
node->nworkers_launched = pcxt->nworkers_launched;
/*
* Count number of workers originally wanted and actually
* launched.
*/
estate->es_parallel_workers_to_launch += pcxt->nworkers_to_launch;
estate->es_parallel_workers_launched += pcxt->nworkers_launched;
/* Set up tuple queue readers to read the results. */
if (pcxt->nworkers_launched > 0)
{

View File

@ -223,6 +223,13 @@ ExecGatherMerge(PlanState *pstate)
/* We save # workers launched for the benefit of EXPLAIN */
node->nworkers_launched = pcxt->nworkers_launched;
/*
* Count number of workers originally wanted and actually
* launched.
*/
estate->es_parallel_workers_to_launch += pcxt->nworkers_to_launch;
estate->es_parallel_workers_launched += pcxt->nworkers_launched;
/* Set up tuple queue readers to read the results. */
if (pcxt->nworkers_launched > 0)
{

View File

@ -708,6 +708,11 @@ typedef struct EState
bool es_use_parallel_mode; /* can we use parallel workers? */
int es_parallel_workers_to_launch; /* number of workers to
* launch. */
int es_parallel_workers_launched; /* number of workers actually
* launched. */
/* The per-query shared memory area to use for parallel execution. */
struct dsa_area *es_query_dsa;