Apps are increasingly using more than 1024 file descriptors. See discussion in several distro bug trackers, e.g. BugLink: http://bugs.launchpad.net/bugs/663090 https://issues.rpath.com/browse/RPL-2054 You don't want to raise the default soft limit, since that might break apps that use select(), but it's safe to raise the default hard limit; that way, apps that know they need lots of file descriptors can raise their soft limit without needing root, and without user intervention. Ubuntu is doing this with a kernel change because they have a policy of not changing kernel defaults in userland. While 4096 might not be enough for *all* apps, it seems to be plenty for the apps I've seen lately that are unhappy with 1024. Signed-off-by: Tim Gardner <tim.gardner@canonical.com> Cc: Dan Kegel <dank@kegel.com> Cc: Al Viro <viro@zeniv.linux.org.uk> Cc: Christoph Hellwig <hch@lst.de> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
		
			
				
	
	
		
			94 lines
		
	
	
	
		
			2.8 KiB
			
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			94 lines
		
	
	
	
		
			2.8 KiB
			
		
	
	
	
		
			C
		
	
	
	
	
	
#ifndef _ASM_GENERIC_RESOURCE_H
 | 
						|
#define _ASM_GENERIC_RESOURCE_H
 | 
						|
 | 
						|
/*
 | 
						|
 * Resource limit IDs
 | 
						|
 *
 | 
						|
 * ( Compatibility detail: there are architectures that have
 | 
						|
 *   a different rlimit ID order in the 5-9 range and want
 | 
						|
 *   to keep that order for binary compatibility. The reasons
 | 
						|
 *   are historic and all new rlimits are identical across all
 | 
						|
 *   arches. If an arch has such special order for some rlimits
 | 
						|
 *   then it defines them prior including asm-generic/resource.h. )
 | 
						|
 */
 | 
						|
 | 
						|
#define RLIMIT_CPU		0	/* CPU time in sec */
 | 
						|
#define RLIMIT_FSIZE		1	/* Maximum filesize */
 | 
						|
#define RLIMIT_DATA		2	/* max data size */
 | 
						|
#define RLIMIT_STACK		3	/* max stack size */
 | 
						|
#define RLIMIT_CORE		4	/* max core file size */
 | 
						|
 | 
						|
#ifndef RLIMIT_RSS
 | 
						|
# define RLIMIT_RSS		5	/* max resident set size */
 | 
						|
#endif
 | 
						|
 | 
						|
#ifndef RLIMIT_NPROC
 | 
						|
# define RLIMIT_NPROC		6	/* max number of processes */
 | 
						|
#endif
 | 
						|
 | 
						|
#ifndef RLIMIT_NOFILE
 | 
						|
# define RLIMIT_NOFILE		7	/* max number of open files */
 | 
						|
#endif
 | 
						|
 | 
						|
#ifndef RLIMIT_MEMLOCK
 | 
						|
# define RLIMIT_MEMLOCK		8	/* max locked-in-memory address space */
 | 
						|
#endif
 | 
						|
 | 
						|
#ifndef RLIMIT_AS
 | 
						|
# define RLIMIT_AS		9	/* address space limit */
 | 
						|
#endif
 | 
						|
 | 
						|
#define RLIMIT_LOCKS		10	/* maximum file locks held */
 | 
						|
#define RLIMIT_SIGPENDING	11	/* max number of pending signals */
 | 
						|
#define RLIMIT_MSGQUEUE		12	/* maximum bytes in POSIX mqueues */
 | 
						|
#define RLIMIT_NICE		13	/* max nice prio allowed to raise to
 | 
						|
					   0-39 for nice level 19 .. -20 */
 | 
						|
#define RLIMIT_RTPRIO		14	/* maximum realtime priority */
 | 
						|
#define RLIMIT_RTTIME		15	/* timeout for RT tasks in us */
 | 
						|
#define RLIM_NLIMITS		16
 | 
						|
 | 
						|
/*
 | 
						|
 * SuS says limits have to be unsigned.
 | 
						|
 * Which makes a ton more sense anyway.
 | 
						|
 *
 | 
						|
 * Some architectures override this (for compatibility reasons):
 | 
						|
 */
 | 
						|
#ifndef RLIM_INFINITY
 | 
						|
# define RLIM_INFINITY		(~0UL)
 | 
						|
#endif
 | 
						|
 | 
						|
/*
 | 
						|
 * RLIMIT_STACK default maximum - some architectures override it:
 | 
						|
 */
 | 
						|
#ifndef _STK_LIM_MAX
 | 
						|
# define _STK_LIM_MAX		RLIM_INFINITY
 | 
						|
#endif
 | 
						|
 | 
						|
#ifdef __KERNEL__
 | 
						|
 | 
						|
/*
 | 
						|
 * boot-time rlimit defaults for the init task:
 | 
						|
 */
 | 
						|
#define INIT_RLIMITS							\
 | 
						|
{									\
 | 
						|
	[RLIMIT_CPU]		= {  RLIM_INFINITY,  RLIM_INFINITY },	\
 | 
						|
	[RLIMIT_FSIZE]		= {  RLIM_INFINITY,  RLIM_INFINITY },	\
 | 
						|
	[RLIMIT_DATA]		= {  RLIM_INFINITY,  RLIM_INFINITY },	\
 | 
						|
	[RLIMIT_STACK]		= {       _STK_LIM,   _STK_LIM_MAX },	\
 | 
						|
	[RLIMIT_CORE]		= {              0,  RLIM_INFINITY },	\
 | 
						|
	[RLIMIT_RSS]		= {  RLIM_INFINITY,  RLIM_INFINITY },	\
 | 
						|
	[RLIMIT_NPROC]		= {              0,              0 },	\
 | 
						|
	[RLIMIT_NOFILE]		= {   INR_OPEN_CUR,   INR_OPEN_MAX },	\
 | 
						|
	[RLIMIT_MEMLOCK]	= {    MLOCK_LIMIT,    MLOCK_LIMIT },	\
 | 
						|
	[RLIMIT_AS]		= {  RLIM_INFINITY,  RLIM_INFINITY },	\
 | 
						|
	[RLIMIT_LOCKS]		= {  RLIM_INFINITY,  RLIM_INFINITY },	\
 | 
						|
	[RLIMIT_SIGPENDING]	= { 		0,	       0 },	\
 | 
						|
	[RLIMIT_MSGQUEUE]	= {   MQ_BYTES_MAX,   MQ_BYTES_MAX },	\
 | 
						|
	[RLIMIT_NICE]		= { 0, 0 },				\
 | 
						|
	[RLIMIT_RTPRIO]		= { 0, 0 },				\
 | 
						|
	[RLIMIT_RTTIME]		= {  RLIM_INFINITY,  RLIM_INFINITY },	\
 | 
						|
}
 | 
						|
 | 
						|
#endif	/* __KERNEL__ */
 | 
						|
 | 
						|
#endif
 |