Re: NUMA packaging and patch

From: Christoph Berg <cb(at)df7cb(dot)de>
To: Kevin Grittner <kgrittn(at)ymail(dot)com>
Cc: Pg Hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: NUMA packaging and patch
Date: 2014-07-01 09:01:04
Message-ID: 20140701090104.GA15590@msg.df7cb.de
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Re: Kevin Grittner 2014-06-09 <1402267501(dot)41111(dot)YahooMailNeo(at)web122304(dot)mail(dot)ne1(dot)yahoo(dot)com>
> @@ -536,6 +539,24 @@ PGSharedMemoryCreate(Size size, bool makePrivate, int port,
> */
> }
>
> +#ifdef USE_LIBNUMA
> + /*
> + * If this is not a private segment and we are using libnuma, make the
> + * large memory segment interleaved.
> + */
> + if (!makePrivate && numa_available())
> + {
> + void *start;
> +
> + if (AnonymousShmem == NULL)
> + start = memAddress;
> + else
> + start = AnonymousShmem;
> +
> + numa_interleave_memory(start, size, numa_all_nodes_ptr);
> + }
> +#endif

How much difference would it make if numactl --interleave=all was used
instead of using numa_interleave_memory() on the shared memory
segments? I guess that would make backend-local memory also
interleaved, but it would avoid having a dependency on libnuma in the
packages.

The numactl manpage even has this example:

numactl --interleave=all bigdatabase arguments Run big
database with its memory interleaved on all CPUs.

It is probably better to have native support in the postmaster, though
this could be mentioned as an alternative in the documentation.

Christoph
--
cb(at)df7cb(dot)de | http://www.df7cb.de/

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Ronan Dunklau 2014-07-01 09:47:03 Re: Array of composite types returned from python
Previous Message Pavel Stehule 2014-07-01 08:52:27 Re: Autonomous Transaction (WIP)