Re: Choosing parallel_degree - Mailing list pgsql-hackers

From Julien Rouhaud
Subject Re: Choosing parallel_degree
Date
Msg-id 56EB3D0F.6030201@dalibo.com
Whole thread Raw
In response to Re: Choosing parallel_degree  (Robert Haas <robertmhaas@gmail.com>)
Responses Re: Choosing parallel_degree
List pgsql-hackers
On 16/03/2016 18:42, Robert Haas wrote:
> On Wed, Mar 16, 2016 at 1:23 PM, Julien Rouhaud
> <julien.rouhaud@dalibo.com> wrote:
>> On 16/03/2016 17:55, Robert Haas wrote:
>>> On Wed, Mar 16, 2016 at 12:47 PM, Julien Rouhaud
>>> <julien.rouhaud@dalibo.com> wrote:
>>>> Something like a "min_parallel_degree" then ?
>>>
>>> Why not just parallel_degree without any prefix?  As in, when scanning
>>> this table in parallel, the reloption suggests using N workers.
>>>
>>
>> Agreed.
>>
>> PFA v2 that implements that.
> 
> I think create_parallel_paths shouldn't actually run the loop if the
> reloption is specified; it should just adopt the specified value (or
> max_parallel_degree, whichever is less).  Right now, you have it doing
> the work to compute the default value but then overriding it.
> 

After a second look at this part:
/* * Limit the degree of parallelism logarithmically based on the size of the * relation.  This probably needs to be a
gooddeal more sophisticated,
 
but we * need something here for now. */while (rel->pages > parallel_threshold * 3 &&       parallel_degree <
max_parallel_degree){   parallel_degree++;    parallel_threshold *= 3;    if (parallel_threshold >= PG_INT32_MAX / 3)
    break;}
 

Shouldn't we also check "parallel_degree < max_worker_process" ?

There's no need to compute any further than that. I think the best fix
would be to add a CheckHook or AssignHook on max_parallel_degree GUC to
make sure it's not more than max_worker_process.

-- 
Julien Rouhaud
http://dalibo.com - http://dalibo.org



pgsql-hackers by date:

Previous
From: Mark Dilger
Date:
Subject: Re: Make primnodes.h gender neutral
Next
From: Peter Geoghegan
Date:
Subject: Re: Make primnodes.h gender neutral