review request for 6784100

Xiaobin Lu Xiaobin.Lu at Sun.COM
Fri Dec 19 12:20:56 PST 2008


http://webrev.invokedynamic.info/xiaobin.lu/6784100/webrev/

6784100:  getTimeNanos - CAS reduction

Details:

getTimeNanos() is one of the hot methods for benchmarks such as Volano 
or SPECjbb. To ensure every calling threads to get most up-to-date time, 
the current implementation makes each thread to call CAS in a loop until 
the operation succeeds to set the global max_hrtime on Solaris. Usually, 
one CAS call succeeds. However, under systems having many cores and 
application has tons of threads, that call may need to be tried couple 
times, hence, performance may suffer.

The fix is to just call CAS once and if it fails, we just use the 
current max_hrtime as the return result of getTimeNanos. If it succeeds, 
we can safely use the most up-to-date time. Performance measurement 
shows that on batoka system, volano client score improves about 5-6% on 
15 runs. I am still running SPECjbb2005 to see whether we could observe 
any improvement there. The micro-benchmark shows that within certain 
amount of time, the calls getTimeNanos() doubles with the fix.

Reviewed by:
Contributed by: Dave Dice
Verified by:

JPRT (in progress).

Thanks,
-Xiaobin





More information about the hotspot-dev mailing list