core: add a new call for bumping RLIMIT_NOFILE to "high" values
authorLennart Poettering <lennart@poettering.net>
Mon, 1 Oct 2018 15:38:48 +0000 (17:38 +0200)
committerLennart Poettering <lennart@poettering.net>
Tue, 16 Oct 2018 14:33:55 +0000 (16:33 +0200)
commit99ab6fdf8c68bbe05a127b59ae03d2156d6ea856
treedb8e05701daeddf7deb883c29989794451da5ef7
parentd6e069f412edc02a0f2130fa47955d02e378d5f5
core: add a new call for bumping RLIMIT_NOFILE to "high" values

Following discussions with some kernel folks at All Systems Go! it
appears that file descriptors are not really as expensive as they used
to be (both memory and performance-wise) and it should thus be OK to allow
programs (including unprivileged ones) to have more of them without ill
effects.

Unfortunately we can't just raise the RLIMIT_NOFILE soft limit
globally for all processes, as select() and friends can't handle fds
>= 1024, and thus unexpecting programs might fail if they accidently get
an fd outside of that range. We can however raise the hard limit, so
that programs that need a lot of fds can opt-in into getting fds beyond
the 1024 boundary, simply by bumping the soft limit to the now higher
hard limit.

This is useful for all our client code that accesses the journal, as the
journal merging logic might need a lot of fds. Let's add a unified
function for bumping the limit in a robust way.
src/basic/rlimit-util.c
src/basic/rlimit-util.h