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