Increasing limits in kernel

Kevin Littlejohn (
Fri, 03 Jan 1997 10:44:50 +0800

This seems to be a big one, and I'm hoping there'll be some movement on a
permanent increase to the limits in the distributed kernel, but I'm
betting it won't happen in a 2.0.x kernel *shrug*. In the meantime, I
have a few questions coming from previous messages:

The changes we have made, inside the kernel, are as follows:

include/linux/net_alias.h - line 28, NET_ALIAS_MAX_SLOT = 512
include/linux/fs.h - line 30, NR_OPEN = 1024
include/linux/fs.h - line 39, NR_INODE = 8192
include/linux/fs.h - line 40, NR_FILE = 4096
include/linux/limits.h - line 4, NR_OPEN = 1024
include/linux/limits.h - line 9, OPEN_MAX = 1024

My understanding here is that increasing NET_ALIAS_MAX_SLOT increases the
number of aliases I can have on a single interface (seems a relatively
easy patch), NR_OPEN seems to be defined in several places, and is the
numbr of file descriptors a single process can hold open, OPEN_MAX is also
llisted as "number of files a process can hold open", so I'm not sure what
the difference is here, NR_FILE and NR_INODE are presumably filesystem (as
opposed to network) related, although I had thought the difference was
marginal. Anyone who can fill me in on those?

In addition, I see a diff go through this list the other day, purporting
to raise the limits to 2048 (which is described as a "bad thing"(tm) by
others, who say (g)libc has a 1024-based limit to NR_OPEN built into it
anyway - knowing where/how to change that could be worthwhile, if it's not
going to break other things badly. Said diff also contained:

a patch to include/asm-i386/resource.h that set INIT_NR_OPEN to be the max
of NR_OPEN and 256, but I can't see _any_ other reference to INIT_NR_OPEN
in the kernel off-hand, so I'm curious what this achieves

a higher NGROUPS_MAX - this looks like another little tweak, presumably it
doesn't break anything too drastically?

an OPEN_MAX twice as high as NR_OPEN - how? What's the difference between
these two defines?

changes to posix_types.h - __FD_SETSIZE increased to 2048 (which is
NR_OPEN in this patch), and changes to /usr/include/gnu/types.h - same
change. This one would appear to be a change to libc, in a sidewise sort
of way, and looks to be the most likely candidate for breaking things.
Can someone give an explanation of exactly what this does, and what
repurcusions it's likely to have?

Basically, it seems like there's very little documentation for these
changes. I'd like to be able to help out here, but I'm a little in the
dark myself :( If anyone can answer even some of the questions above, I'd
love to put together a web page or mini-FAQ explaining it all :)


Kevin Littlejohn                           
Wantree Development                                       tel:    481 4433
Perth, Western Australia 6000                             fax:    481 0393
"Hours of frustration punctuated by moments of sheer terror" - a.s.r.