From naasd at cboe.com Mon Dec 3 08:57:30 2007 From: naasd at cboe.com (Naas, Dave) Date: Mon, 3 Dec 2007 10:57:30 -0600 Subject: PrintGCStats Message-ID: <4BD174404CF4A34C98322DC926CF862B2289F2@MSMAIL.cboent.cboe.com> Regarding the posting from Oct 26, 2007: http://mail.openjdk.java.net/pipermail/hotspot-gc-dev/2007-October/000064.html where Mr. Kessler states: quote > > I'll see if we can get an updated version of PrintGCStats out to replace the ancient one available at > > > > That should give you the kinds of statistics you are asking for. > > ... peter unquote I was wondering if a new version of PrintGCStats and PrintGCFixup will indeed be made available or if we should proceed with our own updates to handle new jdk releases, etc.?? A specific, recent example is jdk 1.6 with the -XX:PrintFLSStatistics flag. We have found that this setting prevents the current PrintGCStats from properly parsing ParNew data and thus doesn't generate the Promotion stats (Promo.csv file). The following snippet shows how the ParNew line is now split (shown in bold), thanks to the -XX:PrintFLSStatistics: ====================================================================================================================================================== {Heap before GC invocations=0 (full 0): par new generation total 305088K, used 277376K [0x2f800000, 0x43d00000, 0x43d00000) eden space 277376K, 100% used [0x2f800000, 0x406e0000, 0x406e0000) from space 27712K, 0% used [0x406e0000, 0x406e0000, 0x421f0000) to space 27712K, 0% used [0x421f0000, 0x421f0000, 0x43d00000) concurrent mark-sweep generation total 2739200K, used 0K [0x43d00000, 0xeb000000, 0xeb000000) concurrent-mark-sweep perm gen total 131072K, used 14913K [0xeb000000, 0xf3000000, 0xfb000000) 8.746: [GC Before GC: Statistics for BinaryTreeDictionary: ------------------------------------ Total Free Space: 701235200 Max Chunk Size: 701235200 Number of Blocks: 1 Av. Block Size: 701235200 Tree Height: 1 Before GC: Statistics for BinaryTreeDictionary: ------------------------------------ Total Free Space: 0 Max Chunk Size: 0 Number of Blocks: 0 Tree Height: 0 8.746: [ParNew Desired survivor size 14188544 bytes, new threshold 1 (max 4) - age 1: 15763640 bytes, 15763640 total - age 2: 56 bytes, 15763696 total : 277376K->15474K(305088K), 0.5657873 secs] 277376K->15474K(3044288K)After GC: Statistics for BinaryTreeDictionary: ------------------------------------ Total Free Space: 701218816 Max Chunk Size: 701218816 Number of Blocks: 1 Av. Block Size: 701218816 Tree Height: 1 After GC: Statistics for BinaryTreeDictionary: ------------------------------------ Total Free Space: 0 Max Chunk Size: 0 Number of Blocks: 0 Tree Height: 0 , 0.5668866 secs] [Times: user=0.34 sys=1.07, real=0.57 secs] ====================================================================================================================================================== Thank you, Dave David Naas Chicago Board Options Exchange 312-786-7222 From Peter.Kessler at Sun.COM Mon Dec 3 10:19:41 2007 From: Peter.Kessler at Sun.COM (Peter B. Kessler) Date: Mon, 03 Dec 2007 10:19:41 -0800 Subject: PrintGCStats In-Reply-To: <4BD174404CF4A34C98322DC926CF862B2289F2@MSMAIL.cboent.cboe.com> References: <4BD174404CF4A34C98322DC926CF862B2289F2@MSMAIL.cboent.cboe.com> Message-ID: <475448BD.3030401@Sun.COM> It looks like the most recent PrintGCFixup (and PrintGCStats and CompareGCStats) is "posted" in http://permalink.gmane.org/gmane.comp.java.openjdk.hotspot.gc.devel/51 You have to join all the lines that got wrapped (sigh). Sometimes you have to run PrintGCFixup more than once to get it to remove things so that it can see other things to remove. Though, in your case, running it twice doesn't help remove the output of PrintFLSStatistics. It does look like if you add a cleaner for PrintFLSStatistics, you'll have to run PrintGCFixup at least twice, since that output gets in the way of the removal of the PrintTenuringDistribution flag. PrintGCFixup and friends look like a prime candidate for putting in hotspot/tools/ and letting people make improvements. If you wanted to contribute your addition for removing PrintFLSStatistics, I'm sure we could find someone here to sponsor it. ... peter Naas, Dave wrote: > Regarding the posting from Oct 26, 2007: http://mail.openjdk.java.net/pipermail/hotspot-gc-dev/2007-October/000064.html > where Mr. Kessler states: > quote > > > I'll see if we can get an updated version of PrintGCStats out to replace the ancient one available at > > > > > > That should give you the kinds of statistics you are asking for. > > > ... peter > unquote > > I was wondering if a new version of PrintGCStats and PrintGCFixup will indeed be made available or if we should proceed with our own updates to handle new jdk releases, etc.?? > > A specific, recent example is jdk 1.6 with the -XX:PrintFLSStatistics flag. We have found that this setting prevents the current PrintGCStats from properly parsing ParNew data and thus doesn't generate the Promotion stats (Promo.csv file). The following snippet shows how the ParNew line is now split (shown in bold), thanks to the -XX:PrintFLSStatistics: > > ====================================================================================================================================================== > {Heap before GC invocations=0 (full 0): > par new generation total 305088K, used 277376K [0x2f800000, 0x43d00000, 0x43d00000) > eden space 277376K, 100% used [0x2f800000, 0x406e0000, 0x406e0000) > from space 27712K, 0% used [0x406e0000, 0x406e0000, 0x421f0000) > to space 27712K, 0% used [0x421f0000, 0x421f0000, 0x43d00000) > concurrent mark-sweep generation total 2739200K, used 0K [0x43d00000, 0xeb000000, 0xeb000000) > concurrent-mark-sweep perm gen total 131072K, used 14913K [0xeb000000, 0xf3000000, 0xfb000000) > 8.746: [GC Before GC: > Statistics for BinaryTreeDictionary: > ------------------------------------ > Total Free Space: 701235200 > Max Chunk Size: 701235200 > Number of Blocks: 1 > Av. Block Size: 701235200 > Tree Height: 1 > Before GC: > Statistics for BinaryTreeDictionary: > ------------------------------------ > Total Free Space: 0 > Max Chunk Size: 0 > Number of Blocks: 0 > Tree Height: 0 > 8.746: [ParNew > Desired survivor size 14188544 bytes, new threshold 1 (max 4) > - age 1: 15763640 bytes, 15763640 total > - age 2: 56 bytes, 15763696 total > : 277376K->15474K(305088K), 0.5657873 secs] 277376K->15474K(3044288K)After GC: > Statistics for BinaryTreeDictionary: > ------------------------------------ > Total Free Space: 701218816 > Max Chunk Size: 701218816 > Number of Blocks: 1 > Av. Block Size: 701218816 > Tree Height: 1 > After GC: > Statistics for BinaryTreeDictionary: > ------------------------------------ > Total Free Space: 0 > Max Chunk Size: 0 > Number of Blocks: 0 > Tree Height: 0 > , 0.5668866 secs] [Times: user=0.34 sys=1.07, real=0.57 secs] > ====================================================================================================================================================== > > Thank you, > Dave > > David Naas > Chicago Board Options Exchange > 312-786-7222 > From Ciciora at cboe.com Mon Dec 3 12:25:33 2007 From: Ciciora at cboe.com (Ciciora, Paul) Date: Mon, 3 Dec 2007 14:25:33 -0600 Subject: PrintGCStats References: Message-ID: <8CDFE9CE1B9A344E9AA47C27B7C58DD8168DD7@MSMAIL.cboent.cboe.com> Since GC formats are constantly changing and different collectors log stats differently I'd love to so you adopt a harvestable output format. The idea would be to send stats to a separate file and use a name/value style format. That way you could send whatever you wanted there and all the harvester script or program would have to know is the tag name. The name could be terse to save space. You could register the tag names so open source changes would conform. If you did that then format changes to the human readable output could be separate. You wouldn't have to be as sensitive to breaking scripts. Just a thought. I'm probably not the first one to suggest this. -----Original Message----- From: hotspot-gc-dev-bounces at openjdk.java.net [mailto:hotspot-gc-dev-bounces at openjdk.java.net] On Behalf Of hotspot-gc-dev-request at openjdk.java.net Sent: Monday, December 03, 2007 2:00 PM To: hotspot-gc-dev at openjdk.java.net Subject: hotspot-gc-dev Digest, Vol 6, Issue 1 Send hotspot-gc-dev mailing list submissions to hotspot-gc-dev at openjdk.java.net To subscribe or unsubscribe via the World Wide Web, visit http://mail.openjdk.java.net/mailman/listinfo/hotspot-gc-dev or, via email, send a message with subject or body 'help' to hotspot-gc-dev-request at openjdk.java.net You can reach the person managing the list at hotspot-gc-dev-owner at openjdk.java.net When replying, please edit your Subject line so it is more specific than "Re: Contents of hotspot-gc-dev digest..." Today's Topics: 1. PrintGCStats (Naas, Dave) 2. Re: PrintGCStats (Peter B. Kessler) ---------------------------------------------------------------------- Message: 1 Date: Mon, 3 Dec 2007 10:57:30 -0600 From: "Naas, Dave" Subject: PrintGCStats To: Message-ID: <4BD174404CF4A34C98322DC926CF862B2289F2 at MSMAIL.cboent.cboe.com> Content-Type: text/plain; charset="iso-8859-1" Regarding the posting from Oct 26, 2007: http://mail.openjdk.java.net/pipermail/hotspot-gc-dev/2007-October/00006 4.html where Mr. Kessler states: quote > > I'll see if we can get an updated version of PrintGCStats out to replace the ancient one available at > > > > That should give you the kinds of statistics you are asking for. > > ... peter unquote I was wondering if a new version of PrintGCStats and PrintGCFixup will indeed be made available or if we should proceed with our own updates to handle new jdk releases, etc.?? A specific, recent example is jdk 1.6 with the -XX:PrintFLSStatistics flag. We have found that this setting prevents the current PrintGCStats from properly parsing ParNew data and thus doesn't generate the Promotion stats (Promo.csv file). The following snippet shows how the ParNew line is now split (shown in bold), thanks to the -XX:PrintFLSStatistics: ======================================================================== ======================================================================== ====== {Heap before GC invocations=0 (full 0): par new generation total 305088K, used 277376K [0x2f800000, 0x43d00000, 0x43d00000) eden space 277376K, 100% used [0x2f800000, 0x406e0000, 0x406e0000) from space 27712K, 0% used [0x406e0000, 0x406e0000, 0x421f0000) to space 27712K, 0% used [0x421f0000, 0x421f0000, 0x43d00000) concurrent mark-sweep generation total 2739200K, used 0K [0x43d00000, 0xeb000000, 0xeb000000) concurrent-mark-sweep perm gen total 131072K, used 14913K [0xeb000000, 0xf3000000, 0xfb000000) 8.746: [GC Before GC: Statistics for BinaryTreeDictionary: ------------------------------------ Total Free Space: 701235200 Max Chunk Size: 701235200 Number of Blocks: 1 Av. Block Size: 701235200 Tree Height: 1 Before GC: Statistics for BinaryTreeDictionary: ------------------------------------ Total Free Space: 0 Max Chunk Size: 0 Number of Blocks: 0 Tree Height: 0 8.746: [ParNew Desired survivor size 14188544 bytes, new threshold 1 (max 4) - age 1: 15763640 bytes, 15763640 total - age 2: 56 bytes, 15763696 total : 277376K->15474K(305088K), 0.5657873 secs] 277376K->15474K(3044288K)After GC: Statistics for BinaryTreeDictionary: ------------------------------------ Total Free Space: 701218816 Max Chunk Size: 701218816 Number of Blocks: 1 Av. Block Size: 701218816 Tree Height: 1 After GC: Statistics for BinaryTreeDictionary: ------------------------------------ Total Free Space: 0 Max Chunk Size: 0 Number of Blocks: 0 Tree Height: 0 , 0.5668866 secs] [Times: user=0.34 sys=1.07, real=0.57 secs] ======================================================================== ======================================================================== ====== Thank you, Dave David Naas Chicago Board Options Exchange 312-786-7222 ------------------------------ Message: 2 Date: Mon, 03 Dec 2007 10:19:41 -0800 From: "Peter B. Kessler" Subject: Re: PrintGCStats To: "Naas, Dave" Cc: hotspot-gc-dev at openjdk.java.net Message-ID: <475448BD.3030401 at Sun.COM> Content-Type: text/plain; format=flowed; charset=ISO-8859-1 It looks like the most recent PrintGCFixup (and PrintGCStats and CompareGCStats) is "posted" in http://permalink.gmane.org/gmane.comp.java.openjdk.hotspot.gc.devel/51 You have to join all the lines that got wrapped (sigh). Sometimes you have to run PrintGCFixup more than once to get it to remove things so that it can see other things to remove. Though, in your case, running it twice doesn't help remove the output of PrintFLSStatistics. It does look like if you add a cleaner for PrintFLSStatistics, you'll have to run PrintGCFixup at least twice, since that output gets in the way of the removal of the PrintTenuringDistribution flag. PrintGCFixup and friends look like a prime candidate for putting in hotspot/tools/ and letting people make improvements. If you wanted to contribute your addition for removing PrintFLSStatistics, I'm sure we could find someone here to sponsor it. ... peter Naas, Dave wrote: > Regarding the posting from Oct 26, 2007: http://mail.openjdk.java.net/pipermail/hotspot-gc-dev/2007-October/00006 4.html > where Mr. Kessler states: > quote > > > I'll see if we can get an updated version of PrintGCStats out to replace the ancient one available at > > > > > > That should give you the kinds of statistics you are asking for. > > > ... peter > unquote > > I was wondering if a new version of PrintGCStats and PrintGCFixup will indeed be made available or if we should proceed with our own updates to handle new jdk releases, etc.?? > > A specific, recent example is jdk 1.6 with the -XX:PrintFLSStatistics flag. We have found that this setting prevents the current PrintGCStats from properly parsing ParNew data and thus doesn't generate the Promotion stats (Promo.csv file). The following snippet shows how the ParNew line is now split (shown in bold), thanks to the -XX:PrintFLSStatistics: > > ======================================================================== ======================================================================== ====== > {Heap before GC invocations=0 (full 0): > par new generation total 305088K, used 277376K [0x2f800000, 0x43d00000, 0x43d00000) > eden space 277376K, 100% used [0x2f800000, 0x406e0000, 0x406e0000) > from space 27712K, 0% used [0x406e0000, 0x406e0000, 0x421f0000) > to space 27712K, 0% used [0x421f0000, 0x421f0000, 0x43d00000) > concurrent mark-sweep generation total 2739200K, used 0K [0x43d00000, 0xeb000000, 0xeb000000) > concurrent-mark-sweep perm gen total 131072K, used 14913K [0xeb000000, 0xf3000000, 0xfb000000) > 8.746: [GC Before GC: > Statistics for BinaryTreeDictionary: > ------------------------------------ > Total Free Space: 701235200 > Max Chunk Size: 701235200 > Number of Blocks: 1 > Av. Block Size: 701235200 > Tree Height: 1 > Before GC: > Statistics for BinaryTreeDictionary: > ------------------------------------ > Total Free Space: 0 > Max Chunk Size: 0 > Number of Blocks: 0 > Tree Height: 0 > 8.746: [ParNew > Desired survivor size 14188544 bytes, new threshold 1 (max 4) > - age 1: 15763640 bytes, 15763640 total > - age 2: 56 bytes, 15763696 total > : 277376K->15474K(305088K), 0.5657873 secs] 277376K->15474K(3044288K)After GC: > Statistics for BinaryTreeDictionary: > ------------------------------------ > Total Free Space: 701218816 > Max Chunk Size: 701218816 > Number of Blocks: 1 > Av. Block Size: 701218816 > Tree Height: 1 > After GC: > Statistics for BinaryTreeDictionary: > ------------------------------------ > Total Free Space: 0 > Max Chunk Size: 0 > Number of Blocks: 0 > Tree Height: 0 > , 0.5668866 secs] [Times: user=0.34 sys=1.07, real=0.57 secs] > ======================================================================== ======================================================================== ====== > > Thank you, > Dave > > David Naas > Chicago Board Options Exchange > 312-786-7222 > End of hotspot-gc-dev Digest, Vol 6, Issue 1 ******************************************** From neojia at gmail.com Mon Dec 3 13:12:36 2007 From: neojia at gmail.com (Neo Jia) Date: Mon, 3 Dec 2007 13:12:36 -0800 Subject: PrintGCStats In-Reply-To: <8CDFE9CE1B9A344E9AA47C27B7C58DD8168DD7@MSMAIL.cboent.cboe.com> References: <8CDFE9CE1B9A344E9AA47C27B7C58DD8168DD7@MSMAIL.cboent.cboe.com> Message-ID: <5d649bdb0712031312h220dd7bej7fe60c7bf1328d8@mail.gmail.com> I like the idea about tag/value stuffs. But I do worry about sending to a separate file unless we put a timestamp for each log entry, otherwise it would be hard to debug. Thanks, Neo On Dec 3, 2007 12:25 PM, Ciciora, Paul wrote: > Since GC formats are constantly changing and different collectors log > stats differently I'd love to so you adopt a harvestable output format. > The idea would be to send stats to a separate file and use a name/value > style format. That way you could send whatever you wanted there and all > the harvester script or program would have to know is the tag name. The > name could be terse to save space. You could register the tag names so > open source changes would conform. If you did that then format changes > to the human readable output could be separate. You wouldn't have to be > as sensitive to breaking scripts. > > > Just a thought. I'm probably not the first one to suggest this. > > -----Original Message----- > From: hotspot-gc-dev-bounces at openjdk.java.net > [mailto:hotspot-gc-dev-bounces at openjdk.java.net] On Behalf Of > hotspot-gc-dev-request at openjdk.java.net > Sent: Monday, December 03, 2007 2:00 PM > To: hotspot-gc-dev at openjdk.java.net > Subject: hotspot-gc-dev Digest, Vol 6, Issue 1 > > Send hotspot-gc-dev mailing list submissions to > hotspot-gc-dev at openjdk.java.net > > To subscribe or unsubscribe via the World Wide Web, visit > http://mail.openjdk.java.net/mailman/listinfo/hotspot-gc-dev > or, via email, send a message with subject or body 'help' to > hotspot-gc-dev-request at openjdk.java.net > > You can reach the person managing the list at > hotspot-gc-dev-owner at openjdk.java.net > > When replying, please edit your Subject line so it is more specific > than "Re: Contents of hotspot-gc-dev digest..." > > > Today's Topics: > > 1. PrintGCStats (Naas, Dave) > 2. Re: PrintGCStats (Peter B. Kessler) > > > ---------------------------------------------------------------------- > > Message: 1 > Date: Mon, 3 Dec 2007 10:57:30 -0600 > From: "Naas, Dave" > Subject: PrintGCStats > To: > Message-ID: > <4BD174404CF4A34C98322DC926CF862B2289F2 at MSMAIL.cboent.cboe.com> > Content-Type: text/plain; charset="iso-8859-1" > > Regarding the posting from Oct 26, 2007: > http://mail.openjdk.java.net/pipermail/hotspot-gc-dev/2007-October/00006 > 4.html > where Mr. Kessler states: > quote > > > I'll see if we can get an updated version of PrintGCStats > out to replace the ancient one available at > > > > > > > That should give you the kinds of statistics you are asking > for. > > > ... peter > unquote > > I was wondering if a new version of PrintGCStats and PrintGCFixup will > indeed be made available or if we should proceed with our own updates to > handle new jdk releases, etc.?? > > A specific, recent example is jdk 1.6 with the -XX:PrintFLSStatistics > flag. We have found that this setting prevents the current PrintGCStats > from properly parsing ParNew data and thus doesn't generate the > Promotion stats (Promo.csv file). The following snippet shows how the > ParNew line is now split (shown in bold), thanks to the > -XX:PrintFLSStatistics: > > ======================================================================== > ======================================================================== > ====== > {Heap before GC invocations=0 (full 0): > par new generation total 305088K, used 277376K [0x2f800000, > 0x43d00000, 0x43d00000) > eden space 277376K, 100% used [0x2f800000, 0x406e0000, 0x406e0000) > from space 27712K, 0% used [0x406e0000, 0x406e0000, 0x421f0000) > to space 27712K, 0% used [0x421f0000, 0x421f0000, 0x43d00000) > concurrent mark-sweep generation total 2739200K, used 0K [0x43d00000, > 0xeb000000, 0xeb000000) > concurrent-mark-sweep perm gen total 131072K, used 14913K [0xeb000000, > 0xf3000000, 0xfb000000) > 8.746: [GC Before GC: > Statistics for BinaryTreeDictionary: > ------------------------------------ > Total Free Space: 701235200 > Max Chunk Size: 701235200 > Number of Blocks: 1 > Av. Block Size: 701235200 > Tree Height: 1 > Before GC: > Statistics for BinaryTreeDictionary: > ------------------------------------ > Total Free Space: 0 > Max Chunk Size: 0 > Number of Blocks: 0 > Tree Height: 0 > 8.746: [ParNew > Desired survivor size 14188544 bytes, new threshold 1 (max 4) > - age 1: 15763640 bytes, 15763640 total > - age 2: 56 bytes, 15763696 total > : 277376K->15474K(305088K), 0.5657873 secs] > 277376K->15474K(3044288K)After GC: > Statistics for BinaryTreeDictionary: > ------------------------------------ > Total Free Space: 701218816 > Max Chunk Size: 701218816 > Number of Blocks: 1 > Av. Block Size: 701218816 > Tree Height: 1 > After GC: > Statistics for BinaryTreeDictionary: > ------------------------------------ > Total Free Space: 0 > Max Chunk Size: 0 > Number of Blocks: 0 > Tree Height: 0 > , 0.5668866 secs] [Times: user=0.34 sys=1.07, real=0.57 secs] > ======================================================================== > ======================================================================== > ====== > > Thank you, > Dave > > David Naas > Chicago Board Options Exchange > 312-786-7222 > > > > ------------------------------ > > Message: 2 > Date: Mon, 03 Dec 2007 10:19:41 -0800 > From: "Peter B. Kessler" > Subject: Re: PrintGCStats > To: "Naas, Dave" > Cc: hotspot-gc-dev at openjdk.java.net > Message-ID: <475448BD.3030401 at Sun.COM> > Content-Type: text/plain; format=flowed; charset=ISO-8859-1 > > It looks like the most recent PrintGCFixup (and PrintGCStats > and CompareGCStats) is "posted" in > > > http://permalink.gmane.org/gmane.comp.java.openjdk.hotspot.gc.devel/51 > > You have to join all the lines that got wrapped (sigh). > Sometimes you have to run PrintGCFixup more than once to > get it to remove things so that it can see other things > to remove. Though, in your case, running it twice doesn't > help remove the output of PrintFLSStatistics. It does look > like if you add a cleaner for PrintFLSStatistics, you'll > have to run PrintGCFixup at least twice, since that output > gets in the way of the removal of the PrintTenuringDistribution > flag. > > PrintGCFixup and friends look like a prime candidate for putting > in hotspot/tools/ and letting people make improvements. If you > wanted to contribute your addition for removing PrintFLSStatistics, > I'm sure we could find someone here to sponsor it. > > ... peter > > Naas, Dave wrote: > > > Regarding the posting from Oct 26, 2007: > http://mail.openjdk.java.net/pipermail/hotspot-gc-dev/2007-October/00006 > 4.html > > where Mr. Kessler states: > > quote > > > > I'll see if we can get an updated version of PrintGCStats > out to replace the ancient one available at > > > > > > > > > That should give you the kinds of statistics you are asking > for. > > > > ... peter > > unquote > > > > I was wondering if a new version of PrintGCStats and PrintGCFixup will > indeed be made available or if we should proceed with our own updates to > handle new jdk releases, etc.?? > > > > A specific, recent example is jdk 1.6 with the -XX:PrintFLSStatistics > flag. We have found that this setting prevents the current PrintGCStats > from properly parsing ParNew data and thus doesn't generate the > Promotion stats (Promo.csv file). The following snippet shows how the > ParNew line is now split (shown in bold), thanks to the > -XX:PrintFLSStatistics: > > > > > ======================================================================== > ======================================================================== > ====== > > {Heap before GC invocations=0 (full 0): > > par new generation total 305088K, used 277376K [0x2f800000, > 0x43d00000, 0x43d00000) > > eden space 277376K, 100% used [0x2f800000, 0x406e0000, 0x406e0000) > > from space 27712K, 0% used [0x406e0000, 0x406e0000, 0x421f0000) > > to space 27712K, 0% used [0x421f0000, 0x421f0000, 0x43d00000) > > concurrent mark-sweep generation total 2739200K, used 0K [0x43d00000, > 0xeb000000, 0xeb000000) > > concurrent-mark-sweep perm gen total 131072K, used 14913K > [0xeb000000, 0xf3000000, 0xfb000000) > > 8.746: [GC Before GC: > > Statistics for BinaryTreeDictionary: > > ------------------------------------ > > Total Free Space: 701235200 > > Max Chunk Size: 701235200 > > Number of Blocks: 1 > > Av. Block Size: 701235200 > > Tree Height: 1 > > Before GC: > > Statistics for BinaryTreeDictionary: > > ------------------------------------ > > Total Free Space: 0 > > Max Chunk Size: 0 > > Number of Blocks: 0 > > Tree Height: 0 > > 8.746: [ParNew > > Desired survivor size 14188544 bytes, new threshold 1 (max 4) > > - age 1: 15763640 bytes, 15763640 total > > - age 2: 56 bytes, 15763696 total > > : 277376K->15474K(305088K), 0.5657873 secs] > 277376K->15474K(3044288K)After GC: > > Statistics for BinaryTreeDictionary: > > ------------------------------------ > > Total Free Space: 701218816 > > Max Chunk Size: 701218816 > > Number of Blocks: 1 > > Av. Block Size: 701218816 > > Tree Height: 1 > > After GC: > > Statistics for BinaryTreeDictionary: > > ------------------------------------ > > Total Free Space: 0 > > Max Chunk Size: 0 > > Number of Blocks: 0 > > Tree Height: 0 > > , 0.5668866 secs] [Times: user=0.34 sys=1.07, real=0.57 secs] > > > ======================================================================== > ======================================================================== > ====== > > > > Thank you, > > Dave > > > > David Naas > > Chicago Board Options Exchange > > 312-786-7222 > > > > > > > End of hotspot-gc-dev Digest, Vol 6, Issue 1 > ******************************************** > -- I would remember that if researchers were not ambitious probably today we haven't the technology we are using! From Ciciora at cboe.com Mon Dec 3 13:16:44 2007 From: Ciciora at cboe.com (Ciciora, Paul) Date: Mon, 3 Dec 2007 15:16:44 -0600 Subject: PrintGCStats References: <8CDFE9CE1B9A344E9AA47C27B7C58DD8168DD7@MSMAIL.cboent.cboe.com> <5d649bdb0712031312h220dd7bej7fe60c7bf1328d8@mail.gmail.com> Message-ID: <8CDFE9CE1B9A344E9AA47C27B7C58DD8168DDF@MSMAIL.cboent.cboe.com> The idea is you'd include the time stamp as a tagged value. Then you could have the format you wanted such as seconds since process startup (my favorite) and each time format would have a separate tag. -----Original Message----- From: Neo Jia [mailto:neojia at gmail.com] Sent: Monday, December 03, 2007 3:13 PM To: Ciciora, Paul Cc: hotspot-gc-dev at openjdk.java.net Subject: Re: PrintGCStats I like the idea about tag/value stuffs. But I do worry about sending to a separate file unless we put a timestamp for each log entry, otherwise it would be hard to debug. Thanks, Neo On Dec 3, 2007 12:25 PM, Ciciora, Paul wrote: > Since GC formats are constantly changing and different collectors log > stats differently I'd love to so you adopt a harvestable output format. > The idea would be to send stats to a separate file and use a name/value > style format. That way you could send whatever you wanted there and all > the harvester script or program would have to know is the tag name. The > name could be terse to save space. You could register the tag names so > open source changes would conform. If you did that then format changes > to the human readable output could be separate. You wouldn't have to be > as sensitive to breaking scripts. > > > Just a thought. I'm probably not the first one to suggest this. > > -----Original Message----- > From: hotspot-gc-dev-bounces at openjdk.java.net > [mailto:hotspot-gc-dev-bounces at openjdk.java.net] On Behalf Of > hotspot-gc-dev-request at openjdk.java.net > Sent: Monday, December 03, 2007 2:00 PM > To: hotspot-gc-dev at openjdk.java.net > Subject: hotspot-gc-dev Digest, Vol 6, Issue 1 > > Send hotspot-gc-dev mailing list submissions to > hotspot-gc-dev at openjdk.java.net > > To subscribe or unsubscribe via the World Wide Web, visit > http://mail.openjdk.java.net/mailman/listinfo/hotspot-gc-dev > or, via email, send a message with subject or body 'help' to > hotspot-gc-dev-request at openjdk.java.net > > You can reach the person managing the list at > hotspot-gc-dev-owner at openjdk.java.net > > When replying, please edit your Subject line so it is more specific > than "Re: Contents of hotspot-gc-dev digest..." > > > Today's Topics: > > 1. PrintGCStats (Naas, Dave) > 2. Re: PrintGCStats (Peter B. Kessler) > > > ---------------------------------------------------------------------- > > Message: 1 > Date: Mon, 3 Dec 2007 10:57:30 -0600 > From: "Naas, Dave" > Subject: PrintGCStats > To: > Message-ID: > <4BD174404CF4A34C98322DC926CF862B2289F2 at MSMAIL.cboent.cboe.com> > Content-Type: text/plain; charset="iso-8859-1" > > Regarding the posting from Oct 26, 2007: > http://mail.openjdk.java.net/pipermail/hotspot-gc-dev/2007-October/00006 > 4.html > where Mr. Kessler states: > quote > > > I'll see if we can get an updated version of PrintGCStats > out to replace the ancient one available at > > > > > > > That should give you the kinds of statistics you are asking > for. > > > ... peter > unquote > > I was wondering if a new version of PrintGCStats and PrintGCFixup will > indeed be made available or if we should proceed with our own updates to > handle new jdk releases, etc.?? > > A specific, recent example is jdk 1.6 with the -XX:PrintFLSStatistics > flag. We have found that this setting prevents the current PrintGCStats > from properly parsing ParNew data and thus doesn't generate the > Promotion stats (Promo.csv file). The following snippet shows how the > ParNew line is now split (shown in bold), thanks to the > -XX:PrintFLSStatistics: > > ======================================================================== > ======================================================================== > ====== > {Heap before GC invocations=0 (full 0): > par new generation total 305088K, used 277376K [0x2f800000, > 0x43d00000, 0x43d00000) > eden space 277376K, 100% used [0x2f800000, 0x406e0000, 0x406e0000) > from space 27712K, 0% used [0x406e0000, 0x406e0000, 0x421f0000) > to space 27712K, 0% used [0x421f0000, 0x421f0000, 0x43d00000) > concurrent mark-sweep generation total 2739200K, used 0K [0x43d00000, > 0xeb000000, 0xeb000000) > concurrent-mark-sweep perm gen total 131072K, used 14913K [0xeb000000, > 0xf3000000, 0xfb000000) > 8.746: [GC Before GC: > Statistics for BinaryTreeDictionary: > ------------------------------------ > Total Free Space: 701235200 > Max Chunk Size: 701235200 > Number of Blocks: 1 > Av. Block Size: 701235200 > Tree Height: 1 > Before GC: > Statistics for BinaryTreeDictionary: > ------------------------------------ > Total Free Space: 0 > Max Chunk Size: 0 > Number of Blocks: 0 > Tree Height: 0 > 8.746: [ParNew > Desired survivor size 14188544 bytes, new threshold 1 (max 4) > - age 1: 15763640 bytes, 15763640 total > - age 2: 56 bytes, 15763696 total > : 277376K->15474K(305088K), 0.5657873 secs] > 277376K->15474K(3044288K)After GC: > Statistics for BinaryTreeDictionary: > ------------------------------------ > Total Free Space: 701218816 > Max Chunk Size: 701218816 > Number of Blocks: 1 > Av. Block Size: 701218816 > Tree Height: 1 > After GC: > Statistics for BinaryTreeDictionary: > ------------------------------------ > Total Free Space: 0 > Max Chunk Size: 0 > Number of Blocks: 0 > Tree Height: 0 > , 0.5668866 secs] [Times: user=0.34 sys=1.07, real=0.57 secs] > ======================================================================== > ======================================================================== > ====== > > Thank you, > Dave > > David Naas > Chicago Board Options Exchange > 312-786-7222 > > > > ------------------------------ > > Message: 2 > Date: Mon, 03 Dec 2007 10:19:41 -0800 > From: "Peter B. Kessler" > Subject: Re: PrintGCStats > To: "Naas, Dave" > Cc: hotspot-gc-dev at openjdk.java.net > Message-ID: <475448BD.3030401 at Sun.COM> > Content-Type: text/plain; format=flowed; charset=ISO-8859-1 > > It looks like the most recent PrintGCFixup (and PrintGCStats > and CompareGCStats) is "posted" in > > > http://permalink.gmane.org/gmane.comp.java.openjdk.hotspot.gc.devel/51 > > You have to join all the lines that got wrapped (sigh). > Sometimes you have to run PrintGCFixup more than once to > get it to remove things so that it can see other things > to remove. Though, in your case, running it twice doesn't > help remove the output of PrintFLSStatistics. It does look > like if you add a cleaner for PrintFLSStatistics, you'll > have to run PrintGCFixup at least twice, since that output > gets in the way of the removal of the PrintTenuringDistribution > flag. > > PrintGCFixup and friends look like a prime candidate for putting > in hotspot/tools/ and letting people make improvements. If you > wanted to contribute your addition for removing PrintFLSStatistics, > I'm sure we could find someone here to sponsor it. > > ... peter > > Naas, Dave wrote: > > > Regarding the posting from Oct 26, 2007: > http://mail.openjdk.java.net/pipermail/hotspot-gc-dev/2007-October/00006 > 4.html > > where Mr. Kessler states: > > quote > > > > I'll see if we can get an updated version of PrintGCStats > out to replace the ancient one available at > > > > > > > > > That should give you the kinds of statistics you are asking > for. > > > > ... peter > > unquote > > > > I was wondering if a new version of PrintGCStats and PrintGCFixup will > indeed be made available or if we should proceed with our own updates to > handle new jdk releases, etc.?? > > > > A specific, recent example is jdk 1.6 with the -XX:PrintFLSStatistics > flag. We have found that this setting prevents the current PrintGCStats > from properly parsing ParNew data and thus doesn't generate the > Promotion stats (Promo.csv file). The following snippet shows how the > ParNew line is now split (shown in bold), thanks to the > -XX:PrintFLSStatistics: > > > > > ======================================================================== > ======================================================================== > ====== > > {Heap before GC invocations=0 (full 0): > > par new generation total 305088K, used 277376K [0x2f800000, > 0x43d00000, 0x43d00000) > > eden space 277376K, 100% used [0x2f800000, 0x406e0000, 0x406e0000) > > from space 27712K, 0% used [0x406e0000, 0x406e0000, 0x421f0000) > > to space 27712K, 0% used [0x421f0000, 0x421f0000, 0x43d00000) > > concurrent mark-sweep generation total 2739200K, used 0K [0x43d00000, > 0xeb000000, 0xeb000000) > > concurrent-mark-sweep perm gen total 131072K, used 14913K > [0xeb000000, 0xf3000000, 0xfb000000) > > 8.746: [GC Before GC: > > Statistics for BinaryTreeDictionary: > > ------------------------------------ > > Total Free Space: 701235200 > > Max Chunk Size: 701235200 > > Number of Blocks: 1 > > Av. Block Size: 701235200 > > Tree Height: 1 > > Before GC: > > Statistics for BinaryTreeDictionary: > > ------------------------------------ > > Total Free Space: 0 > > Max Chunk Size: 0 > > Number of Blocks: 0 > > Tree Height: 0 > > 8.746: [ParNew > > Desired survivor size 14188544 bytes, new threshold 1 (max 4) > > - age 1: 15763640 bytes, 15763640 total > > - age 2: 56 bytes, 15763696 total > > : 277376K->15474K(305088K), 0.5657873 secs] > 277376K->15474K(3044288K)After GC: > > Statistics for BinaryTreeDictionary: > > ------------------------------------ > > Total Free Space: 701218816 > > Max Chunk Size: 701218816 > > Number of Blocks: 1 > > Av. Block Size: 701218816 > > Tree Height: 1 > > After GC: > > Statistics for BinaryTreeDictionary: > > ------------------------------------ > > Total Free Space: 0 > > Max Chunk Size: 0 > > Number of Blocks: 0 > > Tree Height: 0 > > , 0.5668866 secs] [Times: user=0.34 sys=1.07, real=0.57 secs] > > > ======================================================================== > ======================================================================== > ====== > > > > Thank you, > > Dave > > > > David Naas > > Chicago Board Options Exchange > > 312-786-7222 > > > > > > > End of hotspot-gc-dev Digest, Vol 6, Issue 1 > ******************************************** > -- I would remember that if researchers were not ambitious probably today we haven't the technology we are using! From neojia at gmail.com Mon Dec 3 13:21:04 2007 From: neojia at gmail.com (Neo Jia) Date: Mon, 3 Dec 2007 13:21:04 -0800 Subject: PrintGCStats In-Reply-To: <8CDFE9CE1B9A344E9AA47C27B7C58DD8168DDF@MSMAIL.cboent.cboe.com> References: <8CDFE9CE1B9A344E9AA47C27B7C58DD8168DD7@MSMAIL.cboent.cboe.com> <5d649bdb0712031312h220dd7bej7fe60c7bf1328d8@mail.gmail.com> <8CDFE9CE1B9A344E9AA47C27B7C58DD8168DDF@MSMAIL.cboent.cboe.com> Message-ID: <5d649bdb0712031321o1d37c6f7w4921063560b5e8f9@mail.gmail.com> On Dec 3, 2007 1:16 PM, Ciciora, Paul wrote: > The idea is you'd include the time stamp as a tagged value. Then you > could have the format you wanted such as seconds since process startup > (my favorite) and each time format would have a separate tag. But those stamps are only included in GC logs, right? Thanks, Neo > > -----Original Message----- > From: Neo Jia [mailto:neojia at gmail.com] > Sent: Monday, December 03, 2007 3:13 PM > To: Ciciora, Paul > Cc: hotspot-gc-dev at openjdk.java.net > > Subject: Re: PrintGCStats > > I like the idea about tag/value stuffs. > > But I do worry about sending to a separate file unless we put a > timestamp for each log entry, otherwise it would be hard to debug. > > Thanks, > Neo > > On Dec 3, 2007 12:25 PM, Ciciora, Paul wrote: > > Since GC formats are constantly changing and different collectors log > > stats differently I'd love to so you adopt a harvestable output > format. > > The idea would be to send stats to a separate file and use a > name/value > > style format. That way you could send whatever you wanted there and > all > > the harvester script or program would have to know is the tag name. > The > > name could be terse to save space. You could register the tag names so > > open source changes would conform. If you did that then format changes > > to the human readable output could be separate. You wouldn't have to > be > > as sensitive to breaking scripts. > > > > > > Just a thought. I'm probably not the first one to suggest this. > > > > -----Original Message----- > > From: hotspot-gc-dev-bounces at openjdk.java.net > > [mailto:hotspot-gc-dev-bounces at openjdk.java.net] On Behalf Of > > hotspot-gc-dev-request at openjdk.java.net > > Sent: Monday, December 03, 2007 2:00 PM > > To: hotspot-gc-dev at openjdk.java.net > > Subject: hotspot-gc-dev Digest, Vol 6, Issue 1 > > > > Send hotspot-gc-dev mailing list submissions to > > hotspot-gc-dev at openjdk.java.net > > > > To subscribe or unsubscribe via the World Wide Web, visit > > http://mail.openjdk.java.net/mailman/listinfo/hotspot-gc-dev > > or, via email, send a message with subject or body 'help' to > > hotspot-gc-dev-request at openjdk.java.net > > > > You can reach the person managing the list at > > hotspot-gc-dev-owner at openjdk.java.net > > > > When replying, please edit your Subject line so it is more specific > > than "Re: Contents of hotspot-gc-dev digest..." > > > > > > Today's Topics: > > > > 1. PrintGCStats (Naas, Dave) > > 2. Re: PrintGCStats (Peter B. Kessler) > > > > > > ---------------------------------------------------------------------- > > > > Message: 1 > > Date: Mon, 3 Dec 2007 10:57:30 -0600 > > From: "Naas, Dave" > > Subject: PrintGCStats > > To: > > Message-ID: > > > <4BD174404CF4A34C98322DC926CF862B2289F2 at MSMAIL.cboent.cboe.com> > > Content-Type: text/plain; charset="iso-8859-1" > > > > Regarding the posting from Oct 26, 2007: > > > http://mail.openjdk.java.net/pipermail/hotspot-gc-dev/2007-October/00006 > > 4.html > > where Mr. Kessler states: > > quote > > > > I'll see if we can get an updated version of PrintGCStats > > out to replace the ancient one available at > > > > > > > > > > That should give you the kinds of statistics you are > asking > > for. > > > > ... peter > > unquote > > > > I was wondering if a new version of PrintGCStats and PrintGCFixup will > > indeed be made available or if we should proceed with our own updates > to > > handle new jdk releases, etc.?? > > > > A specific, recent example is jdk 1.6 with the -XX:PrintFLSStatistics > > flag. We have found that this setting prevents the current > PrintGCStats > > from properly parsing ParNew data and thus doesn't generate the > > Promotion stats (Promo.csv file). The following snippet shows how > the > > ParNew line is now split (shown in bold), thanks to the > > -XX:PrintFLSStatistics: > > > > > ======================================================================== > > > ======================================================================== > > ====== > > {Heap before GC invocations=0 (full 0): > > par new generation total 305088K, used 277376K [0x2f800000, > > 0x43d00000, 0x43d00000) > > eden space 277376K, 100% used [0x2f800000, 0x406e0000, 0x406e0000) > > from space 27712K, 0% used [0x406e0000, 0x406e0000, 0x421f0000) > > to space 27712K, 0% used [0x421f0000, 0x421f0000, 0x43d00000) > > concurrent mark-sweep generation total 2739200K, used 0K [0x43d00000, > > 0xeb000000, 0xeb000000) > > concurrent-mark-sweep perm gen total 131072K, used 14913K > [0xeb000000, > > 0xf3000000, 0xfb000000) > > 8.746: [GC Before GC: > > Statistics for BinaryTreeDictionary: > > ------------------------------------ > > Total Free Space: 701235200 > > Max Chunk Size: 701235200 > > Number of Blocks: 1 > > Av. Block Size: 701235200 > > Tree Height: 1 > > Before GC: > > Statistics for BinaryTreeDictionary: > > ------------------------------------ > > Total Free Space: 0 > > Max Chunk Size: 0 > > Number of Blocks: 0 > > Tree Height: 0 > > 8.746: [ParNew > > Desired survivor size 14188544 bytes, new threshold 1 (max 4) > > - age 1: 15763640 bytes, 15763640 total > > - age 2: 56 bytes, 15763696 total > > : 277376K->15474K(305088K), 0.5657873 secs] > > 277376K->15474K(3044288K)After GC: > > Statistics for BinaryTreeDictionary: > > ------------------------------------ > > Total Free Space: 701218816 > > Max Chunk Size: 701218816 > > Number of Blocks: 1 > > Av. Block Size: 701218816 > > Tree Height: 1 > > After GC: > > Statistics for BinaryTreeDictionary: > > ------------------------------------ > > Total Free Space: 0 > > Max Chunk Size: 0 > > Number of Blocks: 0 > > Tree Height: 0 > > , 0.5668866 secs] [Times: user=0.34 sys=1.07, real=0.57 secs] > > > ======================================================================== > > > ======================================================================== > > ====== > > > > Thank you, > > Dave > > > > David Naas > > Chicago Board Options Exchange > > 312-786-7222 > > > > > > > > ------------------------------ > > > > Message: 2 > > Date: Mon, 03 Dec 2007 10:19:41 -0800 > > From: "Peter B. Kessler" > > Subject: Re: PrintGCStats > > To: "Naas, Dave" > > Cc: hotspot-gc-dev at openjdk.java.net > > Message-ID: <475448BD.3030401 at Sun.COM> > > Content-Type: text/plain; format=flowed; charset=ISO-8859-1 > > > > It looks like the most recent PrintGCFixup (and PrintGCStats > > and CompareGCStats) is "posted" in > > > > > > http://permalink.gmane.org/gmane.comp.java.openjdk.hotspot.gc.devel/51 > > > > You have to join all the lines that got wrapped (sigh). > > Sometimes you have to run PrintGCFixup more than once to > > get it to remove things so that it can see other things > > to remove. Though, in your case, running it twice doesn't > > help remove the output of PrintFLSStatistics. It does look > > like if you add a cleaner for PrintFLSStatistics, you'll > > have to run PrintGCFixup at least twice, since that output > > gets in the way of the removal of the PrintTenuringDistribution > > flag. > > > > PrintGCFixup and friends look like a prime candidate for putting > > in hotspot/tools/ and letting people make improvements. If you > > wanted to contribute your addition for removing PrintFLSStatistics, > > I'm sure we could find someone here to sponsor it. > > > > ... peter > > > > Naas, Dave wrote: > > > > > Regarding the posting from Oct 26, 2007: > > > http://mail.openjdk.java.net/pipermail/hotspot-gc-dev/2007-October/00006 > > 4.html > > > where Mr. Kessler states: > > > quote > > > > > I'll see if we can get an updated version of PrintGCStats > > out to replace the ancient one available at > > > > > > > > > > > > That should give you the kinds of statistics you are > asking > > for. > > > > > ... peter > > > unquote > > > > > > I was wondering if a new version of PrintGCStats and PrintGCFixup > will > > indeed be made available or if we should proceed with our own updates > to > > handle new jdk releases, etc.?? > > > > > > A specific, recent example is jdk 1.6 with the > -XX:PrintFLSStatistics > > flag. We have found that this setting prevents the current > PrintGCStats > > from properly parsing ParNew data and thus doesn't generate the > > Promotion stats (Promo.csv file). The following snippet shows how > the > > ParNew line is now split (shown in bold), thanks to the > > -XX:PrintFLSStatistics: > > > > > > > > > ======================================================================== > > > ======================================================================== > > ====== > > > {Heap before GC invocations=0 (full 0): > > > par new generation total 305088K, used 277376K [0x2f800000, > > 0x43d00000, 0x43d00000) > > > eden space 277376K, 100% used [0x2f800000, 0x406e0000, 0x406e0000) > > > from space 27712K, 0% used [0x406e0000, 0x406e0000, 0x421f0000) > > > to space 27712K, 0% used [0x421f0000, 0x421f0000, 0x43d00000) > > > concurrent mark-sweep generation total 2739200K, used 0K > [0x43d00000, > > 0xeb000000, 0xeb000000) > > > concurrent-mark-sweep perm gen total 131072K, used 14913K > > [0xeb000000, 0xf3000000, 0xfb000000) > > > 8.746: [GC Before GC: > > > Statistics for BinaryTreeDictionary: > > > ------------------------------------ > > > Total Free Space: 701235200 > > > Max Chunk Size: 701235200 > > > Number of Blocks: 1 > > > Av. Block Size: 701235200 > > > Tree Height: 1 > > > Before GC: > > > Statistics for BinaryTreeDictionary: > > > ------------------------------------ > > > Total Free Space: 0 > > > Max Chunk Size: 0 > > > Number of Blocks: 0 > > > Tree Height: 0 > > > 8.746: [ParNew > > > Desired survivor size 14188544 bytes, new threshold 1 (max 4) > > > - age 1: 15763640 bytes, 15763640 total > > > - age 2: 56 bytes, 15763696 total > > > : 277376K->15474K(305088K), 0.5657873 secs] > > 277376K->15474K(3044288K)After GC: > > > Statistics for BinaryTreeDictionary: > > > ------------------------------------ > > > Total Free Space: 701218816 > > > Max Chunk Size: 701218816 > > > Number of Blocks: 1 > > > Av. Block Size: 701218816 > > > Tree Height: 1 > > > After GC: > > > Statistics for BinaryTreeDictionary: > > > ------------------------------------ > > > Total Free Space: 0 > > > Max Chunk Size: 0 > > > Number of Blocks: 0 > > > Tree Height: 0 > > > , 0.5668866 secs] [Times: user=0.34 sys=1.07, real=0.57 secs] > > > > > > ======================================================================== > > > ======================================================================== > > ====== > > > > > > Thank you, > > > Dave > > > > > > David Naas > > > Chicago Board Options Exchange > > > 312-786-7222 > > > > > > > > > > > > > End of hotspot-gc-dev Digest, Vol 6, Issue 1 > > ******************************************** > > > > > > -- > I would remember that if researchers were not ambitious > probably today we haven't the technology we are using! > -- I would remember that if researchers were not ambitious probably today we haven't the technology we are using! From Jon.Masamitsu at Sun.COM Thu Dec 6 07:24:38 2007 From: Jon.Masamitsu at Sun.COM (Jon Masamitsu) Date: Thu, 06 Dec 2007 07:24:38 -0800 Subject: Please ignore Message-ID: <47581436.9010108@Sun.COM> hotspot-gc-use at openjdk.java.net is forwarded to hotspot-gc-dev at openjdk.java.net without moderation? _______________________________________________ hotspot-gc-use mailing list hotspot-gc-use at openjdk.java.net http://mail.openjdk.java.net/mailman/listinfo/hotspot-gc-use From Jon.Masamitsu at Sun.COM Thu Dec 6 10:47:48 2007 From: Jon.Masamitsu at Sun.COM (Jon Masamitsu) Date: Thu, 06 Dec 2007 10:47:48 -0800 Subject: Please ignore Message-ID: <475843D4.7060101@Sun.COM> hotspot-gc-use at openjdk.java.net is forwarded to hotspot-gc-dev at openjdk.java.net without moderation? On hotspot-gc-dev who is the sender? _______________________________________________ hotspot-gc-use mailing list hotspot-gc-use at openjdk.java.net http://mail.openjdk.java.net/mailman/listinfo/hotspot-gc-use From Jon.Masamitsu at Sun.COM Thu Dec 6 11:51:52 2007 From: Jon.Masamitsu at Sun.COM (Jon Masamitsu) Date: Thu, 06 Dec 2007 11:51:52 -0800 Subject: Please ignore in hotspot-gc-dev too Message-ID: <475852D8.8000500@Sun.COM> hotspot-gc-use at openjdk.java.net is forwarded to hotspot-gc-dev at openjdk.java.net without moderation? On hotspot-gc-dev who is the sender? hotspot-gc-use at openjdk.java.net was added to the list of acceptable aliases. _______________________________________________ hotspot-gc-use mailing list hotspot-gc-use at openjdk.java.net http://mail.openjdk.java.net/mailman/listinfo/hotspot-gc-use From Y.S.Ramakrishna at Sun.COM Fri Dec 7 16:32:24 2007 From: Y.S.Ramakrishna at Sun.COM (Y Srinivas Ramakrishna) Date: Fri, 07 Dec 2007 16:32:24 -0800 Subject: request for review: 6634032 (medium-to-small): CMS: Need CMSInitiatingPermOccupancyFraction for perm, divorcing from CMSInitiatingOccupancyFraction Message-ID: [Attached is a patch of diffs as well as a webrev tar-ball, whichever format you prefer. The latter may be easier for the more extensive changes in the case of one of the files at least, where the diffs may get a bit hairy to read. Sun-internal reviewers can access the webrev via a pointer in the suggested fix section of the bug report.] 6634032 CMS: Need CMSInitiatingPermOccupancyFraction for perm, divorcing from CMSInitiatingOccupancyFraction In addition, we can now dynamically decide at the start of a CMS collection cycle whether we will be collecting the perm gen in that cycle. I introduced a couple of experimental knobs to tweak that decision policy, but left the default current policy intact (modulo the divorcing of the two collection thresholds). See the block comment preceding update_should_unload_classes(). The settings of the knobs will likely change based on further experiments and experience, but the current settings are so as to rock the boat as little as possible. This should fix the problems reported by Anuj Lal and Thomas Viessmann on this mailing list. (vide the following thread: http://mail.openjdk.java.net/pipermail/hotspot-gc-dev/2007-November/000081.html ) Further improvements are planned in CR 6543076 "Adaptive collection of perm gen", leveraging the infrastructure here to allow dynamic per-cycle decisions based on perm gen allocation rate estimates etc. Fix Verified: yes Verification Testing: +PrintGCDetails was used along with default and various non-default settings to verify that perm gen collections were occurring as designed. Other Testing: on-going internal testing (rwl and jprt); performance data will be collected and shared prior to any push. PS: mixed in with the diffs is an old diff for:- 6621144 CMS: assertion failure "is_cms_thread == Thread::current()->is_ConcurrentGC_thread()" which you can also review (or feel free to ignore for the purposes of this code review). Many thanks for your reviews, feedback, comments and suggestions. -- ramki -------------- next part -------------- A non-text attachment was scrubbed... Name: cms_bugs.patch Type: text/x-patch Size: 29932 bytes Desc: not available Url : http://mail.openjdk.java.net/pipermail/hotspot-gc-dev/attachments/20071207/a075b50a/attachment-0002.bin -------------- next part -------------- A non-text attachment was scrubbed... Name: webrev.tar.gz Type: application/x-gzip Size: 1692996 bytes Desc: not available Url : http://mail.openjdk.java.net/pipermail/hotspot-gc-dev/attachments/20071207/a075b50a/attachment-0003.bin From Keith.Holdaway at sas.com Mon Dec 10 10:16:05 2007 From: Keith.Holdaway at sas.com (Keith Holdaway) Date: Mon, 10 Dec 2007 13:16:05 -0500 Subject: 64 bit CMS JDK 5.0 u14 In-Reply-To: References: Message-ID: <304E9E55F6A4BE4B910C2437D4D1B49608FB48C825@MERCMBX14.na.sas.com> Gentlemen, I am running some midle-tier Portal load tests in WLS 9.2 MP2 with Sun JDK 5.0 u14. I am running 100 concurrent users that logon, navigate, open portlets, and eventually logoff; only to logon again and repeat the cycle. My testing people have establish Load Runner scripts to put the Portal software through an endurance test over 5 days with the 100 users. Normally on 32-bit WLS 8.1 SP6 with JDK 1.4.2_13 we run with the following VM args; we attain some 3.4 million passed transactions with zero failed transactions: -server -Xms1400m -Xmx1400m -XX:NewSize=64m -XX:MaxNewSize=64m -XX:PermSize=128m -XX:MaxPermSize=128m -Xss128k -XX:-UseTLAB -XX:+DisableExplicitGC -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000 -Djava.awt.headless=true CMS never works very well in the 32-bit environment; failing miserably above; although at JDK 1.4.2_15, we see some 2 million passed transactions with 1130+ failed transactions owing to 120 seconds timeouts in concurrent mode failures. Now, in the 64 bit environment running on AMD Windows Server 2003, I can run pretty successfully with CMS: -Xms1500m -Xmx3500m -XX:NewSize=320m -XX:MaxNewSize=320m -Xss256k -XX:PermSize=128m -XX:MaxPermSize=128m -XX:+UseConcMarkSweepGC -XX:CMSFullGCsBeforeCompaction=0 -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=40 -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000 -Djava.awt.headless=true -Dcom.sun.management.jmxremote -verbosegc -Xloggc:C:\keith\GCLogs\gc11.txt I can achieve some 3.4 million as for the throughput collector in 32 bit env. But, I do note several thousand failed transactions that correlate with concurrent mode failures after some 24 hrs; pauses in the 400-600 seconds range when Full GC takes over. I have tried varying the CMSInitiatingOccupancyFraction to 20%, but the CMS mode failures still occur. I am now running with the incremental mode CMS; but anticipate further very long pauses. The VM always recovers very well after these sporadic Full GCs, but to eradicate them, should I run with an 8 GB heap or something along those lines.? I also read something about killing the swap file? My AMD 64 bit bx, unfortunately for now is restricted to 4 GB RAM; but I am adding a further 4 GB soon. I am about to go to the Solaris SPARC 64 bit and run the exact same scenario with a 7-8 GB heap. I read about the occupancy fration for OG and Perm Gen; do I need to apply this patch. Our Perm Gen is always set to 128 MB and only ever attains 108 MB. Any feedback would help us in our endeavours to support our EBI apps in a 64 bit env. keith Keith R Holdaway Java Development Technologies SAS... The Power to Know Carpe Diem ... From Y.S.Ramakrishna at Sun.COM Mon Dec 10 10:44:48 2007 From: Y.S.Ramakrishna at Sun.COM (Y.S.Ramakrishna at Sun.COM) Date: Mon, 10 Dec 2007 10:44:48 -0800 Subject: 64 bit CMS JDK 5.0 u14 In-Reply-To: <304E9E55F6A4BE4B910C2437D4D1B49608FB48C825@MERCMBX14.na.sas.com> References: <304E9E55F6A4BE4B910C2437D4D1B49608FB48C825@MERCMBX14.na.sas.com> Message-ID: <475D8920.8000501@Sun.COM> Hi Keith -- > I am running some midle-tier Portal load tests in WLS 9.2 MP2 with Sun JDK 5.0 u14. I am running 100 concurrent users that logon, navigate, open portlets, and eventually logoff; only to logon again and repeat the cycle. My testing people have establish Load Runner scripts to put the Portal software through an endurance test over 5 days with the 100 users. > > Normally on 32-bit WLS 8.1 SP6 with JDK 1.4.2_13 we run with the following VM args; we attain some 3.4 million passed transactions with zero failed transactions: > > -server -Xms1400m -Xmx1400m -XX:NewSize=64m -XX:MaxNewSize=64m -XX:PermSize=128m -XX:MaxPermSize=128m -Xss128k -XX:-UseTLAB -XX:+DisableExplicitGC > -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000 -Djava.awt.headless=true > > CMS never works very well in the 32-bit environment; failing miserably above; although at JDK 1.4.2_15, we see some 2 million passed transactions with 1130+ failed transactions owing to 120 seconds timeouts in concurrent mode failures. > > Now, in the 64 bit environment running on AMD Windows Server 2003, I can run pretty successfully with CMS: > > -Xms1500m -Xmx3500m -XX:NewSize=320m -XX:MaxNewSize=320m -Xss256k -XX:PermSize=128m -XX:MaxPermSize=128m -XX:+UseConcMarkSweepGC -XX:CMSFullGCsBeforeCompaction=0 -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=40 -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000 -Djava.awt.headless=true -Dcom.sun.management.jmxremote -verbosegc -Xloggc:C:\keith\GCLogs\gc11.txt > > I can achieve some 3.4 million as for the throughput collector in 32 bit env. > > But, I do note several thousand failed transactions that correlate with concurrent mode failures after some 24 hrs; pauses in the 400-600 seconds range when Full GC takes over. > The fact that you start seeing the concurrent mode failures after 24 hours indicates to me strongly that the old generation gets slowly fragmented over a period of time. (Recall that the CMS collector is non-moving.) Can you confirm that the heap occupancy itself is constant (or nearly so) following CMS collection cycles, and that the full gc that follows a concurrent mode failure does not unload classes? Recall that CMS will not, by default, unload classes during concurrent cycles unless explicitly instructed to do so via: -XX:+CMSClassUnloadingEnabled -XX:+PermGenSweepingEnabled (the second option is needed in pre-6.0 JVM's, but not in more recent JVM's). > I have tried varying the CMSInitiatingOccupancyFraction to 20%, but the CMS mode failures still occur. It is usually a good idea to use survivor spaces to both reduce the pressure on the concurrent collector (by promoting less to the old gen), but also to reduce the spread in object sizes and lifetimes of the objects that do get promoted. I'd suggest using survivor spaces to make sure that survivors stay in the young gen for at least one scavenge (MaxTenuringThreshold = 1, possibly more, as experiments dictate), possibly more. A downside is possibly longer scavenges, but consider that the price for (possibly) avoiding concurrent mode failure. Prematurely promoting objects (besides the two points made above), can also reduce floating garbage and reduce CMS remark pause times (by reducing mutation rates in the old generation). > > I am now running with the incremental mode CMS; but anticipate further very long pauses. From what you described above (running CMS all the time by setting the initiation threshold very low), it does not look as though iCMS will buy you anything. > > The VM always recovers very well after these sporadic Full GCs, but to eradicate them, should I run with an 8 GB heap or something along those lines.? I also read something about killing the swap file? > > My AMD 64 bit bx, unfortunately for now is restricted to 4 GB RAM; but I am adding a further 4 GB soon. I am about to go to the Solaris SPARC 64 bit and run the exact same scenario with a 7-8 GB heap. Increasing the heap size can indeed sometimes help you avoid concurrent mode failure from fragmentation. (But first make sure to enable survivor spaces and, if applicable, perm gen collection.) > > I read about the occupancy fration for OG and Perm Gen; do I need to apply this patch. Our Perm Gen is always set to 128 MB and only ever attains 108 MB. The webrev i posted late last week should not really apply directly to your case (except inasmuch as, in the event that you enable perm gen collection, it might allow you to get away with not collecting the perm gen per each cycle, and thus help keep cms remark pauses possibly shorter). I would not worry about this patch at the level at which you are tuning currently (which is mainly looking to avoid the concurrent mode failures). -- ramki > > Any feedback would help us in our endeavours to support our EBI apps in a 64 bit env. > > keith > > > Keith R Holdaway > Java Development Technologies > > SAS... The Power to Know > > Carpe Diem ... > From Y.S.Ramakrishna at Sun.COM Mon Dec 10 10:57:33 2007 From: Y.S.Ramakrishna at Sun.COM (Y.S.Ramakrishna at Sun.COM) Date: Mon, 10 Dec 2007 10:57:33 -0800 Subject: 64 bit CMS JDK 5.0 u14 In-Reply-To: <475D8920.8000501@Sun.COM> References: <304E9E55F6A4BE4B910C2437D4D1B49608FB48C825@MERCMBX14.na.sas.com> <475D8920.8000501@Sun.COM> Message-ID: <475D8C1D.5040406@Sun.COM> Hi Keith -- Jon also has talks about this and related issues in a few of his blogs; see:- http://blogs.sun.com/jonthecollector/date/20060413 http://blogs.sun.com/jonthecollector/date/20060306 http://blogs.sun.com/jonthecollector/date/20060404 http://blogs.sun.com/jonthecollector/date/20070622 -- ramki Y.S.Ramakrishna at Sun.COM wrote: > Hi Keith -- > >> I am running some midle-tier Portal load tests in WLS 9.2 MP2 with Sun >> JDK 5.0 u14. I am running 100 concurrent users that logon, navigate, >> open portlets, and eventually logoff; only to logon again and repeat >> the cycle. My testing people have establish Load Runner scripts to put >> the Portal software through an endurance test over 5 days with the 100 >> users. >> >> Normally on 32-bit WLS 8.1 SP6 with JDK 1.4.2_13 we run with the >> following VM args; we attain some 3.4 million passed transactions with >> zero failed transactions: >> >> -server -Xms1400m -Xmx1400m -XX:NewSize=64m -XX:MaxNewSize=64m >> -XX:PermSize=128m -XX:MaxPermSize=128m -Xss128k -XX:-UseTLAB >> -XX:+DisableExplicitGC >> -Dsun.rmi.dgc.client.gcInterval=3600000 >> -Dsun.rmi.dgc.server.gcInterval=3600000 -Djava.awt.headless=true >> >> CMS never works very well in the 32-bit environment; failing miserably >> above; although at JDK 1.4.2_15, we see some 2 million passed >> transactions with 1130+ failed transactions owing to 120 seconds >> timeouts in concurrent mode failures. >> >> Now, in the 64 bit environment running on AMD Windows Server 2003, I >> can run pretty successfully with CMS: >> >> -Xms1500m -Xmx3500m -XX:NewSize=320m -XX:MaxNewSize=320m -Xss256k >> -XX:PermSize=128m -XX:MaxPermSize=128m -XX:+UseConcMarkSweepGC >> -XX:CMSFullGCsBeforeCompaction=0 -XX:+UseCMSInitiatingOccupancyOnly >> -XX:CMSInitiatingOccupancyFraction=40 >> -Dsun.rmi.dgc.client.gcInterval=3600000 >> -Dsun.rmi.dgc.server.gcInterval=3600000 -Djava.awt.headless=true >> -Dcom.sun.management.jmxremote -verbosegc >> -Xloggc:C:\keith\GCLogs\gc11.txt >> >> I can achieve some 3.4 million as for the throughput collector in 32 >> bit env. >> >> But, I do note several thousand failed transactions that correlate >> with concurrent mode failures after some 24 hrs; pauses in the 400-600 >> seconds range when Full GC takes over. >> > > The fact that you start seeing the concurrent mode failures after > 24 hours indicates to me strongly that the old generation gets slowly > fragmented over a period of time. (Recall that the CMS collector is > non-moving.) > > Can you confirm that the heap occupancy itself is constant (or nearly > so) following CMS collection cycles, and that the full gc that follows > a concurrent mode failure does not unload classes? Recall that CMS will > not, by default, unload classes during concurrent cycles unless > explicitly instructed to do so via: > > -XX:+CMSClassUnloadingEnabled -XX:+PermGenSweepingEnabled > > (the second option is needed in pre-6.0 JVM's, but not in more > recent JVM's). > >> I have tried varying the CMSInitiatingOccupancyFraction to 20%, but >> the CMS mode failures still occur. > > It is usually a good idea to use survivor spaces to both reduce the > pressure on the concurrent collector (by promoting less to the old > gen), but also to reduce the spread in object sizes and lifetimes > of the objects that do get promoted. I'd suggest using survivor > spaces to make sure that survivors stay in the young gen for at least > one scavenge (MaxTenuringThreshold = 1, possibly more, as experiments > dictate), possibly more. A downside is possibly longer scavenges, > but consider that the price for (possibly) avoiding concurrent > mode failure. > > Prematurely promoting objects (besides the two points made above), > can also reduce floating garbage and reduce CMS remark pause > times (by reducing mutation rates in the old generation). > >> >> I am now running with the incremental mode CMS; but anticipate further >> very long pauses. > > From what you described above (running CMS all the time by setting the > initiation threshold very low), it does not look as though iCMS will > buy you anything. > >> >> The VM always recovers very well after these sporadic Full GCs, but to >> eradicate them, should I run with an 8 GB heap or something along >> those lines.? I also read something about killing the swap file? >> >> My AMD 64 bit bx, unfortunately for now is restricted to 4 GB RAM; but >> I am adding a further 4 GB soon. I am about to go to the Solaris SPARC >> 64 bit and run the exact same scenario with a 7-8 GB heap. > > Increasing the heap size can indeed sometimes help you avoid > concurrent mode failure from fragmentation. (But first make > sure to enable survivor spaces and, if applicable, perm gen > collection.) > >> >> I read about the occupancy fration for OG and Perm Gen; do I need to >> apply this patch. Our Perm Gen is always set to 128 MB and only ever >> attains 108 MB. > > The webrev i posted late last week should not really apply directly to > your case (except inasmuch as, in the event that you enable perm gen > collection, it might allow you to get away with not collecting the > perm gen per each cycle, and thus help keep cms remark pauses possibly > shorter). I would not worry about this patch at the level at which you > are tuning currently (which is mainly looking to avoid the concurrent > mode failures). > > -- ramki > >> >> Any feedback would help us in our endeavours to support our EBI apps >> in a 64 bit env. >> >> keith >> >> >> Keith R Holdaway >> Java Development Technologies >> >> SAS... The Power to Know >> >> Carpe Diem ... >> > > From tony.printezis at sun.com Mon Dec 10 10:59:01 2007 From: tony.printezis at sun.com (Tony Printezis) Date: Mon, 10 Dec 2007 13:59:01 -0500 Subject: 64 bit CMS JDK 5.0 u14 In-Reply-To: <475D8920.8000501@Sun.COM> References: <304E9E55F6A4BE4B910C2437D4D1B49608FB48C825@MERCMBX14.na.sas.com> <475D8920.8000501@Sun.COM> Message-ID: <475D8C75.5010509@sun.com> Keith and Ramki, I'd like to add a couple of things to Ramki's informative reply. First, I wonder why the Portal ran fine with the default GC in 1.4.2 with no failed (I assumed timed out, right?) transactions. The default (aka serial) GC is not a low-pause GC, so maybe the pause times it gave you were good enough. BTW, what are your latency targets? hundreds of ms? seconds? Second, we'd be able to help you a bit more constructively if you gave us some GC logs to look at (and if you have both WLS 8.1 and 9.2 logs, it'd be nice to get them so that we can compare them). > CMS never works very well in the 32-bit environment FWIW, a lot of our customers are happy with CMS in a 32-bit environment! :-) Tony Y.S.Ramakrishna at sun.com wrote: > Hi Keith -- > >> I am running some midle-tier Portal load tests in WLS 9.2 MP2 with >> Sun JDK 5.0 u14. I am running 100 concurrent users that logon, >> navigate, open portlets, and eventually logoff; only to logon again >> and repeat the cycle. My testing people have establish Load Runner >> scripts to put the Portal software through an endurance test over 5 >> days with the 100 users. >> >> Normally on 32-bit WLS 8.1 SP6 with JDK 1.4.2_13 we run with the >> following VM args; we attain some 3.4 million passed transactions >> with zero failed transactions: >> >> -server -Xms1400m -Xmx1400m -XX:NewSize=64m -XX:MaxNewSize=64m >> -XX:PermSize=128m -XX:MaxPermSize=128m -Xss128k -XX:-UseTLAB >> -XX:+DisableExplicitGC >> -Dsun.rmi.dgc.client.gcInterval=3600000 >> -Dsun.rmi.dgc.server.gcInterval=3600000 -Djava.awt.headless=true >> >> CMS never works very well in the 32-bit environment; failing >> miserably above; although at JDK 1.4.2_15, we see some 2 million >> passed transactions with 1130+ failed transactions owing to 120 >> seconds timeouts in concurrent mode failures. >> >> Now, in the 64 bit environment running on AMD Windows Server 2003, I >> can run pretty successfully with CMS: >> >> -Xms1500m -Xmx3500m -XX:NewSize=320m -XX:MaxNewSize=320m -Xss256k >> -XX:PermSize=128m -XX:MaxPermSize=128m -XX:+UseConcMarkSweepGC >> -XX:CMSFullGCsBeforeCompaction=0 -XX:+UseCMSInitiatingOccupancyOnly >> -XX:CMSInitiatingOccupancyFraction=40 >> -Dsun.rmi.dgc.client.gcInterval=3600000 >> -Dsun.rmi.dgc.server.gcInterval=3600000 -Djava.awt.headless=true >> -Dcom.sun.management.jmxremote -verbosegc >> -Xloggc:C:\keith\GCLogs\gc11.txt >> >> I can achieve some 3.4 million as for the throughput collector in 32 >> bit env. >> >> But, I do note several thousand failed transactions that correlate >> with concurrent mode failures after some 24 hrs; pauses in the >> 400-600 seconds range when Full GC takes over. >> > > The fact that you start seeing the concurrent mode failures after > 24 hours indicates to me strongly that the old generation gets slowly > fragmented over a period of time. (Recall that the CMS collector is > non-moving.) > > Can you confirm that the heap occupancy itself is constant (or nearly > so) following CMS collection cycles, and that the full gc that follows > a concurrent mode failure does not unload classes? Recall that CMS will > not, by default, unload classes during concurrent cycles unless > explicitly instructed to do so via: > > -XX:+CMSClassUnloadingEnabled -XX:+PermGenSweepingEnabled > > (the second option is needed in pre-6.0 JVM's, but not in more > recent JVM's). > >> I have tried varying the CMSInitiatingOccupancyFraction to 20%, but >> the CMS mode failures still occur. > > It is usually a good idea to use survivor spaces to both reduce the > pressure on the concurrent collector (by promoting less to the old > gen), but also to reduce the spread in object sizes and lifetimes > of the objects that do get promoted. I'd suggest using survivor > spaces to make sure that survivors stay in the young gen for at least > one scavenge (MaxTenuringThreshold = 1, possibly more, as experiments > dictate), possibly more. A downside is possibly longer scavenges, > but consider that the price for (possibly) avoiding concurrent > mode failure. > > Prematurely promoting objects (besides the two points made above), > can also reduce floating garbage and reduce CMS remark pause > times (by reducing mutation rates in the old generation). > >> >> I am now running with the incremental mode CMS; but anticipate >> further very long pauses. > > From what you described above (running CMS all the time by setting the > initiation threshold very low), it does not look as though iCMS will > buy you anything. > >> >> The VM always recovers very well after these sporadic Full GCs, but >> to eradicate them, should I run with an 8 GB heap or something along >> those lines.? I also read something about killing the swap file? >> >> My AMD 64 bit bx, unfortunately for now is restricted to 4 GB RAM; >> but I am adding a further 4 GB soon. I am about to go to the Solaris >> SPARC 64 bit and run the exact same scenario with a 7-8 GB heap. > > Increasing the heap size can indeed sometimes help you avoid > concurrent mode failure from fragmentation. (But first make > sure to enable survivor spaces and, if applicable, perm gen > collection.) > >> >> I read about the occupancy fration for OG and Perm Gen; do I need to >> apply this patch. Our Perm Gen is always set to 128 MB and only ever >> attains 108 MB. > > The webrev i posted late last week should not really apply directly to > your case (except inasmuch as, in the event that you enable perm gen > collection, it might allow you to get away with not collecting the > perm gen per each cycle, and thus help keep cms remark pauses possibly > shorter). I would not worry about this patch at the level at which you > are tuning currently (which is mainly looking to avoid the concurrent > mode failures). > > -- ramki > >> >> Any feedback would help us in our endeavours to support our EBI apps >> in a 64 bit env. >> >> keith >> >> >> Keith R Holdaway >> Java Development Technologies >> >> SAS... The Power to Know >> >> Carpe Diem ... >> > -- ---------------------------------------------------------------------- | Tony Printezis, Staff Engineer | Sun Microsystems Inc. | | | MS BUR02-311 | | e-mail: tony.printezis at sun.com | 35 Network Drive | | office: +1 781 442 0998 (x20998) | Burlington, MA01803-0902, USA | ---------------------------------------------------------------------- e-mail client: Thunderbird (Solaris) From Keith.Holdaway at sas.com Mon Dec 10 11:55:49 2007 From: Keith.Holdaway at sas.com (Keith Holdaway) Date: Mon, 10 Dec 2007 14:55:49 -0500 Subject: 64 bit CMS JDK 5.0 u14 In-Reply-To: <475D8C75.5010509@sun.com> References: <304E9E55F6A4BE4B910C2437D4D1B49608FB48C825@MERCMBX14.na.sas.com> <475D8920.8000501@Sun.COM> <475D8C75.5010509@sun.com> Message-ID: <304E9E55F6A4BE4B910C2437D4D1B49608FB48CB9D@MERCMBX14.na.sas.com> Tony, I intend to elaborate/add GC logs later; but to quickly dispell any misunderstanding. We currently deploy most of our middle-tier apps running in a VM implementing CMS; the one major EBI app that tends not to play well with CMS is our Portal app. However, at 64-bit, the Portal performs as well as it does in 32 bit with the throughput collector. I prefer the CMS algorithm since the low pause is crucial. The Portal generates a great deal of small short-lived objects; and sometimes in 32 bit mode we overrun the algorithm, even using survivor spaces; fragmentation is usually an issue with our CMS experieces in 32 bit with Portal. I, too, am very happy with CMS at 32-bit; just a little hard to fine tune our Portal with it; but again I aware of small memory leaks with Portal. I am very encouraged by the CMS algorithm on AMD 64 bit with Portal; just a little concerned about some of the 400-600 seconds Full GCs when the concurrent mode failures kick in. Fragmentation is at play for sure; so utilizing the SS1 and SS2 may help. The promotion guarantee is still an issue at 5.0 u14? I shall add more details later. But I really appreciate all your feedback. keith Keith R Holdaway Java Development Technologies SAS... The Power to Know Carpe Diem ... -----Original Message----- From: Tony Printezis [mailto:tony.printezis at sun.com] Sent: Monday, December 10, 2007 1:59 PM To: Y.S.Ramakrishna at sun.com Cc: Keith Holdaway; hotspot-gc-dev at openjdk.java.net Subject: Re: 64 bit CMS JDK 5.0 u14 Keith and Ramki, I'd like to add a couple of things to Ramki's informative reply. First, I wonder why the Portal ran fine with the default GC in 1.4.2 with no failed (I assumed timed out, right?) transactions. The default (aka serial) GC is not a low-pause GC, so maybe the pause times it gave you were good enough. BTW, what are your latency targets? hundreds of ms? seconds? Second, we'd be able to help you a bit more constructively if you gave us some GC logs to look at (and if you have both WLS 8.1 and 9.2 logs, it'd be nice to get them so that we can compare them). > CMS never works very well in the 32-bit environment FWIW, a lot of our customers are happy with CMS in a 32-bit environment! :-) Tony Y.S.Ramakrishna at sun.com wrote: > Hi Keith -- > >> I am running some midle-tier Portal load tests in WLS 9.2 MP2 with >> Sun JDK 5.0 u14. I am running 100 concurrent users that logon, >> navigate, open portlets, and eventually logoff; only to logon again >> and repeat the cycle. My testing people have establish Load Runner >> scripts to put the Portal software through an endurance test over 5 >> days with the 100 users. >> >> Normally on 32-bit WLS 8.1 SP6 with JDK 1.4.2_13 we run with the >> following VM args; we attain some 3.4 million passed transactions >> with zero failed transactions: >> >> -server -Xms1400m -Xmx1400m -XX:NewSize=64m -XX:MaxNewSize=64m >> -XX:PermSize=128m -XX:MaxPermSize=128m -Xss128k -XX:-UseTLAB >> -XX:+DisableExplicitGC >> -Dsun.rmi.dgc.client.gcInterval=3600000 >> -Dsun.rmi.dgc.server.gcInterval=3600000 -Djava.awt.headless=true >> >> CMS never works very well in the 32-bit environment; failing >> miserably above; although at JDK 1.4.2_15, we see some 2 million >> passed transactions with 1130+ failed transactions owing to 120 >> seconds timeouts in concurrent mode failures. >> >> Now, in the 64 bit environment running on AMD Windows Server 2003, I >> can run pretty successfully with CMS: >> >> -Xms1500m -Xmx3500m -XX:NewSize=320m -XX:MaxNewSize=320m -Xss256k >> -XX:PermSize=128m -XX:MaxPermSize=128m -XX:+UseConcMarkSweepGC >> -XX:CMSFullGCsBeforeCompaction=0 -XX:+UseCMSInitiatingOccupancyOnly >> -XX:CMSInitiatingOccupancyFraction=40 >> -Dsun.rmi.dgc.client.gcInterval=3600000 >> -Dsun.rmi.dgc.server.gcInterval=3600000 -Djava.awt.headless=true >> -Dcom.sun.management.jmxremote -verbosegc >> -Xloggc:C:\keith\GCLogs\gc11.txt >> >> I can achieve some 3.4 million as for the throughput collector in 32 >> bit env. >> >> But, I do note several thousand failed transactions that correlate >> with concurrent mode failures after some 24 hrs; pauses in the >> 400-600 seconds range when Full GC takes over. >> > > The fact that you start seeing the concurrent mode failures after > 24 hours indicates to me strongly that the old generation gets slowly > fragmented over a period of time. (Recall that the CMS collector is > non-moving.) > > Can you confirm that the heap occupancy itself is constant (or nearly > so) following CMS collection cycles, and that the full gc that follows > a concurrent mode failure does not unload classes? Recall that CMS will > not, by default, unload classes during concurrent cycles unless > explicitly instructed to do so via: > > -XX:+CMSClassUnloadingEnabled -XX:+PermGenSweepingEnabled > > (the second option is needed in pre-6.0 JVM's, but not in more > recent JVM's). > >> I have tried varying the CMSInitiatingOccupancyFraction to 20%, but >> the CMS mode failures still occur. > > It is usually a good idea to use survivor spaces to both reduce the > pressure on the concurrent collector (by promoting less to the old > gen), but also to reduce the spread in object sizes and lifetimes > of the objects that do get promoted. I'd suggest using survivor > spaces to make sure that survivors stay in the young gen for at least > one scavenge (MaxTenuringThreshold = 1, possibly more, as experiments > dictate), possibly more. A downside is possibly longer scavenges, > but consider that the price for (possibly) avoiding concurrent > mode failure. > > Prematurely promoting objects (besides the two points made above), > can also reduce floating garbage and reduce CMS remark pause > times (by reducing mutation rates in the old generation). > >> >> I am now running with the incremental mode CMS; but anticipate >> further very long pauses. > > From what you described above (running CMS all the time by setting the > initiation threshold very low), it does not look as though iCMS will > buy you anything. > >> >> The VM always recovers very well after these sporadic Full GCs, but >> to eradicate them, should I run with an 8 GB heap or something along >> those lines.? I also read something about killing the swap file? >> >> My AMD 64 bit bx, unfortunately for now is restricted to 4 GB RAM; >> but I am adding a further 4 GB soon. I am about to go to the Solaris >> SPARC 64 bit and run the exact same scenario with a 7-8 GB heap. > > Increasing the heap size can indeed sometimes help you avoid > concurrent mode failure from fragmentation. (But first make > sure to enable survivor spaces and, if applicable, perm gen > collection.) > >> >> I read about the occupancy fration for OG and Perm Gen; do I need to >> apply this patch. Our Perm Gen is always set to 128 MB and only ever >> attains 108 MB. > > The webrev i posted late last week should not really apply directly to > your case (except inasmuch as, in the event that you enable perm gen > collection, it might allow you to get away with not collecting the > perm gen per each cycle, and thus help keep cms remark pauses possibly > shorter). I would not worry about this patch at the level at which you > are tuning currently (which is mainly looking to avoid the concurrent > mode failures). > > -- ramki > >> >> Any feedback would help us in our endeavours to support our EBI apps >> in a 64 bit env. >> >> keith >> >> >> Keith R Holdaway >> Java Development Technologies >> >> SAS... The Power to Know >> >> Carpe Diem ... >> > -- ---------------------------------------------------------------------- | Tony Printezis, Staff Engineer | Sun Microsystems Inc. | | | MS BUR02-311 | | e-mail: tony.printezis at sun.com | 35 Network Drive | | office: +1 781 442 0998 (x20998) | Burlington, MA01803-0902, USA | ---------------------------------------------------------------------- e-mail client: Thunderbird (Solaris) From Y.S.Ramakrishna at Sun.COM Mon Dec 17 16:00:18 2007 From: Y.S.Ramakrishna at Sun.COM (Y Srinivas Ramakrishna) Date: Mon, 17 Dec 2007 16:00:18 -0800 Subject: equest for review (small): 6621728 "Heap inspection should not crash in the face of C-heap exhaustion" Message-ID: [A set of patches as well as a gzipped tarball of the webrev is attached. Should your mail servers strip either of the attachments, you may manually access them from the archives of this mailing list. For those internal to Sun, a webrev pointer of these changes can be found off of the "Suggested Fix" section of the CR. Thanks a lot for your reviews!] ----------------------------- Fixed 6621728: Heap inspection should not crash in the face of C-heap exhaustion When requisite support data structures for accumulating the statistics cannot be allocated because of C-heap exhaustion, we now either simply refuse to compute the histogram information or report the extent of undercounting (depending on which allocation(s) did not succeed). [*] I also took the opportunity to clean up and consolidate some statistics reporting associated with CMS's free list spaces that came to light from a recent customer interaction. The changes directly related to the original bug are the first two files in the webrev (or in the patch file). The remaining files contain changes related to the clean-up in [*] above. Fix verified: yes Verification Testing: artificially injected allocation failures; tested +PrintClassHistogram with SPECjvm98; dumped FLS census data and checked formatting. -------------- next part -------------- A non-text attachment was scrubbed... Name: cms_bugs.patch Type: text/x-patch Size: 38849 bytes Desc: not available Url : http://mail.openjdk.java.net/pipermail/hotspot-gc-dev/attachments/20071217/a87eeb98/attachment-0002.bin -------------- next part -------------- A non-text attachment was scrubbed... Name: webrev.6621728.tar.gz Type: application/x-gzip Size: 2125391 bytes Desc: not available Url : http://mail.openjdk.java.net/pipermail/hotspot-gc-dev/attachments/20071217/a87eeb98/attachment-0003.bin From Keith.Holdaway at sas.com Thu Dec 20 08:16:28 2007 From: Keith.Holdaway at sas.com (Keith Holdaway) Date: Thu, 20 Dec 2007 11:16:28 -0500 Subject: HOARD Message-ID: <304E9E55F6A4BE4B910C2437D4D1B49608FC4CC893@MERCMBX14.na.sas.com> I researched HOARD: http://developers.sun.com/solaris/articles/multiproc/multiproc.html The Hoard memory allocator is a fast, scalable, and memory-efficient memory allocator. It runs on a variety of platforms, including Linux, Solaris, and Windows. Hoard is a drop-in replacement for malloc() that can dramatically improve application performance, especially for multithreaded programs running on multiprocessors. Is this purely an OS change; or does one have to make changes to the VM source to use HOARD instead of malloc etc? keith Keith R Holdaway Java Development Technologies SAS... The Power to Know Carpe Diem ... From tony.printezis at sun.com Thu Dec 20 08:21:47 2007 From: tony.printezis at sun.com (Tony Printezis) Date: Thu, 20 Dec 2007 11:21:47 -0500 Subject: HOARD In-Reply-To: <304E9E55F6A4BE4B910C2437D4D1B49608FC4CC893@MERCMBX14.na.sas.com> References: <304E9E55F6A4BE4B910C2437D4D1B49608FC4CC893@MERCMBX14.na.sas.com> Message-ID: <476A969B.6020803@sun.com> Keith, Hi. You should just be able to use Hoard instead of whatever malloc comes with the OS without and OS changes. I just don't know whether the JVM will actually benefit from Hoard though. We don't do that much malloc within the JVM (we manage all Java objects ourselves). It'd be a nice exercise, though, if you're willing to try it and share your experience on the list! :-) Maybe, it could be a win if you have a native library that calls malloc extensively and from many threads. I'm CCing Mr Hoard so that he can share his wisdom. :-) Regards and happy holidays everyone! Tony Keith Holdaway wrote: > I researched HOARD: > > http://developers.sun.com/solaris/articles/multiproc/multiproc.html > > The Hoard memory allocator is a fast, scalable, and memory-efficient memory allocator. It runs on a variety of platforms, including Linux, Solaris, and Windows. Hoard is a drop-in replacement for malloc() that can dramatically improve application performance, especially for multithreaded programs running on multiprocessors. > > Is this purely an OS change; or does one have to make changes to the VM source to use HOARD instead of malloc etc? > > keith > > > Keith R Holdaway > Java Development Technologies > > SAS... The Power to Know > > Carpe Diem ... > > > -- ---------------------------------------------------------------------- | Tony Printezis, Staff Engineer | Sun Microsystems Inc. | | | MS BUR02-311 | | e-mail: tony.printezis at sun.com | 35 Network Drive | | office: +1 781 442 0998 (x20998) | Burlington, MA01803-0902, USA | ---------------------------------------------------------------------- e-mail client: Thunderbird (Solaris) From Y.S.Ramakrishna at Sun.COM Thu Dec 20 10:14:18 2007 From: Y.S.Ramakrishna at Sun.COM (Y Srinivas Ramakrishna) Date: Thu, 20 Dec 2007 10:14:18 -0800 Subject: HOARD In-Reply-To: <304E9E55F6A4BE4B910C2437D4D1B49608FC4CC893@MERCMBX14.na.sas.com> References: <304E9E55F6A4BE4B910C2437D4D1B49608FC4CC893@MERCMBX14.na.sas.com> Message-ID: Hi Keith -- > I researched HOARD: > > http://developers.sun.com/solaris/articles/multiproc/multiproc.html > > The Hoard memory allocator is a fast, scalable, and memory-efficient > memory allocator. It runs on a variety of platforms, including Linux, > Solaris, and Windows. Hoard is a drop-in replacement for malloc() that > can dramatically improve application performance, especially for > multithreaded programs running on multiprocessors. > > Is this purely an OS change; or does one have to make changes to the > VM source to use HOARD instead of malloc etc? Have you found that malloc() becomes a bottleneck in your application? The JVM's use of the C-heap should usually not be more than a minor blip on the performance profile, as such i would not think that Hoard's scalability and performance would contribute much to the bottom line of JVM performance, at least wrt pure Java applications. On the other hand, if your application has a lot of native (JNI) code that relies on the use of the C-heap (especially in a multi-threaded way) then it's likely that your application will benefit from the use of Hoard. As pointed out by the authors in the article, it should suffice (at least on Solaris) to have your environment with LD_PRELOAD defined to include the location of libhoard.so. My guess would be that the VM would then use libhoard.so's malloc in preference to libc.so's malloc. However, i have never personally tried this myself. I think members of the runtime team have, in the past, experimented with alternate malloc implementations, perhaps including Hoard. I am cross-posting to their mailing list and hopefully they will be able to provide more useful advice & help on this. -- ramki > > keith > > > Keith R Holdaway > Java Development Technologies< > > SAS... The Power to Know > > Carpe Diem ... > > From emery at cs.umass.edu Thu Dec 20 10:36:13 2007 From: emery at cs.umass.edu (Emery Berger) Date: Thu, 20 Dec 2007 13:36:13 -0500 Subject: HOARD References: <304E9E55F6A4BE4B910C2437D4D1B49608FC4CC893@MERCMBX14.na.sas.com> <476A969B.6020803@sun.com> Message-ID: <2330F00E4A3C924AB7F7297AE42D35351CF6DF@zor.ads.cs.umass.edu> Hi all, I know that Novell has used Hoard to improve performance of its VM, but in that VM, Java objects are allocated from the C heap. Given Tony's comments, I would not expect Hoard to make any difference for pure Java code running in HotSpot, but could certainly impact performance for native libraries. I'd be interested to hear the results. Best, -- Emery (apparently a.k.a. "Mr. Hoard" :)) --- Emery Berger Assistant Professor Dept. of Computer Science University of Massachusetts Amherst http://www.cs.umass.edu/~emery ________________________________ From: Tony Printezis [mailto:tony.printezis at sun.com] Sent: Thu 12/20/2007 11:21 AM To: Keith Holdaway Cc: hotspot-gc-dev at openjdk.java.net; Emery Berger Subject: Re: HOARD Keith, Hi. You should just be able to use Hoard instead of whatever malloc comes with the OS without and OS changes. I just don't know whether the JVM will actually benefit from Hoard though. We don't do that much malloc within the JVM (we manage all Java objects ourselves). It'd be a nice exercise, though, if you're willing to try it and share your experience on the list! :-) Maybe, it could be a win if you have a native library that calls malloc extensively and from many threads. I'm CCing Mr Hoard so that he can share his wisdom. :-) Regards and happy holidays everyone! Tony Keith Holdaway wrote: > I researched HOARD: > > http://developers.sun.com/solaris/articles/multiproc/multiproc.html > > The Hoard memory allocator is a fast, scalable, and memory-efficient memory allocator. It runs on a variety of platforms, including Linux, Solaris, and Windows. Hoard is a drop-in replacement for malloc() that can dramatically improve application performance, especially for multithreaded programs running on multiprocessors. > > Is this purely an OS change; or does one have to make changes to the VM source to use HOARD instead of malloc etc? > > keith > > > Keith R Holdaway > Java Development Technologies > > SAS... The Power to Know > > Carpe Diem ... > > > -- ---------------------------------------------------------------------- | Tony Printezis, Staff Engineer | Sun Microsystems Inc. | | | MS BUR02-311 | | e-mail: tony.printezis at sun.com | 35 Network Drive | | office: +1 781 442 0998 (x20998) | Burlington, MA01803-0902, USA | ---------------------------------------------------------------------- e-mail client: Thunderbird (Solaris) -------------- next part -------------- An HTML attachment was scrubbed... URL: http://mail.openjdk.java.net/pipermail/hotspot-gc-dev/attachments/20071220/98b6d979/attachment.html From Dave.Dice at Sun.COM Thu Dec 20 10:51:16 2007 From: Dave.Dice at Sun.COM (Dave Dice) Date: Thu, 20 Dec 2007 13:51:16 -0500 Subject: HOARD In-Reply-To: Message-ID: <0JTD0008W2YCJK40@mail-amer.sun.com> Hi Ramki, Hoard is perfectly good allocator, and as you noted, you can use LD_PRELOAD to enable it. (IIRC, hoard.org provides SPARC .so-es for download, so it's nearly painless to try). At various times I've tried it with hotspot and it behaved well. The latest version uses per-thread subheaps, so there's no synchronization (contended or uncontended) for "normal" allocation and deallocation. Normal being defined as the case where the same thread that allocates a block also frees the block. If on Solaris, however, I'd recommend libumem in slight preference over hoard. Libumem is fully supported and tuned specifically for solaris. Libumem and hoard share many concepts, the key being the use of subheaps to diffuse contention and to avoid false sharing. They both suffer from increased footprint, however, at least as compared to the default allocators. The Lea allocator (the default on linux) and the solaris libc allocator (based on Tarjan trees augmented with segregated free lists for common small sizes) use a common heap and a global local. They both have excellent footprint and heap density. Beyond footprint, the only problem I've ever run into with hoard or libumem was a red-black tree where various threads were adding and removing nodes on MP systems. Over time the traversal from the root to the leaves ended up touching nodes allocated by different threads, and thus in different subheaps, and thus covered by different (small page) TLBs. (You get the picture (:>)). Regards Dave p.s., really old JVMs use the __malloc_lock around thread suspension to avoid deadlock, in which case you can't substitute allocators. | -----Original Message----- | From: hotspot-runtime-dev-bounces at openjdk.java.net | [mailto:hotspot-runtime-dev-bounces at openjdk.java.net] On | Behalf Of Y Srinivas Ramakrishna | Sent: Thursday, December 20, 2007 1:14 PM | To: Keith Holdaway | Cc: hotspot-gc-dev at openjdk.java.net; | hotspot-runtime-dev at openjdk.java.net | Subject: Re: HOARD | | | Hi Keith -- | | > I researched HOARD: | > | > http://developers.sun.com/solaris/articles/multiproc/multiproc.html | > | > The Hoard memory allocator is a fast, scalable, and | memory-efficient | > memory allocator. It runs on a variety of platforms, | including Linux, | > Solaris, and Windows. Hoard is a drop-in replacement for | malloc() that | > can dramatically improve application performance, especially for | > multithreaded programs running on multiprocessors. | > | > Is this purely an OS change; or does one have to make | changes to the | > VM source to use HOARD instead of malloc etc? | | Have you found that malloc() becomes a bottleneck in your application? | The JVM's use of the C-heap should usually not be more than a | minor blip on the performance profile, as such i would not | think that Hoard's scalability and performance would | contribute much to the bottom line of JVM performance, at | least wrt pure Java applications. | | On the other hand, if your application has a lot of native | (JNI) code that relies on the use of the C-heap (especially | in a multi-threaded way) then it's likely that your | application will benefit from the use of Hoard. | | As pointed out by the authors in the article, it should | suffice (at least on Solaris) to have your environment with | LD_PRELOAD defined to include the location of libhoard.so. My | guess would be that the VM would then use libhoard.so's | malloc in preference to libc.so's malloc. | | However, i have never personally tried this myself. I think | members of the runtime team have, in the past, experimented | with alternate malloc implementations, perhaps including | Hoard. I am cross-posting to their mailing list and hopefully | they will be able to provide more useful advice & help on this. | | -- ramki | | > | > keith | > | > | > Keith R Holdaway | > Java Development Technologies< | > | > SAS... The Power to Know | > | > Carpe Diem ... | > | > | From jason at mugfu.com Mon Dec 31 10:21:08 2007 From: jason at mugfu.com (Jason Vasquez) Date: Mon, 31 Dec 2007 13:21:08 -0500 Subject: Perplexing GC Time Growth Message-ID: Hi all, I'm having a perplexing problem -- the garbage collector appears to be functioning well, with a nice object/garbage lifecycle, yet minor GC times increase over the life of the process inexplicably. We are working with telephony hardware with this application, so keeping GC pauses very low is quite important. (keeping well below 100 ms would be ideal) Here is the current configuration we are using: -server \ -Xloggc:garbage.log \ -XX:+PrintGCDetails \ -Dsun.rmi.dgc.server.gcInterval=3600000 \ -Dsun.rmi.dgc.client.gcInterval=3600000 \ -XX:ParallelGCThreads=8 \ -XX:+UseParNewGC \ -XX:+UseConcMarkSweepGC \ -XX:+PrintGCTimeStamps \ -XX:-TraceClassUnloading \ -XX:+AggressiveOpts \ -Xmx512M \ -Xms512M \ -Xmn128M \ -XX:MaxTenuringThreshold=6 \ -XX:+ExplicitGCInvokesConcurrent A large number of our bigger objects size-wise live for approximately 4-5 minutes, thus the larger young generation, and tenuring threshold. This seems to be successful in filtering most objects before they reach the tenured gen. (8 core x86 server, running 1.6.0_03-b05 on 32- bit Linux, kernel rev 2.6.18) Here is a representative snippet of our garbage log: 487.135: [GC 487.135: [ParNew: 112726K->7290K(118016K), 0.0218110 secs] 134494K->29058K(511232K), 0.0220520 secs] 557.294: [GC 557.294: [ParNew: 112250K->7976K(118016K), 0.0204220 secs] 134018K->29744K(511232K), 0.0206690 secs] 607.025: [GC 607.025: [ParNew: 112936K->7831K(118016K), 0.0231230 secs] 134704K->30003K(511232K), 0.0233670 secs] 672.522: [GC 672.522: [ParNew: 112791K->7361K(118016K), 0.0253620 secs] 134963K->29533K(511232K), 0.0256080 secs] ... 4006.635: [GC 4006.635: [ParNew: 112983K->7386K(118016K), 0.0385960 secs] 141969K->36608K(511232K), 0.0388460 secs] 4083.066: [GC 4083.066: [ParNew: 112346K->8439K(118016K), 0.0365940 secs] 141568K->37661K(511232K), 0.0368340 secs] 4158.457: [GC 4158.457: [ParNew: 113399K->7152K(118016K), 0.0360540 secs] 142621K->36374K(511232K), 0.0362990 secs] 4228.312: [GC 4228.313: [ParNew: 112112K->8738K(118016K), 0.0362510 secs] 141334K->38083K(511232K), 0.0365050 secs] 4293.800: [GC 4293.800: [ParNew: 113698K->8294K(118016K), 0.0368700 secs] 143043K->37917K(511232K), 0.0371160 secs] ... 10489.555: [GC 10489.556: [ParNew: 112701K->7770K(118016K), 0.0639770 secs] 151966K->47156K(511232K), 0.0642210 secs] 10562.544: [GC 10562.544: [ParNew: 112730K->9267K(118016K), 0.0625900 secs] 152116K->48772K(511232K), 0.0628470 secs] 10622.558: [GC 10622.558: [ParNew: 114227K->8361K(118016K), 0.0675730 secs] 153732K->48381K(511232K), 0.0678220 secs] 10678.842: [GC 10678.842: [ParNew: 113056K->7214K(118016K), 0.0669330 secs] 153076K->47234K(511232K), 0.0671800 secs] ... 177939.062: [GC 177939.062: [ParNew: 112608K->8620K(118016K), 0.7681440 secs] 466132K->362144K(511232K), 0.7684030 secs] 178005.483: [GC 178005.483: [ParNew: 113449K->7731K(118016K), 0.7677300 secs] 466973K->361893K(511232K), 0.7679890 secs] 178069.658: [GC 178069.658: [ParNew: 112670K->6814K(118016K), 0.7700020 secs] 466832K->360976K(511232K), 0.7702590 secs] 178133.513: [GC 178133.513: [ParNew: 111717K->7920K(118016K), 0.7702920 secs] 465879K->362082K(511232K), 0.7705560 secs] As you can see, the gc times continue to increase over time, on the order of about 10-20ms per hour. CMS runs are spaced very far apart, in fact, since most objects die before reaching the tenured generation, the CMS is triggered more by RMI DGC runs then by heap growth. (We were getting serial GCs, apparently due to RMI DGC before adding -XX:+ExplicitGCInvokesConcurrent) Here's some representative output from `jstat -gcutil -t -h10 2s`: Timestamp S0 S1 E O P YGC YGCT FGC FGCT GCT 11067.6 55.74 0.00 89.32 9.73 59.84 168 7.471 8 0.280 7.751 11069.6 55.74 0.00 93.65 9.73 59.84 168 7.471 8 0.280 7.751 11071.6 55.74 0.00 99.34 9.73 59.84 168 7.471 8 0.280 7.751 11073.5 0.00 62.22 2.89 9.76 59.84 169 7.537 8 0.280 7.816 11075.6 0.00 62.22 4.80 9.76 59.84 169 7.537 8 0.280 7.816 Survivor spaces continue to sit at about 50-65% occupancy, which seems fairly good to my eye. Eden fills approximately every 70 seconds, triggering minor GCs. Any ideas? This is becoming quite frustrating for us -- our application uptime is pretty horrible with the too-frequent scheduled restarts we are being forced to run. Thanks for any assistance you might be able to offer, -Jason Vasquez _______________________________________________ hotspot-gc-use mailing list hotspot-gc-use at openjdk.java.net http://mail.openjdk.java.net/mailman/listinfo/hotspot-gc-use