Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1eePes-0001rd-3D for pgsql-hackers@arkaria.postgresql.org; Wed, 24 Jan 2018 18:20:26 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1eePer-00016r-Mj for pgsql-hackers@arkaria.postgresql.org; Wed, 24 Jan 2018 18:20:25 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1eePer-00016h-6R for pgsql-hackers@lists.postgresql.org; Wed, 24 Jan 2018 18:20:25 +0000 Received: from out4-smtp.messagingengine.com ([66.111.4.28]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.89) (envelope-from ) id 1eePeo-0005qW-1f for pgsql-hackers@postgresql.org; Wed, 24 Jan 2018 18:20:24 +0000 Received: from compute5.internal (compute5.nyi.internal [10.202.2.45]) by mailout.nyi.internal (Postfix) with ESMTP id 30FE922691; Wed, 24 Jan 2018 13:20:20 -0500 (EST) Received: from frontend2 ([10.202.2.161]) by compute5.internal (MEProxy); Wed, 24 Jan 2018 13:20:20 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to:x-me-sender :x-me-sender:x-sasl-enc; s=fm1; bh=uiibvo+N4zhNnnNL56oOw15fCuHIy dGD/rNL5y+GFcI=; b=ngEC/G4KyUEa+f8bCKOMpL2cNCohOogF/VJgbp/KS+lD5 B4510mTKu1uXxxaq1Y7RXLs8cO/xCFs4fDFfrqS6Gke6WdPO/SOAaE6f6GwveZrP qZhTKYvnWqvELAg1n4ECvZv+mrfE9IiHm0WCk79DTnZCP0Kz4wjU7fOztD8PTipj rGyEyz2fMTEbA4R1fSVimYmZISKvfthlzOCoCwezZZ6kxzbPnqRF7kTa1fWPuihO DLfG/6sKhmt/M8Gdb1YodmDrJBMMHlzwSKdiBI7YSBza6hXKOENCBQZXfOfEPbdu 5K/yj00ovv+WfqbqbptQVtLkIjiT1Jv9FE6SybdKw== X-ME-Sender: Received: from intern.anarazel.de (unknown [136.24.76.189]) by mail.messagingengine.com (Postfix) with ESMTPA id D96B42463E; Wed, 24 Jan 2018 13:20:19 -0500 (EST) Date: Wed, 24 Jan 2018 10:20:18 -0800 From: Andres Freund To: Robert Haas Cc: Tom Lane , Thomas Munro , "pgsql-hackers@postgresql.org" Subject: Re: pgsql: Add parallel-aware hash joins. Message-ID: <20180124182018.jx2h4wp6twqo7xix@alap3.anarazel.de> References: <20171222082203.fl6rpzlqnm4h7h6h@alap3.anarazel.de> <30219.1514428346@sss.pgh.pa.us> <4503.1514435195@sss.pgh.pa.us> <21339.1516633310@sss.pgh.pa.us> <24384.1516665190@sss.pgh.pa.us> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk On 2018-01-23 14:24:56 -0500, Robert Haas wrote: > Right, but this doesn't seem to show any big spike in the runtime at > the time when parallel hash was committed, or when the preparatory > patch to add test coverage for hash joins got committed. Rather, > there's a gradual increase over time. Either we're making the server > slower (which would be bad) or we're adding proper test coverage for > all the new features that we're adding (which would be good). We > can't expect every feature patch to preserve the runtime of the tests > absolutely unchanged; figuring out what can be optimized is a separate > exercise from adding test coverage either for new things or for things > that weren't previously covered. Agreed. One the improvement front, my observation is that we rarely are actually cpu bound across processes. One thing I've been wondering is whether we can get a pretty large win from just rescheduling parallel_schedule. There definitely are individual testfiles that take a lot longer than others, but their positining in groups doesn't necessarily reflect that. Besides manually reordering the schedule, I think it might be time that we improve pg_regress's scheduling. One big first step would e.g. be to not manually limit the number of parallel tests in a group to 20, but instead allow larger groups and only run a limited number of them in parallel. If done right we could start the next test in a group as soon as *one* task in a group has finished, rather than waiting for all of them to finish as we currently do for (sub-)groups. Besides larger groups, starting the next test(s) earlier, another way to gain pretty large improvements would be a test schedule feature that allowed to stat dependencies between tests. So instead of manually grouping the schedule, have 'numerology' state that it depends on int2, int4, int8, float4, float8, which means it can actually be started earlier than it currently can in many cases. Greetings, Andres Freund