maximum number of threads

hg hg at nospam.org
Wed Jan 10 02:35:29 EST 2007


Jean-Paul Calderone wrote:

> On Wed, 10 Jan 2007 12:11:59 -0200, Felipe Almeida Lessa
> <felipe.lessa at gmail.com> wrote:
>>On 1/10/07, Laurent Pointal <laurent.pointal at limsi.fr> wrote:
>>>This is a system configurable limit (up to a maximum).
>>>
>>>See ulimit man pages.
>>>
>>>test
>>>
>>>         ulimit -a
>>>
>>>to see what are the current limits, and try with
>>>
>>>         ulimit -u 2000
>>>
>>>to modify the maximum number of user process (AFAIK each thread use a
>>>process entry on Linux)
>>
>>I don't think it's only this.
> 
> Indeed you are correct.  The actual limit you are hitting is the size
> of your address space.  Each thread is allocated 8MB of stack.  382
> threads consumes about 3GB of address space.  Even though most of this
> memory isn't actually allocated, the address space is still used up.  So,
> when you try to create the 383rd thread, the kernel can't find anyplace
> to put its stack.  So you can't create it.
> 
> Try reducing your stack size or reducing the number of threads you create.
> There's really actually almost no good reason to have this many threads,
> even though it's possible.
> 
>     exarkun at charm:~$ python Desktop/test.py
>     50
>     100
>     150
>     200
>     250
>     300
>     350
>     Exception raised: can't start new thread
>     
>     Biggest number of threads: 382
>     exarkun at charm:~$ ulimit -Ss 4096
>     exarkun at charm:~$ python Desktop/test.py
>     50
>     100
>     150
>     200
>     250
>     300
>     350
>     400
>     450
>     500
>     550
>     600
>     650
>     700
>     750
>     Exception raised: can't start new thread
>     
>     Biggest number of threads: 764
>     exarkun at charm:~$
>     
> Jean-Paul


Would increasing the swap size do it also then ?

hg




More information about the Python-list mailing list