diff options
author | Stefano Brivio <sbrivio@redhat.com> | 2021-03-18 11:36:55 +0100 |
---|---|---|
committer | Stefano Brivio <sbrivio@redhat.com> | 2021-03-18 12:58:07 +0100 |
commit | ef25cb39a9cb9e36a8872dcd252686023eaec959 (patch) | |
tree | ab4df444b0336e44da7b9991d999c55be80ce087 | |
parent | 48ca38c6068bd15a94b1ecf2977d3f0160bbe63b (diff) | |
download | passt-ef25cb39a9cb9e36a8872dcd252686023eaec959.tar passt-ef25cb39a9cb9e36a8872dcd252686023eaec959.tar.gz passt-ef25cb39a9cb9e36a8872dcd252686023eaec959.tar.bz2 passt-ef25cb39a9cb9e36a8872dcd252686023eaec959.tar.lz passt-ef25cb39a9cb9e36a8872dcd252686023eaec959.tar.xz passt-ef25cb39a9cb9e36a8872dcd252686023eaec959.tar.zst passt-ef25cb39a9cb9e36a8872dcd252686023eaec959.zip |
passt: Set soft limit for number of open files to hard limit
Default value for /proc/sys/fs/nr_open is 2^20, which is more than
enough: set this hard limit as current (soft) limit on start, and
drop the 'ulimit -n' from the demo script.
Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
-rwxr-xr-x | doc/demo.sh | 1 | ||||
-rw-r--r-- | passt.c | 12 |
2 files changed, 12 insertions, 1 deletions
diff --git a/doc/demo.sh b/doc/demo.sh index a5b45b5..fe24751 100755 --- a/doc/demo.sh +++ b/doc/demo.sh @@ -75,7 +75,6 @@ sysctl -w net.ipv6.conf.all.forwarding=1 ethtool -K veth_passt tx off ip netns exec passt ethtool -K veth_passt tx off ip netns exec passt sysctl -w net.ipv4.ping_group_range="0 2147483647" -ulimit -n 300000 ip netns exec passt ./passt @@ -18,6 +18,7 @@ #include <sys/socket.h> #include <sys/types.h> #include <sys/ioctl.h> +#include <sys/resource.h> #include <sys/un.h> #include <ifaddrs.h> #include <linux/if_ether.h> @@ -513,6 +514,7 @@ int main(int argc, char **argv) struct timespec last_time; struct ctx c = { 0 }; int nfds, i, fd_unix; + struct rlimit limit; if (argc != 1) usage(argv[0]); @@ -528,6 +530,16 @@ int main(int argc, char **argv) exit(EXIT_FAILURE); } + if (getrlimit(RLIMIT_NOFILE, &limit)) { + perror("getrlimit"); + exit(EXIT_FAILURE); + } + limit.rlim_cur = limit.rlim_max; + if (setrlimit(RLIMIT_NOFILE, &limit)) { + perror("setrlimit"); + exit(EXIT_FAILURE); + } + if (icmp_sock_init(&c) || tcp_sock_init(&c) || udp_sock_init(&c)) exit(EXIT_FAILURE); |