Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1m6b4l-0003Kp-F3 for pgsql-performance@arkaria.postgresql.org; Thu, 22 Jul 2021 15:57:31 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1m6b4C-0005ge-Hb for pgsql-performance@arkaria.postgresql.org; Thu, 22 Jul 2021 15:56:56 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1m6b4C-0005g7-9P for pgsql-performance@lists.postgresql.org; Thu, 22 Jul 2021 15:56:56 +0000 Received: from sss.pgh.pa.us ([66.207.139.130]) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1m6b49-0000hm-Ii for pgsql-performance@postgresql.org; Thu, 22 Jul 2021 15:56:55 +0000 Received: from sss1.sss.pgh.pa.us (localhost [127.0.0.1]) by sss.pgh.pa.us (8.15.2/8.15.2) with ESMTP id 16MFunEO785219; Thu, 22 Jul 2021 11:56:49 -0400 From: Tom Lane To: "ldh@laurent-hasson.com" cc: David Rowley , Peter Geoghegan , Justin Pryzby , "pgsql-performance@postgresql.org" Subject: Re: Big performance slowdown from 11.2 to 13.3 In-reply-to: <784576.1626968702@sss.pgh.pa.us> References: <20210721191528.GC19620@telsasoft.com> <732758.1626911007@sss.pgh.pa.us> <784576.1626968702@sss.pgh.pa.us> Comments: In-reply-to Tom Lane message dated "Thu, 22 Jul 2021 11:45:02 -0400" MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-ID: <785217.1626969409.1@sss.pgh.pa.us> Content-Transfer-Encoding: quoted-printable Date: Thu, 22 Jul 2021 11:56:49 -0400 Message-ID: <785218.1626969409@sss.pgh.pa.us> List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk I wrote: > "ldh@laurent-hasson.com" writes: >> It's still spilling to disk and seems to cap at 2.5GB of memory usage i= n spite of configuration. > That is ... weird. Oh: see get_hash_mem: hash_mem =3D (double) work_mem * hash_mem_multiplier; /* * guc.c enforces a MAX_KILOBYTES limitation on work_mem in order to * support the assumption that raw derived byte values can be stored in * 'long' variables. The returned hash_mem value must also meet this * assumption. * * We clamp the final value rather than throw an error because it should * be possible to set work_mem and hash_mem_multiplier independently. */ if (hash_mem < MAX_KILOBYTES) return (int) hash_mem; return MAX_KILOBYTES; So basically, we now have a hard restriction that hashaggs can't use more than INT_MAX kilobytes, or approximately 2.5GB, and this use case is getting eaten alive by that restriction. Seems like we need to do something about that. regards, tom lane