Re: NPTL: stack limit limiting number of threads

From: Jakub Jelinek
Date: Fri May 13 2005 - 15:40:37 EST


On Fri, May 13, 2005 at 03:49:48PM -0400, Ritesh Kumar wrote:
> However, I was most amazed to see that the limit on stack size on
> FreeBSD (5.3 Release) was 64M by default! I was just wondering, how is
> FreeBSD able to create about a 1000 threads with that kind of a stack
> limit. Also, is there anything specific in its implementation which
> makes it difficult to incorporate in Linux? Wouldn't it be a good idea
> to remove this "trade-off" between stack limit and number of threads
> and fail thread creation only when we have run out of address space
> being *actually used* in the stacks in a process.

On FreeBSD the default thread stack size is not computed from ulimit -s,
but is constant. They apparently only recently increased it to 1MB
(resp. 2MB on 64-bit arches), from 64K.

On Linux, the default thread stack size (except with fixed stack LinuxThreads)
is determined from ulimit -s (with a constant default if ulimit -s is
unlimited).

If your threaded application has specific needs for stack sizes, it can
always pthread_attr_setstacksize to whatever you find appropriate.

The thread library needs to know the stack size limit before creating
the thread, that can't be changed dynamically.

Jakub
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/