System News
"Application Modeling and Performance Tuning from a GC Perspective"
by Alka Gupta and Michael Doyle
February 25, 2002,
Volume 48, Issue 4

In their Developer's Notebook paper "Application Modeling and Performance Tuning from a GC Perspective, Using a SIP Network Server," Alka Gupta and Michael Doyle focus on solutions for the "big pauses, low throughput" problem in the soft-switch vertical market. The authors also explain how they used the information from the garbage collection (GC) logs for analysis of application and virtual machine (VM) behavior to boost application throughput and reduce GC sequential overhead. The goals of their project were to better understand GC, derive a model to tune an application, GC and JavaTM virtual machine (JVMTM) software environment, and investigate use of various options and switches available in the JVM software so that the GC pauses would not exceed 200 ms and the GC sequential overhead would not exceed 20 percent. The research was done by the authors jointly with Sun and Ubiquity Software.

The JavaTM 2 Platform, Standard Edition (J2SETM) is being used for applications that demand scalability and directly benefit from large quantities of threads, processors and memory. They must respond in near realtime. Otherwise if a message is retransmitted, congestion can occur and reduce the quality of the application's performance.

JavaTM technology enables the automatic garbage collection of objects. The GC suspends all application threads when it runs and causes a sequential overhead on the application and results in inconsistent application pauses and high latency. Generational GC techniques split the heap for the JVM software into generations depending on the object's age. The authors discuss two generations, young and old. The old generation is typically much larger than the young generation.

Applications in the soft-switch vertical market generate a lot of garbage. This causes both of these collectors to pause the application for many seconds, sometimes minutes. The authors used three fundamental parameters for tuning the JVM software and GC generations for a soft-switch type of application:

  • Total garbage or data generated for processing a call/transaction
  • Duration for which the garbage or data is "alive"
  • Application load, or number of calls per second or transactions per second

The authors discuss the production VM for the SolarisTM Operating Environment (Solaris OE) and refer to it as the Exact VM (EVM). The EVM model has two "semispaces" in the young generation: FromSpace and ToSpace. The allocation of data is discussed and the configuration of the EVM.

Also covered is the Java HotSpotTM virtual machine (VM) which consists of an Eden, where all objects are born, and two "survivor spaces" that are typically smaller than Eden. They discuss where the allocation of data objects begins and how to configure the Java HotSpot VM.

The authors present an analysis of solutions using the Ubiquity SIP network server. Results are presented using various profiling options, heap size numbers and VM switches.

A Sun EnterpriseTM 450 Server with four 400 MHz CPUs and 4 GB memory was used to run the Helmsman SIP Network Server for this study. The maximum GC pause time during the run was almost four seconds. The GC sequential overhead was almost 45 percent; this included GC pauses for the young and old generations. The successful throughput was only 25 percent of the target load.

The server, when run on JavaTM Development Kit (JDKTM) 1.2.2_08 release using the concurrent collector with the most optimal sizes of young and old generations, demonstrated significant improvement over the mark-compact collector; however, enormous performance degradation was observed after the one-hour period. To address this problem, JDKTM 1.2.2_10 release VM offers a new -Xgenconfig suboption, bestFitFirst (a modifier for the concurrent collector in JDK 1.2.2_08 release), and a new -X option, -Xconcrefine, which prevents fragmentation and enables concurrent refinement of the card-marking array for the old generation.

The use of the bestFitFirst and promoteAll switches on JDK 1.2.2_10 release gave a huge boost to performance in terms of GC sequential and total overhead, GC pauses and application throughout.

Additonal technical details are available online, as well as illustrations and a table that summarizes the results averaged for a six-hour run.

Read More ... [ more...]



Other articles in the Developer section of Volume 48, Issue 4:
  • Access1 Web Site
  • "Application Modeling and Performance Tuning from a GC Perspective" (this article)

See all archived articles in the Developer section.

Trending in
Vol 235, Issue 2
Trending IT Articles