Hi, On 2023-06-14 12:40:18 +0700, John Naylor wrote: > On Sat, Nov 5, 2022 at 3:27 PM Andres Freund <and...@anarazel.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.
Cool - I think we have some real potential for substantial wins around this. > 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? I think that is the main bit, yes. We could just try to do this for the libraries, but accept failure to do so? Greetings, Andres Freund