Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1eeRLC-0007bz-Iu for pgsql-hackers@arkaria.postgresql.org; Wed, 24 Jan 2018 20:08:14 +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 1eeRLC-0007YP-6O for pgsql-hackers@arkaria.postgresql.org; Wed, 24 Jan 2018 20:08:14 +0000 Received: from makus.postgresql.org ([2001:4800:1501:1::229]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1eeRLB-0007YF-Sd for pgsql-hackers@lists.postgresql.org; Wed, 24 Jan 2018 20:08:14 +0000 Received: from out5-smtp.messagingengine.com ([66.111.4.29]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.89) (envelope-from ) id 1eeRL9-0004Jb-Gj for pgsql-hackers@postgresql.org; Wed, 24 Jan 2018 20:08:12 +0000 Received: from compute5.internal (compute5.nyi.internal [10.202.2.45]) by mailout.nyi.internal (Postfix) with ESMTP id BC2EE2278C; Wed, 24 Jan 2018 15:08:10 -0500 (EST) Received: from frontend2 ([10.202.2.161]) by compute5.internal (MEProxy); Wed, 24 Jan 2018 15:08:10 -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=r7D1GfHtddk14fjtfBbujRZc98Y+K +RLXHoxtCs3ABI=; b=GoeT4rXNq9cwQtKe1elffu5rW4i/iBlpwwTlx0xwzNikr EDz0uVOdV5YdyzoEkneE7on0otozXPngCACBp2zNl5yj+Oap8DDjt/gJX6ajJ1p3 IIWhw2WTthVINhp7F+52FE8XhUHeKFeEBlc5URaYSREP516Ir4v6kLRh32VZ105Z n9dXNwgDAkpv9JiTitapWN1YBHh8cMpLKJtcAwTn40RKeD9wLKfnvebOG8xxnsvu 6+eghN2l7f22wml0m7+X0+Ddax4XAUK4w+erkGjpIrhWSgg3mpJdHyGG6/AX6DJY OLQ3mp/vWLi3+CVsh6vI8NfFIaTBx65/2uLzKpf3w== X-ME-Sender: Received: from intern.anarazel.de (unknown [136.24.76.189]) by mail.messagingengine.com (Postfix) with ESMTPA id 78753244C7; Wed, 24 Jan 2018 15:08:10 -0500 (EST) Date: Wed, 24 Jan 2018 12:08:09 -0800 From: Andres Freund To: Tom Lane Cc: Robert Haas , Thomas Munro , "pgsql-hackers@postgresql.org" Subject: Re: pgsql: Add parallel-aware hash joins. Message-ID: <20180124200809.5g62oaifo7s75mge@alap3.anarazel.de> References: <4503.1514435195@sss.pgh.pa.us> <21339.1516633310@sss.pgh.pa.us> <24384.1516665190@sss.pgh.pa.us> <12736.1516749056@sss.pgh.pa.us> <20180124182841.ep7yr6tgqazsoilu@alap3.anarazel.de> <14488.1516822307@sss.pgh.pa.us> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <14488.1516822307@sss.pgh.pa.us> List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk Hi, On 2018-01-24 14:31:47 -0500, Tom Lane wrote: > However ... if you spend any time looking at the behavior of that, > the hashjoin tests are still problematic. I think my main problem with your arguments is that you basically seem to say that one of the more complex features in postgres can't increase the test time. And I just don't agree with that. If we can reduce some unnecessary overhead (as Thomas iirc has done somwhere nearby) - great, if we can hide the overhead by scheduling the test better or breaking it up - also great. But if that's a good chunk of work I think it's entirely reasonable to not necessarily consider that the best use of time. It doesn't seem too surprising that a test that relies on starting multiple background processes in multiple places will be among the more expensive ones. We clearly would e.g. benefit from being able to reuse workers, to avoid constantly starting/stopping them. > (The overall runtime for "make installcheck-parallel" on this machine > is about 17.3 seconds right now.) The next slowest test script in > the join test's group is "update", at 0.373 seconds; so over 1.5 sec > of the total 17.3 sec runtime is being spent solely in the join script. Might be worth breaking up join a bit, that won't get rid of all the wall time overhead, but should reduce it. Reordering to run parallel to other slow tests might also be worthwhile. > So I continue to maintain that an unreasonable fraction of the total > resources devoted to the regular regression tests is going into these > new hashjoin tests. > > One caveat is that old machines also > > somewhat approximate testing with more instrumentation / debugging > > enabled (say valgrind, CLOBBER_CACHE_ALWAYS, etc). So removing excessive > > test overhead has still quite some benefits. But I definitely do not > > want to lower coverage to achieve it. > > I don't want to lower coverage either. I do want some effort to be > spent on achieving test coverage intelligently, rather than just throwing > large test cases at the code without consideration of the costs. I think this accusation is unfair. Are you really suggesting that nobody else cares about the runtime of the new tests? Just because other people's tradeoffs come down at a somewhat different place, doesn't mean they add tests "without consideration of the costs". > Based on these numbers, it seems like one easy thing we could do to > reduce parallel check time is to split the plpgsql test into several > scripts that could run in parallel. But independently of that, > I think we need to make an effort to push hashjoin's time back down. If we had a dependency based system as I suggested nearby, we could have pg_regress order the tests so that the slowest ones that have dependencies fulfilled are started first... Greetings, Andres Freund