It's all about the answers!

Ask a question

RTC 3.0.1. JVM memory sizing


Ulf Buchner (3182213) | asked Jun 11 '12, 10:36 a.m.
Hi all,

We are using RTC 3.0.1. on a virtualized (VMWare) Windows Server 2008 R2 64-bit machine, running on WebSphere Application Server 7.0.0.21 and DB2 v9.7 with 8Gigs of memory (which seems to be enough as not all the memory is reported as being used by Windows). The team working with RTC is about 12 people, some of them working on plans and work items and others with sources that are being checked in, delivered, etc. We've set the minimum/maximum heap size of the JVM to 768MB/4096MB, as advised in the installation document. We encounter a performance issue however. Every couple of minutes the RTC server "hangs" for a period between 10 and 30 seconds, which is very annoying to the users.

I've noticed that this period of unresponsiveness occurs when the percentage of available memory in the Jazz Team Server drops to 0. I guess that this is the moment that the garbage collector runs. After the server is responding again, the free memory differs. The more the percentage of free memory after a freeze is, the longer the next run of the garbage collector will take.

Is there anything we can do to get rid of these freezes? Can I "play" around with different heap sizes without risking that the server will not start at all? Should I change the minimum heap size to something else? Is there any amount that can be advised?

Thanks,

Ulf

7 answers



permanent link
Philippe Mulet (55112) | answered Jun 11 '12, 11:21 a.m.
FORUM MODERATOR / JAZZ DEVELOPER
Seems like some heavy garbage collection behavior. You might want to consider the new JVM recommendation documented in https://jazz.net/jazz/resource/itemName/com.ibm.team.workitem.WorkItem/198140 that we are going to use in v4.0. Basically, set the min/max heap size to 4096MB/4096MB, then also set the nursery size to 512MB (-Xmn setting) and switch to GC gencon policy. ie. -Xmx4g -Xms4g -Xmn512m -Xgcpolicy:gencon

permanent link
Ralph Schoon (56.5k23642) | answered Jun 11 '12, 11:00 a.m.
FORUM ADMINISTRATOR / FORUM MODERATOR / JAZZ DEVELOPER
edited Jun 11 '12, 11:02 a.m.
Hi Ulf, yes, you might see garbage collection issues. Please look into

https://jazz.net/jazz/web/projects/Jazz%20Collaborative%20ALM#action=com.ibm.team.workitem.viewWorkItem&id=191654
and

https://jazz.net/jazz/web/projects/Jazz%20Collaborative%20ALM#action=com.ibm.team.workitem.viewWorkItem&id=198140

You also might want to look at this article: https://jazz.net/library/article/822

It talks about looking at performance issues.


permanent link
Philippe Mulet (55112) | answered Jun 21 '12, 6:25 a.m.
FORUM MODERATOR / JAZZ DEVELOPER
Heap sizes have a dedicated UI. The nursery (Xmn) setting goes in generic properties.

"Server Infrastructure" topic in "Java and Process Management" click "Process definition"
On the right hand side under the "Additional Properties" topic click "Java Virtual Machine"
In the page that comes up ensure the following fields are set accordingly:

Initial heap size: 4096
Maximum heap size: 4096
Generic JVM Arguments: -Xgcpolicy:gencon -Xgc:preferredHeapBase=0x100000000 -Xmn512m

Note that the GC preferredHeapBase setting might not be needed (it helps avoiding some native memory outage issues as explained in http://www-01.ibm.com/support/docview.wss?uid=swg1IZ73156).

permanent link
Ulf Buchner (3182213) | answered Jun 21 '12, 6:31 a.m.
Hi,

Thanks! It seems that our problems are fixed now. I followed the quite detailed instructions in the Installation Guide from the RTC 4.0 help. I guess that for our team 4GB should be enough.



permanent link
Ulf Buchner (3182213) | answered Jun 13 '12, 11:13 a.m.
Hi guys, I will try this. I guess the VM properties have to be added as Generic JVM arguments in the WAS server configuration?

permanent link
Philippe Mulet (55112) | answered Jun 21 '12, 6:28 a.m.
FORUM MODERATOR / JAZZ DEVELOPER
If you need more heap memory than 4Gb (determine by watching your server in operation, if its memory usage in admin is *always* max'ed out). Then try going to 6Gb or 8Gb, and remember then to increase Xmn value accordingly (it should be 1/8 of the heap).

We are currently running jazz.net (quite a bit of load) with 6Gb of heap, with all applications in one WAS container (CCM, QM, RM, JTS).

permanent link
Ulf Buchner (3182213) | answered Jan 22 '13, 5:21 a.m.
edited Jan 22 '13, 5:27 a.m.
Thanks for your help. Playing around with the WebSphere Application Server Performance Tuning Toolkit helped a lot. It seems that for our small team (about 20 people working with RTC) it is fine to set the heap space to 2Gb, resulting in a nursery size of 256Kb. First I had it set to 4Gb/512Mb but in our case the space above 2Gb is never used.

Oh by the way, it seems that some extra performance gain can be achieved by using large memory pages with the JVM argument -Xlp. This prevents the WAS server's java process from being kicked out of memory to disk by Windows, especially when there are concurrent processes fighting for memory.

Your answer


Register or to post your answer.