Bound Threads (Re: Process vs Thread: what are the consequences?)  
Author Message
Kenneth P. Turvey





PostPosted: 2007-11-15 23:54:00 Top

java-programmer, Bound Threads (Re: Process vs Thread: what are the consequences?) On Tue, 13 Nov 2007 16:04:12 +0000, Kenneth P. Turvey wrote:

> Just based on some experimentation I was doing, this doesn't seem to be
> true. I'm running Linux with the Sun JVM, and it didn't map each Java
> thread to a native thread until the Java thread was spending enough time
> executing. I was actually trying to get this mapping (1 to 1) and found
> it impossible to guarantee under Linux with the Sun JVM.
>
> Under Solaris there is the -XX:UseBoundThreads (or something similar) to
> get that behavior, but under Linux no such option exists.
>
> I will freely admit that my experiment could have been flawed, but it
> wasn't behaving as if it was using more than a single native thread. I
> suspect that the article above is out of date.

I hate to followup my own post, but I've been looking at this problem
again and I'm really just unhappy with how it works. Since this can so
easily be solved under Solaris, and Lew (I think?) mentioned that this is
all JVM dependent. I was hoping somebody could point me to a JVM that
runs under Linux that supports the -XX:UseBoundThreads option or something
similar. I want a 1:1 mapping between native threads and Java threads and
I just can't seem to get it.

Does anyone have any idea? (BTW, I checked IBM's JVM).

--
Kenneth P. Turvey <email***@***.com>
 
Lew





PostPosted: 2007-11-16 11:28:00 Top

java-programmer >> Bound Threads (Re: Process vs Thread: what are the consequences?) Kenneth P. Turvey wrote:
> I hate to followup my own post, but I've been looking at this problem
> again and I'm really just unhappy with how it works. Since this can so
> easily be solved under Solaris, and Lew (I think?) mentioned that this is
> all JVM dependent. I was hoping somebody could point me to a JVM that
> runs under Linux that supports the -XX:UseBoundThreads option or something
> similar. I want a 1:1 mapping between native threads and Java threads and
> I just can't seem to get it.
>
> Does anyone have any idea? (BTW, I checked IBM's JVM).

<http://developers.sun.com/solaris/articles/solaris_linux_app.html#threads>

which has a link to
<http://people.redhat.com/drepper/nptl-design.pdf>

However, it's apparently already out of date, as they claim,
> This document is completely, utterly out of date when it comes
> to descriptions of the limitations of the current implementation.

Apparently they've improved things since February, 2005.

Since Sun now uses NPTL on RedHat Linux, and NPTL maps user threads to kernel
threads 1:1,

Also on the Sun page:
> Both Linux and the Solaris OS support the notion of binding a process or thread to a processor.

RedHat tells us that Sun JVMs since 1.4.2 map Java threads to NPTL threads:
<https://rhstack.108.redhat.com/articles/2006/09/18/java-performance-tuning-on-linux-with-andrew-oliver.html>


And this article tested the performance of Java using NPTL:
<http://www.amitysolutions.com.au/documents/NPTL_Java_threads.pdf>

None of these articles guarantee that Sun's implementation(s) map Java threads
to native threads 1:1. They do claim that they use native threads natively,
and that the implementation scales well to multiprocessor systems.

I'm finding my google-fu not quite strong enough to come up with a definitive
understanding of how Sun's JVMs use native threads, even on RedHat Linux,
which is the only one they document.

--
Lew
 
Lew





PostPosted: 2007-11-16 11:31:00 Top

java-programmer >> Bound Threads (Re: Process vs Thread: what are the consequences?) Lew wrote:
> I'm finding my google-fu not quite strong enough to come up with a
> definitive understanding of how Sun's JVMs use native threads, even on
> RedHat Linux, which is the only one they document.

The only Linux implementation they document with respect to how it handles
threads, that is.

--
Lew
 
 
Lew





PostPosted: 2007-11-16 11:35:00 Top

java-programmer >> Bound Threads (Re: Process vs Thread: what are the consequences?) Lew wrote:
> Lew wrote:
>> I'm finding my google-fu not quite strong enough to come up with a
>> definitive understanding of how Sun's JVMs use native threads,

Except for this comment:
> "The NPTL approach keeps the 1-on-1 thread mapping
> (1 user or Java thread to 1 kernel thread), but
> leverages the kernel for thread-related operations,
> including signal handling, synchronization, and thread creation speed,"
> explains Calvin Austin, who serves as both lead engineer on Sun
> Microsystems' port of J2SE to the Linux OS, and J2SE 1.5 specification
> lead. "The NPTL library is now available in Red Hat Linux 9 by default.
> This is a very exciting time for Java Linux developers."

<http://java.sun.com/developer/technicalArticles/JavaTechandLinux/RedHat/>

--
Lew