NetBSD-Users archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: firefox and maxfiles and rlimit.descriptors



On Sat, Nov 14, 2020 at 10:59:15PM +0000, Michael van Elst wrote:
> tlaronde%polynum.com@localhost writes:
> 
> >> >But how to increase proc.curproc.rlimit.descriptors.{hard,soft}?
> 
> >But this is the problem: ulimit -n doesn't accept it either. So I
> >concluded that the limit set by the kernel imposes, logically, a limit.
> 
> The hard limit is limited by the kernel limit.
> The soft limit is limited by the hard limit
> 
> only root can raise the hard limit. For some reason, trying to
> exceed the kernel limit is silently ignored.
> 
> E.g.:
> 
> $ ulimit -Hn
> 1772
> $ ulimit -Sn
> 1024
> $ ulimit -Sn 1772
> $ ulimit -Sn
> 1772
> $ ulimit -Sn 1773
> ulimit: error setting limit (Invalid argument)
> $ ulimit -Hn 2000
> ulimit: error setting limit (Operation not permitted)
> 
> 
> # sysctl -n kern.maxfiles
> 1772
> # ulimit -Hn
> 1772
> # ulimit -Hn 2000
> # ulimit -Hn
> 1772
> 
> # sysctl -w kern.maxfiles=5000
> kern.maxfiles: 1772 -> 5000
> # ulimit -Hn
> 1772
> # ulimit -Hn 2000
> # ulimit -Hn
> 2000
> # ulimit -Sn
> 1772
> # ulimit -Sn 2000
> # ulimit -Sn
> 2000
> # ulimit -Sn 2001
> ulimit: error setting limit (Invalid argument)
> 
> 
> Since limits are inherited, changing the kernel limit doesn't do
> anything unless you run a root process that raises the limit. Not
> even new logins will help.
> 
> You could:
> 
> - configure /etc/login.conf with explicit limits
>   a new login should then set the new limits.
>   But this doesn't necessarily apply to graphical logins.
> 
> - set a new hard limit for the init process like:
>   sysctl -w proc.1.rlimit.descriptors.hard=2000
>   And then make init spawn a new tty session (already running
>   getty processes still have the old limit).
> 
> To get this on startup, it's not sufficient to set kern.maxfiles
> in /etc/sysctl.conf. You need to set limits for proc.1 and for
> the shell that runs the rc scripts. This can be done with a sourced
> rc script.
> 
> >And:
> >sysctl -a|grep descriptors
> >only return proc.curproc...
> 
> Yes, the proc.$pid entries are hidden. Just try something like: sysctl proc.1
> 

Thank you to have taken the time to answer thoroughly!

Best,
-- 
        Thierry Laronde <tlaronde +AT+ polynum +dot+ com>
                     http://www.kergis.com/
                    http://kertex.kergis.com/
                       http://www.sbfa.fr/
Key fingerprint = 0FF7 E906 FBAF FE95 FD89  250D 52B1 AE95 6006 F40C


Home | Main Index | Thread Index | Old Index