From: | David Rowley <dgrowleyml(at)gmail(dot)com> |
---|---|
To: | Andres Freund <andres(at)anarazel(dot)de> |
Cc: | pgsql-hackers(at)postgresql(dot)org, Robert Haas <robertmhaas(at)gmail(dot)com>, Michael Paquier <michael(dot)paquier(at)gmail(dot)com>, Tomas Vondra <tv(at)fuzzy(dot)cz> |
Subject: | Re: Avoid stack frame setup in performance critical routines using tail calls |
Date: | 2023-07-21 02:03:46 |
Message-ID: | CAApHDvrZmQ6RvJ1KDj_v30FmTmAgegtmf=Woxx7HYM0g05wQHw@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On Wed, 19 Jul 2023 at 20:52, Andres Freund <andres(at)anarazel(dot)de> wrote:
> David and I were chatting about this patch, in the context of his bump
> allocator patch. Attached is a rebased version that is also split up into two
> steps, and a bit more polished.
I've only just briefly read through the updated patch, but I did take
it for a spin to see what sort of improvements I can get from it.
The attached graph shows the time in seconds that it took for each
allocator to allocate 10GBs of memory resetting the context once 1MB
is allocated. The data point for aset with 32-byte chunks takes
master 1.697 seconds and with both patches, it goes down to 1.264,
which is a 34% increase in performance.
It's pretty nice that we can hide the AllocSizeIsValid tests inside
the allocChunkLimit path and pretty good that we can skip the NULL
checks in most cases since we're not having to check for malloc
failure unless we malloc a new block.
I'll reply back with a more detailed review next week.
David
Attachment | Content-Type | Size |
---|---|---|
palloc_performance_chart.png | image/png | 149.1 KB |
From | Date | Subject | |
---|---|---|---|
Next Message | Michael Paquier | 2023-07-21 02:14:57 | Re: Use COPY for populating all pgbench tables |
Previous Message | Peter Smith | 2023-07-21 02:00:01 | Re: [PATCH] Reuse Workers and Replication Slots during Logical Replication |