-
Enhancement
-
Resolution: Fixed
-
P2
-
hs22, 7u2
-
b12
-
generic, unknown
-
solaris
-
Verified
Issue | Fix Version | Assignee | Priority | Status | Resolution | Resolved In Build |
---|---|---|---|---|---|---|
JDK-2220620 | 8 | Paul Hohensee | P2 | Closed | Fixed | b24 |
JDK-2220556 | 7u4 | Paul Hohensee | P2 | Closed | Fixed | b10 |
See Comments.
A SPARC T4 processor can run in either multi- or single-thread mode. In multi-thread
mode, core resources are shared by 8 threads, but in single-thread mode all core
resources are dedicated to a single thread, resulting in much higher performance
for that single thread relative to running it in multi-thread mode.
The default Solaris time-sharing scheduler is biased toward maximum use of hardware
resources by as many LWPs as possible, which means that multi-thread mode is the
default. To use T4's single-thread mode effectively, the scheduler must know which
LWP(s) should run in that mode. Solaris 10u10 and 11 will do their best to
give LWPs running at priority 60 in the FX scheduling class exclusive use of
a T4 core, thus running the LWP in single-thread mode.
We'd like Java applications that require fast per-thread response time to run in
the FX60 scheduling class. One way to do so is to use Thread.setPriority(Thread.
MAX_PRIORITY) as a directive to use FX60 for that thread when running on a T4 and
S10u10/S11. This is a change from current practice, which maps the available Java
thread priorities evenly across the 60 (0-59) Solaris time sharing priorities.
We don't expect that to be a problem, however, since the proposed change will
apply only to T4, which is new hardware. Note that this CR uses "unknown" for
the Hardware field: T4 is not yet available as a Hardware option in bugster.
A SPARC T4 processor can run in either multi- or single-thread mode. In multi-thread
mode, core resources are shared by 8 threads, but in single-thread mode all core
resources are dedicated to a single thread, resulting in much higher performance
for that single thread relative to running it in multi-thread mode.
The default Solaris time-sharing scheduler is biased toward maximum use of hardware
resources by as many LWPs as possible, which means that multi-thread mode is the
default. To use T4's single-thread mode effectively, the scheduler must know which
LWP(s) should run in that mode. Solaris 10u10 and 11 will do their best to
give LWPs running at priority 60 in the FX scheduling class exclusive use of
a T4 core, thus running the LWP in single-thread mode.
We'd like Java applications that require fast per-thread response time to run in
the FX60 scheduling class. One way to do so is to use Thread.setPriority(Thread.
MAX_PRIORITY) as a directive to use FX60 for that thread when running on a T4 and
S10u10/S11. This is a change from current practice, which maps the available Java
thread priorities evenly across the 60 (0-59) Solaris time sharing priorities.
We don't expect that to be a problem, however, since the proposed change will
apply only to T4, which is new hardware. Note that this CR uses "unknown" for
the Hardware field: T4 is not yet available as a Hardware option in bugster.
- backported by
-
JDK-2220556 Interpret Thread.setPriority(Thread.MAX_PRIORITY) to mean FX60 on Solaris 10 and 11
- Closed
-
JDK-2220620 Interpret Thread.setPriority(Thread.MAX_PRIORITY) to mean FX60 on Solaris 10 and 11
- Closed
- duplicates
-
JDK-7091418 FX priority class from Solaris should be available to JVM
- Closed
- relates to
-
JDK-7132966 Allow mapping of Java thread priorities to OS scheduling classes as well as priorities
- Closed
-
JDK-7142586 Cannot build on Solaris 11 due to use of ia_nice
- Closed