Performance regression on jdk7u25 vs jdk7u40 due to EPollArrayWrapper.eventsLow
Jungwoo Ha
jwha at google.com
Thu Jan 9 16:43:54 PST 2014
Hi,
I found a performance issues on DaCapo tradesoap benchmark.
*Commandline*
$ java -XX:+UseConcMarkSweepGC -Xmx76m -jar dacapo-9.12-bach.jar tradesoap
-n 7
76MB is 2 times of minimum heap size requirement on tradesoap, i.e.,
tradesoap can run on 38MB but not less.
Measure the last iteration (steady state performance)
*Execution time on the last iteration*
7u25: 17910ms
7u40: 21263ms
So I compared the GC behavior using -XX:+PrintGCDetails, and noticed that
7u40 executed far more concurrent-mode-failure.
7u25: 2 Full GC, 60 concurrent-mode-failure
7u40: 9 Full GC, 70 concurrent-mode-failure
and this is the cause of slowdown.
Looking at the GC log, I noticed that 7u40 uses more memory.
7u25 : [Full GC .... (concurrent mode failure): 48145K->*42452K*(51904K),
0.2212080 secs]
7u40 : [Full GC .... (concurrent mode failure): 47923K->*44672K*(51904K),
0.2138640 secs]
After the Full GC, 7u40 has 2.2MB more live objects. This is always
repeatable.
So I got the heapdump of live objects and found that the most noticeable
difference is the byte[] of *EPollArrayWrapper.eventsLow.*
I think this field is added on 7u40 and was occupying 122 instances * 32K =
3.8MB.
Here goes my question.
1) How are the # of instances of this type expected grow on large heap size?
How does it correlate to the network usage or typical server
applications?
2) Is there a way to reduce the memory?
Thanks,
Jungwoo
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.openjdk.java.net/pipermail/nio-dev/attachments/20140109/8c584234/attachment.html
More information about the nio-dev
mailing list