Обсуждение: https://www.postgresql.org/docs/current/kernel-resources.html

Поиск
Список
Период
Сортировка

https://www.postgresql.org/docs/current/kernel-resources.html

От
PG Doc comments form
Дата:
The following documentation comment has been logged on the website:

Page: https://www.postgresql.org/docs/17/kernel-resources.html
Description:

The following:

Another approach, which can be used with or without altering
vm.overcommit_memory, is to set the process-specific OOM score adjustment
value for the postmaster process to -1000, thereby guaranteeing it will not
be targeted by the OOM killer. The simplest way to do this is to execute

echo -1000 > /proc/self/oom_score_adj

in the PostgreSQL startup script just before invoking postgres. Note that
this action must be done as root, or it will have no effect; so a root-owned
startup script is the easiest place to do it. If you do this, you should
also set these environment variables in the startup script before invoking
postgres:

export PG_OOM_ADJUST_FILE=/proc/self/oom_score_adj
export PG_OOM_ADJUST_VALUE=0

These settings will cause postmaster child processes to run with the normal
OOM score adjustment of zero, so that the OOM killer can still target them
at need. You could use some other value for PG_OOM_ADJUST_VALUE if you want
the child processes to run with some other OOM score adjustment. 

----

I believe, that the export of PG_OOM_ADJUST_FILE should not point to the
file that the postmaster uses, but should be for example:

export PG_OOM_ADJUST_FILE=/proc/self/oom_score_adj_child

As if the example is blindly followed, then postmaster version of the file
would be updated and become a candidate to be killed.

If I've misunderstood then more detail needs to should why the
PG_OOM_ADJUST_FILE should point to the same file for child and postmaster
processes.

Overall great work on the documentation, as I'm still newbe to PostreSQL but
many years of using other databases.

Re: https://www.postgresql.org/docs/current/kernel-resources.html

От
Tom Lane
Дата:
PG Doc comments form <noreply@postgresql.org> writes:
> I believe, that the export of PG_OOM_ADJUST_FILE should not point to the
> file that the postmaster uses, but should be for example:

> export PG_OOM_ADJUST_FILE=/proc/self/oom_score_adj_child

> As if the example is blindly followed, then postmaster version of the file
> would be updated and become a candidate to be killed.

I don't think so.  In the first place, you misunderstand what
this variable does: it is only consulted by postmaster child
processes not the postmaster itself.  In the second place,
"/proc/self/oom_score_adj_child" isn't universal (it does not
exist on any of the Red-Hat-based distros I checked).

If it were universal and had the semantics that I guess it means from
the name, we could perhaps implement this feature differently and more
simply.  But it's not, and I don't see a lot of value in supporting
two different implementations.

            regards, tom lane