On 1/18/2013 8:37 PM, Mark Miller wrote:

On Jan 6, 2013, at 5:41 PM, Shawn Heisey <s...@elyograg.org> wrote:

Clarification of my question and my goals:

What I *want* is for all GC pauses to be half a second or less.

I'd try working with the concurrent, low pause collector. Any of the stop the 
world collectors mixed with a large heap will likely mean a few second pauses 
at least at some points. A well tuned concurrent collector will never step the 
world in most situations.

-XX:+UseConcMarkSweepGC

I wrote an article that might be useful a while back: 
http://searchhub.org/2011/03/27/garbage-collection-bootcamp-1-0/

Mark,

I have been using that collector. When I had a very large young generation (NewRatio=1), most of the really long collections were ParNew. When I lowered the young generation size drastically, the overall situation got slightly better. Unfortunately there are still long pauses, but now they are CMS. I wrote a handy little perl script to parse a GC log and spit out a compact listing of every line that takes longer than half a second.

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.

My production servers are version 3.5 with Java 6u38.

After reading your bootcamp and consulting a few other guides, this was going to be my next step:

-Xms1024
-Xmx8192
-XX:+UseParNewGC
-XX:+UseConcMarkSweepGC
-XX:CMSInitiatingOccupancyFraction=75
-XX:NewRatio=3
-XX:MaxTenuringThreshold=8

I may try the G1 collector with Java 6 in production, since I am on the newest Oracle version. I am very interested in knowing whether I need to worry about G1 log entries that don't say "pause" in them. Below is an excerpt from a G1 log. Notice how only a few of the lines actually say "pause" ... in addition to these here that say (young) there are some pause lines that say (mixed):

http://fpaste.org/U0aQ/

Thanks,
Shawn

Reply via email to