vFabric Elastic Memory for Java (EM4J) 1.3 Release Notes

vFabric EM4J 1.3 | Released 24 APRIL 2013

What's in the Release Notes

These release notes cover the following topics:

What's New in vFabric EM4J 1.3

vFabric EM4J 1.3 includes the following changes and new features:

Transparent Heap Sharing

Transparent Heap Sharing (THS) is an EM4J agent feature that proactively cleans and shares Java heap memory when a JVM becomes idle. It allows the hypervisor to move memory to VMs that need additional memory. THS works by slowly inflating a balloon in the heap of an idle JVM, zeroing the memory, and signaling the hypervisor that the memory is available for sharing. THS is as unobtrusive as possible, running only when the JVM is inactive and the heap has recoverable memory. If the application resumes, THS immediately stops, leaving few or no balloon objects behind.

By default, the THS process begins automatically when the EM4J agent detects that the JVM is idle and the heap is in a suitable state to recover memory. This scheduling behavior can be changed using command-line options or, with JMX, the new TransparentHeapSharing MBean. The scheduling mode can be changed from AUTO, the default, to MANUAL, which prevents THS from running unless it is started with JMX, or SCHEDULED, which causes THS to run at a specified time each day.

New Standalone EM4J Distribution

A standalone distribution of the EM4J agent and Console Guest Collector can be downloaded from the VMware download site in ZIP or compressed TAR formats. You can use this installation package to install the CGC or use the EM4J agent with Java workloads other than vFabric tc Server.

Console Guest Collector JMX Enhancements

The Console Guest Collector (CGC) can use the Java Attach API to access JMX in a JVM running on the local host. If the CGC is running as root, it is no longer necessary to add JMX properties to the Java command line to allow the CGC access. If the CGC is running as an unprivileged user, the JMX properties can be specified, or the user can be granted sudo privileges. The CGC helps to configure sudo by logging a message with a sudoers entry needed to grant the required privileges.

EM4J Console UI Improvements

The EM4J plug-in displays data collected by the CGC in the vSphere Web Client 5.1. CGC-monitored JVMs are represented as workload objects in the vSphere Web Client. In this release, workloads are first-class objects integrated into the Web Client Object Navigator. Workloads are accessible as childen of virtual machines, as are networks and datastores.

The Virtual Machine Memory Usage graph, which displays historical workload memory statistics collected by the CGC, is accessed from a VM's Monitor > Performance tab.

The Notes section on the Summary tab for a workload displays the name of the application the JVM is executing if the main class name is recognized. The Console UI recognizes main class names for vFabric Suite components and several other common Java applications. The field is blank if the application cannot be determined.

Updated EM4J Apache Tomcat Integration Kit

The EM4J Apache Tomcat Integration Kit contains files and scripts that add the EM4J agent to an Apache Tomcat installation. The kit has been updated to depend on the standalone EM4J package instead of the elastic-memory template in the vFabric tc Server package. It can be downloaded from the vFabric Suite download Web site, on the Drivers & Tools tab.

Known Issues

The following issues have been identified in this release of vFabric EM4J.

Issue Description Versions
JEM-414 Unable to check Workload details in the vSphere Web Client if the tc Server instance directory path contains non-ASCII characters. 1.1, 1.2, 1.3
JEM-573 There is an error on the VM's Summary tab in the vSphere Web Client when the EM4J standalone release is installed to a path containing non-ASCII characters. 1.3
JEM-484 When migrating a VM with an EM4J-enabled workload from ESXi 5.x to ESXi 4.1, the EM4J agent sends a warning message to the Console UI noting that "EM4J is now on an unsupported version of ESX and is therefore no longer functioning." When a VM migrates from ESXi 4.1 to ESXi 5.x, the EM4J agent sends an informational message, "EM4J is now running on a supported version of ESX." The appearance of both messages simultaneously can be confusing. The message-handling system does not recognize the relationship between the messages, so the second does not clear the first. The workaround is to view the EM4J Agent Enabled field in the Status section of the workload's Summary tab. 1.2, 1.3

Resolved Issues

The following issues have been resolved in this release of vFabric EM4J.

Issue Description Found In Fixed in
JEM-211 In the Console UI, the selected Workload was not preserved on refresh. 1.0 1.3
JEM-343 Cannot see CGC and Plug-in version information in the Console UI unless the selected VM has at least one Java process running. 1.1 1.3
JEM-393 After 3 VMs migrated from ESXi 5.0 to 5.0, two tc Servers with EM4J die with java.lang.AssertionError:getNonBalloonBytesFreedByLastFullGc is negative! 1.1 1.3
JEM-492 When parameters such as minimum and maximum heap size were not specified on the Java command line, the Console UI displayed "Unavailable," even when JMX was enabled and able to look up the data. This is fixed so that data available through JMX is displayed in the Console UI. 1.1, 1.2 1.3
JEM-498 On Apache Tomcat 7.0.23, a log message about cookies is displayed on the EM4J console, making it appear that it came from the EM4J Agent. 1.2 1.3
JEM-503 The CGC could not locate the GuestLib library on 64-bit SUSE because it expected to find an architecture-specific library that does not exist. The CGC now looks in /usr/vmware-tools/lib if the architecture-specific lib directory does not exist. 1.1, 1.2 1.3
JEM-516 The Console UI determined that JMX was enabled if the CGC could access EM4J MBeans, but that condition could result if JMX is enabled but the EM4J agent is not. Now the console determines that JMX is enabled if the CGC data contains HeapInfo and GarbageCollectorInfo data. 1.2 1.3
JEM-540 When writing errors to the log and retrieving symbols fails, output the actual error detail. 1.1, 1.2 1.3