[concurrency-interest] Array allocation and access on the JVM

Aleksandar Prokopec aleksandar.prokopec at gmail.com
Mon Jan 30 13:06:40 EST 2012


You're welcome. Well, aside from top and some webservers, i don't see anything taking more than 1% cpu time and even that only occasionally.

But it is a bit odd - as i am able to reproduce the first two faster iterations every time. Perhaps there is a second jit optimization run which actually deoptimizes something.
-- 
Aleksandar Prokopec
LAMP, IC, EPFL

Sent from my Android phone with K-9 Mail. Please excuse my brevity.

Vitaly Davidovich <vitalyd at gmail.com> wrote:

Thanks Alex.  I wonder why there's jitter in the run times, especially in the one using conditional marking; I'd expect initial runs to be higher than later ones, but your results show otherwise.  Is there anything else using the cpu on this server besides your tests?

Also, a 15% increase in time seems too high for my intuition based on this case (no gc, card stays dirty after first mark, should be perfectly predicted thereafter), but I think only cpu counter profiling would shed some light.

Sent from my phone

On Jan 30, 2012 12:24 PM, "Aleksandar Prokopec" <aleksandar.prokopec at gmail.com> wrote:

Here are the results without the UseCondCardMark flag:

Executing: java -Xmx512m -Xms512m -server -Dsize=500000000 -Dpar=1 -XX:CompileCommand=print,*Worker.run org.scalapool.bench.MultiStackJavaExperiment 7
CompilerOracle: print *Worker.run
Java HotSpot(TM) 64-Bit Server VM warning: printing of assembly code is enabled; turning on DebugNonSafepoints to gain additional output
0) Running time: 1930 ms
1) Running time: 1876 ms
2) Running time: 1220 ms
3) Running time: 1220 ms
4) Running time: 1219 ms
5) Running time: 1220 ms
6) Running time: 1220 ms
>>>
>>> All running times: [1930, 1876, 1220, 1220, 1219, 1220, 1220]
>>>


With the UseCondCardMark flag:


Executing: java -Xmx512m -Xms512m -server -Dsize=500000000 -Dpar=1 -XX:+UseCondCardMark -XX:CompileCommand=print,*Worker.run org.scalapool.bench.MultiStackJavaExperiment 7
CompilerOracle: print *Worker.run
Java HotSpot(TM) 64-Bit Server VM warning: printing of assembly code is enabled; turning on DebugNonSafepoints to gain additional output
0) Running time: 1325 ms
1) Running time: 1318 ms
2) Running time: 1407 ms
3) Running time: 1408 ms
4) Running time: 1407 ms
5) Running time: 1407 ms
6) Running time: 1407 ms
>>>
>>> All running times: [1325, 1318, 1407, 1408, 1407, 1407, 1407]
>>>


Cheers,
Alex


On 1/27/12 7:24 PM, Vitaly Davidovich wrote:


On the same 2x4 Xeon server you mentioned earlier? Given that you said there were no GCs I'd expect the cards to stay dirty since you're writing to same location and CPU should predict the branch perfectly (cost of a predicted branch is just a few cycles).  Interesting though, thanks for sharing.

Sent from my phone


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://cs.oswego.edu/pipermail/concurrency-interest/attachments/20120130/1b380f7d/attachment.html>


More information about the Concurrency-interest mailing list