On 1/18/2013 10:07 PM, Shawn Heisey wrote:
On my dev 4.1 server with Java 7u11, I am using the G1 collector with a
max pause target of 1500ms. I was thinking that this collector was
producing long pauses too, but after reviewing the gc log with a closer
eye, I see that there are lines that specifically say "pause" ... and
all of THOSE lines are below half a second except one that took 1.4
seconds. Does that mean that it's actually meeting the target, or are
the other lines that show quite long time values indicative of a
problem? If only the lines that explicitly say "pause" are the ones I
need to worry about, then it looks like G1 is the clear winner.
Here's a paste showing a command and its output. I included "remark" in
the grep because I saw a presentation saying that remark in G1 is
stop-the-world:
http://pastie.org/private/vygpvtjzicsl8uztg3drw
None of the matching log lines get close to my 5 second pain point. If
I check the entire unfiltered log for lines that exceed 3 seconds, I do
find a few, but only one of them says "pause" and it's far enough below
the 5 second level that it probably would not cause a problem:
http://pastie.org/private/wcessvbrditextxmoapksq
Here's the perl script used in the two outputs above:
http://pastie.org/private/itu9hbgiwugdjtmy3yg8g
The log was gathered during a full-import of six large shards, over 12
million docs each. The import took 7 hours. I had the patches for
LUCENE-4599 (Compressed TermVectors) applied to Solr 4.1 at the time.
What I'd like to know is whether a 'concurrent-mark-end' line indicates
stop-the-world or not. I suspect that it is done while the application
is working. If this is right, then I think I have found the right GC
settings:
-XX:+UseG1GC -XX:MaxGCPauseMillis=1500 -XX:GCPauseIntervalMillis=4000
My production servers have more total memory, more CPU cores, and much
faster I/O than the dev server where I have been running these tests,
but they both use the same 8GB java heap. One last question: Should I
be worried about using the G1 collector on Oracle Java 6u38, which was
released at the same time as 7u11? This *might* be a good opportunity
to upgrade to java 7 in production, actually. I have two completely
independent index chains, I could upgrade the secondary.
If anyone has any suggestions for my GC parsing perl script, or a knows
about a much more functional replacement, let me know.
Thanks,
Shawn