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

Reply via email to