Massive performance loss from OS::sleep hack

Alfred Perlstein alfred at freebsd.org
Sun Sep 16 18:16:26 PDT 2007


* Daniel Eischen <deischen at freebsd.org> [070916 08:46] wrote:
> On Sat, 15 Sep 2007, Kip Macy wrote:
> 
> >Or more likely they'll continue to maintain a sched_yield that isn't
> >posix compliant. We may just want to add some sort of interface so the
> >jvm can tell the kernel that sched_yield should be non-compliant for
> >the current process.
> 
> I don't think that is a good idea, it seems like too much of a hack.
> The scheduler(s) should schedule threads the way they are designed
> to, either obeying a threads priority, using it as a hint, or totally
> ignoring it.
> 
> If the JVM kept track of the thread priorities in use, I suppose
> Thread.yield() could first lower the current thread's priority to
> the next used priority and then yield, raising the priority back after 
> the yield.  This isn't perfect, there are race conditions, the next 
> highest priority  thread(s) could be blocked and not runnable, etc.
> Maybe just lowering the priority to min or default priority would work
> well enough.
> 
> This test would fail even on Solaris if you use SCHED_RR or SCHED_FIFO
> since it is POSIX compliant for those scheduling classes.

Since Sun wasn't concenred with correctness, just performance, I
don't think we have to shoot for the moon here.

I think your suggestion about temporarily lowering priority
makes sense.

-Alfred


More information about the freebsd-java mailing list