tlaro...@polynum.com 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


Greetings,
-- 
-- 
                                Michael van Elst
Internet: mlel...@serpens.de
                                "A potential Snark may lurk in every tree."

Reply via email to