Re: NUMA settings

From: Marc Rechté <marc4(at)rechte(dot)fr>
To: pgsql-performance(at)lists(dot)postgresql(dot)org
Subject: Re: NUMA settings
Date: 2020-05-05 05:56:54
Message-ID: fd8fb5bd-eac6-7491-f1e8-3761387d9d03@rechte.fr
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-performance

> Hi,
>
> On 2020-04-29 10:50:54 +0200, Laurenz Albe wrote:
>> On Wed, 2020-04-29 at 08:54 +0200, Marc Rechté wrote:
>>> I am trying to figure out the recommended settings for a PG dedicated
>>> machine regarding NUMA.
>>>
>>> I assume that the shared buffers are using Huge Phages only. Please
>>> correct if I am wrong:
>>>
>>> 1) postgres is started with numactl --interleave=all, in order to spread
>>> memory pages evenly on nodes.
>>> 2) wm.swappiness is left to the default 60 value, because Huge Pages
>>> never swap, and we wish the idle backend to be swapped out if necessary.
>>> 3) vm.zone_reclaim_mode = 0. I am not sure it is the right choice.
>>> 4) kernel.numa_balancing = 1. Only if it is confirmed that it will not
>>> affect postgres, because started with the interleave policy.
>>
>> I am not the top expert on this, but as far as I can tell:
>>
>> - Disabling NUMA is good if you want to run a single database cluster
>> on the machine that should use all resources.
>>
>> If you want to run several clusters that share the resources, leaving
>> NUMA support enabled might be the better thing to do.
>>
>> - If you can, disable NUMA in the BIOS, on as low a level as possible.
>
> I am doubtful that that's generally going to be beneficial. I think the
> strategy of starting postgres with interleave is probably a better
> answer.
>
> - Andres
>
>

Thanks for answers. Further readings make me think that we should *not*
start postgres with numactl --interleave=all: this may have counter
productive effect on backends anon memory (heap, stack). IMHO, what is
important is to use Huge Pages for shared buffers: they are allocated
(reserved) by the kernel at boot time and spread evenly on all nodes. On
top of that they never swap.

My (temp) conclusions are following:
vm.zone_reclaim_mode = 0
kernel.numa_balancing = 0 (still not sure with that choice)
wm.swappiness = 60 (default)
start postgres as usual (no numactl)

In response to

Responses

Browse pgsql-performance by date

  From Date Subject
Next Message Laurenz Albe 2020-05-05 08:00:02 Re: NUMA settings
Previous Message Bhupendra Babu 2020-05-05 03:37:49 Re: good book or any other resources for Postgresql