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