Redefine max_files_per_process to control additionally opened files
authorAndres Freund <andres@anarazel.de>
Mon, 24 Mar 2025 22:20:18 +0000 (18:20 -0400)
committerAndres Freund <andres@anarazel.de>
Mon, 24 Mar 2025 22:20:18 +0000 (18:20 -0400)
commitadb5f85fa5a00d6d5759df55feb16dc22b0fc8d7
treea65425a8f98628242b91b032d791d7d28dc261fd
parent7d559c8580f722dc40f2c34573e53e33626679e0
Redefine max_files_per_process to control additionally opened files

Until now max_files_per_process=N limited each backend to open N files in
total (minus a safety factor), even if there were already more files opened in
postmaster and inherited by backends.  Change max_files_per_process to control
how many additional files each process is allowed to open.

The main motivation for this is the patch to add io_method=io_uring, which
needs to open one file for each backend.  Without this patch, even if
RLIMIT_NOFILE is high enough, postmaster will fail in set_max_safe_fds() if
started with a high max_connections.  The cause of the failure is that, until
now, set_max_safe_fds() subtracted the already open files from
max_files_per_process.

Reviewed-by: Noah Misch <noah@leadboat.com>
Discussion: https://postgr.es/m/w6uiicyou7hzq47mbyejubtcyb2rngkkf45fk4q7inue5kfbeo@bbfad3qyubvs
Discussion: https://postgr.es/m/CAGECzQQh6VSy3KG4pN1d=h9J=D1rStFCMR+t7yh_Kwj-g87aLQ@mail.gmail.com
doc/src/sgml/config.sgml
src/backend/storage/file/fd.c
src/backend/utils/misc/guc_tables.c