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 1m5hiO-0006kR-5v for pgsql-hackers@arkaria.postgresql.org; Tue, 20 Jul 2021 04:50:44 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1m5hiK-0004X6-Ng for pgsql-hackers@arkaria.postgresql.org; Tue, 20 Jul 2021 04:50:40 +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 1m5hiK-0004Wx-EO for pgsql-hackers@lists.postgresql.org; Tue, 20 Jul 2021 04:50:40 +0000 Received: from mail-pj1-x1034.google.com ([2607:f8b0:4864:20::1034]) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1m5hiD-0007yG-Q0 for pgsql-hackers@postgresql.org; Tue, 20 Jul 2021 04:50:39 +0000 Received: by mail-pj1-x1034.google.com with SMTP id bt15so13001993pjb.2 for ; Mon, 19 Jul 2021 21:50:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=sONfcL6SRrx+EO3/UFyqthfh29qN+Wj0CONTgXOAifg=; b=quGbrT5fFdjmEtuKZ7ynTK3xJjeL2UoqDtfnFCr1nxjik7/FltYOH7etZSi59qlVyw h6w992MezYyrbEaYAkxexsaKCVmMvV1fO3wWRrW6SHe5cbruu+QtRPw7aoBzGMxEkbB6 o0ni+IOfFBFhsU4CeabprBx8DX9b+hqrkPGEG/1EeoIu2GXZ6AjRiMc7TnzjwShH0eaH 3c+DqVKcAG/CSk3L7XFfCf4M1/o8yimukMo36eyOkx6njhHqEYdIrXVz+4Vzpqq0P/DG 40ZpIbktUAmykmNk4Av27BQCOTrNrN38jL/FYtYSpTaH7pN1eVko+OKu1PR4cdPkyXwh hHdA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=sONfcL6SRrx+EO3/UFyqthfh29qN+Wj0CONTgXOAifg=; b=ALDM0RjfX+9q+dbL9j9r8PcZO2I54ZGyFVYh1mRg5fNvCbm5rRDi+8v70s/50cc2vV ZRFvCtWh/vHvg6nPD+xerMMjbdJ3gix7Qa0jMK9il61MV64Y9RKM56BsoSJqIrSBG/+S QzUHuzsdllUCx71579HeuhxUAD55k5pEpA6KL00Iq9ZLnUti0jhf2D9LBon4pOloCHDG gdOPPPAIcAD8uxYQoebHeHqKUexFIiPn/E6Xwkq1U5K2kotklR5bx65Diy50a7NJiKKR p4nN9GL1zg5gD5sTpxkuDpeUxN8YTEUU3jteCo3efzafd/YPaqMhVqT1surQYn6gd25h TK7w== X-Gm-Message-State: AOAM5329uGB4XnX2Ino1nkk4XDL2cih5Sop6Ie1DBdUlEuxaFo1QXsby CUYXvyPg8/MiS0SAh0VooX8zb3tKDNMLkH+ODyo= X-Google-Smtp-Source: ABdhPJxCVdZJXr9KZrGV/bMrnTjbpH5cNcvZm6hv2QKOcoRkq6AI/Mf8Izj360PsUN8huSwgBlmKQ6hLsHK4xkk92oI= X-Received: by 2002:a17:90a:f296:: with SMTP id fs22mr6203354pjb.155.1626756631714; Mon, 19 Jul 2021 21:50:31 -0700 (PDT) MIME-Version: 1.0 References: <20210719195950.gavgs6ujzmjfaiig@alap3.anarazel.de> In-Reply-To: <20210719195950.gavgs6ujzmjfaiig@alap3.anarazel.de> From: David Rowley Date: Tue, 20 Jul 2021 16:50:09 +1200 Message-ID: Subject: Re: Avoid stack frame setup in performance critical routines using tail calls To: Andres Freund Cc: PostgreSQL-development , Robert Haas , Michael Paquier , Tomas Vondra Content-Type: multipart/mixed; boundary="0000000000002b82c005c786cb7b" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000002b82c005c786cb7b Content-Type: text/plain; charset="UTF-8" On Tue, 20 Jul 2021 at 08:00, Andres Freund wrote: > I have *not* carefully benchmarked this, but a quick implementation of this > does seem to increase readonly pgbench tps at a small scale by 2-3% (both Interesting. I've not taken the time to study the patch but I was running some other benchmarks today on a small scale pgbench readonly test and I took this patch for a spin to see if I could see the same performance gains. This is an AMD 3990x machine that seems to get the most throughput from pgbench with 132 processes I did: pgbench -T 240 -P 10 -c 132 -j 132 -S -M prepared --random-seed=12345 postgres master = dd498998a Master: 3816959.53 tps Patched: 3820723.252 tps I didn't quite get the same 2-3% as you did, but it did come out faster than on master. David --0000000000002b82c005c786cb7b Content-Type: text/plain; charset="US-ASCII"; name="benchresults.txt" Content-Disposition: attachment; filename="benchresults.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_krbksdy90 CW1hc3RlcglkZW5zZSBoYXNoIExvY2tSZWxlYXNlQWxsICsgYXNldCB0YWlsIGNhbGwJYXNldCB0 YWlsIGNhbGwJZGVuc2UgaGFzaCBMb2NrUmVsZWFzZUFsbAoxMAkzNzU4MjAxLjIJMzc0MTkyNS42 CTM3Mzc3MDEuNQkzNzEzNTIxLjUKMjAJMzgxMDEyNS41CTM4NjE1NzIuNQkzODMwODYzLjcJMzg0 NDE0Mi45CjMwCTM4MDY1MDUuMQkzODUxMTY0LjQJMzgzMjI1Ny45CTM4NDg0NTgKNDAJMzgxNjA5 NC44CTM4NTUyMzIuNAkzODMyMzA1LjcJMzg1NTcwNi42CjUwCTM4MjAzMTcuMgkzODQ2OTQxCTM4 Mjk2NDEuNQkzODUxNzE3LjcKNjAJMzgyNzgwOQkzODQ5NDkwLjQJMzgxMjI1NC41CTM4NTE0OTku NAo3MAkzODI4NzU3LjkJMzg0NDU4Mi44CTM4MjkwOTcuOAkzODQ5MzEyCjgwCTM4MjQ0OTIuMQkz ODQzMTYxLjgJMzgyMTM4MwkzODUyMzc4LjgKOTAJMzgxNjUwMi4xCTM4NTE5NzAuOAkzODI1MTE5 LjIJMzg1NDc5My44CjEwMAkzODE5MTI0LjEJMzgzOTY5NS41CTM4MzkyODYuNwkzODYwNDE4LjYK MTEwCTM4MTYxNTQuMwkzODUxMzAyLjgJMzgyMTIwOS41CTM4NDUzMjcuNwoxMjAJMzgxNzA3MC41 CTM4NTI5NzQuMgkzODMzNzgxCTM4NDU4NDIuNQoxMzAJMzgxNTQyNC43CTM4NTQzNzkuMQkzODMw ODEyLjUJMzg0NzYyNgoxNDAJMzgyMzYzMS4xCTM4NTI0NDkuMQkzODI1MjYxLjkJMzg0Njc2MC42 CjE1MAkzODIwOTYzLjgJMzgzNzQ5My41CTM4MjA3MDMuMgkzODQwMTk2LjYKMTYwCTM4Mjc3MzcJ MzgzNzgwOS43CTM4MzUyNzguNAkzODQxMTQ5LjMKMTcwCTM4Mjc3NzkuMgkzODUxNzk5LjQJMzgx ODQzMC4zCTM4NDAxMzAuOQoxODAJMzgyOTM1MgkzODUzMDk0CTM4MjMyODYuMQkzODQyODE0LjUK MTkwCTM4MjU1MTguMwkzODU0OTEyLjgJMzgxNjMyOS40CTM4NDE5OTEKMjAwCTM4MjM0NzcuMgkz ODM4OTk4LjYJMzgxNjA2MC44CTM4MzkzOTAuNwoyMTAJMzgwOTMwNC4zCTM4NDU3NzYuNwkzODE0 NzM3LjIJMzgzNjQzMy41CjIyMAkzODE0MzI4LjUJMzg0MTM5NC43CTM4MTg4OTQJMzg0MjA3My43 CjIzMAkzODExMzk5LjMJMzgzOTM2MC44CTM4MTE5MzkJMzg0Mzc4MC43CmF2ZwkzODE2OTU5LjUz CTM4NDMzNjguODA5CTM4MjA3MjMuMjUyCTM4NDA2NzIuNDc4CgkJMTAwLjY5JQkxMDAuMTAlCTEw MC42MiU= --0000000000002b82c005c786cb7b--