Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 29 Oct 2006 09:21:16 -0700
From:      Scott Long <scottl@samsco.org>
To:        Robert Watson <rwatson@freebsd.org>
Cc:        Paul Allen <nospam@ugcs.caltech.edu>, Lev Serebryakov <lev@freebsd.org>, Julian Elischer <julian@elischer.org>, current@freebsd.org
Subject:   Re: KSE, libpthread & libthr: almost newbie question
Message-ID:  <4544D4FC.4070201@samsco.org>
In-Reply-To: <20061029090309.T27107@fledge.watson.org>
References:  <917908193.20061027102647@serebryakov.spb.ru>	<20061027103924.F79313@fledge.watson.org>	<45426071.7020403@elischer.org>	<602423478.20061028001449@serebryakov.spb.ru>	<4542896D.1050001@elischer.org>	<20061027231642.GJ30707@riyal.ugcs.caltech.edu>	<45429703.8070305@elischer.org>	<20061028104741.Q69980@fledge.watson.org>	<45442A35.2030803@elischer.org> <20061029090309.T27107@fledge.watson.org>

next in thread | previous in thread | raw e-mail | index | archive | help
Robert Watson wrote:
> 
> On Sat, 28 Oct 2006, Julian Elischer wrote:
> 
>> Robert Watson wrote:
>>>
>>> On Fri, 27 Oct 2006, Julian Elischer wrote:
>>>
>>>> there is class of problems (e.g. some java programs) that have 
>>>> THOUSANDS of threads, each representing an active aspect of some 
>>>> object. How do you put an rlimit on that without either 1/ stopping 
>>>> the program from working or 2/ allowing thousands of threads to 
>>>> exist but not screwing other users.
>>>
>>> Does the JVM actually expose thousands of threads to the OS, or does 
>>> it actually do its own M:N threading internally based on its 
>>> execution model? My impression is the latter, exposing threads to the 
>>> OS only when it needs them to consume kernel or CPU resources.
>>
>> I don't know the answer to that question, only that there is a class 
>> of program style that uses this model.
> 
> FYI, last night following comments about the change away "green 
> threads", I ran some simple tests with the 1.4.2 JVM.  It appears that, 
> at least in my simple test cases, all threads created in the JVM are 
> exposed to the OS. Typically this appears to be about n+8 to n+9 
> threads, where n is the number of threads created by the application 
> itself, and 8/9 is the number created by the JVM.  I assume the variance 
> of one is likely the garbage collector kicking in every now and then (or 
> something along those lines).
> 

This is correct.  The JVM maps all threads directly into the native 
threading mechanism provided by the OS.  'Green threads' have been 
defunct since Java 1.3, and no other magic happens behind the scenes.

Scott



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4544D4FC.4070201>