Re: remap the .text segment into huge pages at run time

From: John Naylor <john(dot)naylor(at)enterprisedb(dot)com>
To: Andres Freund <andres(at)anarazel(dot)de>
Cc: PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>, Thomas Munro <thomas(dot)munro(at)gmail(dot)com>
Subject: Re: remap the .text segment into huge pages at run time
Date: 2023-06-14 05:40:18
Message-ID: CAFBsxsEW1fTbhciaGQM1FtJsKtidJG1QGs79nVEny4SZnpjEyg@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Sat, Nov 5, 2022 at 3:27 PM Andres Freund <andres(at)anarazel(dot)de> wrote:

> /*
> * Make huge pages out of it. Requires at least linux 6.1. We
could
> * fall back to MADV_HUGEPAGE if it fails, but it doesn't do all
that
> * much in older kernels.
> */
> #define MADV_COLLAPSE 25
> r = madvise(addr, advlen, MADV_COLLAPSE);
> if (r != 0)
> fprintf(stderr, "MADV_COLLAPSE failed: %m\n");
>
>
> A real version would have to open /proc/self/maps and do this for at least
> postgres' r-xp mapping. We could do it for libraries too, if they're
suitably
> aligned (both in memory and on-disk).

Hi Andres, my kernel has been new enough for a while now, and since TLBs
and context switches came up in the thread on... threads, I'm swapping this
back in my head.

For the postmaster, it should be simple to have a function that just takes
the address of itself, then parses /proc/self/maps to find the boundaries
within which it lies. I haven't thought about libraries much. Though with
just the postmaster it seems that would give us the biggest bang for the
buck?

--
John Naylor
EDB: http://www.enterprisedb.com

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Peter Smith 2023-06-14 05:45:11 Re: [PATCH] Reuse Workers and Replication Slots during Logical Replication
Previous Message Amit Langote 2023-06-14 05:34:56 Re: Views no longer in rangeTabls?