Oracle Blog

Blog for kevink

Monday Apr 20, 2009

On Monday April 20, Sun announced new application server benchmark results of 2925.18 SPECjAppServer2004 JOPS@Standard for the Sun Fire X2270 and Sun Fire X4170 platforms which can be found at http://www.spec.org/jAppServer2004

These new platforms used open source software components such as the OpenSolaris 2008.11 Operating System, Sun GlassFish V2.1 Application Server, and MySQL 5.1 Database Server to obtain this benchmark result. These software components can be freely downloaded from http://www.sun.com. The Sun Java JDK 1.6.0_14 Performance Release is expected to be available for download June 2009.

This blog describes some details of the configuration.

Benchmark Configuration

The following diagram illustrates the configuration used to achieve this result:

Application Server Configuration Details

The Sun Fire X2270 was configured using Solaris Containers into 4 separate zones to host 4 separate GlassFish application server instances. Solaris Containers is a virtualization technology in Solaris 10 and OpenSolaris which enable consolidation of multiple applications to improve system utilization and system efficiency.

The processes from two zones were bound to a processor set, consisting of 4 cores (1 chip) using the command "psrset -b PSET PID". The processes in the other 2 zones, were left to run on the remaining 4 cores on the second cpu chip and referred to as the default processor set.

The processor ID numbers for the processor set are obtained using the command "psrinfo -vp" and assigned to the processor set using the command "psrset -c [list of processor ids]". Each core in the Xeon X5570 supports 2 threads which are represented in Solaris as separate processor IDs. The list of running processes for each zone were obtained using the command "pgrep -z ZONENAME.

This binding technique of processes to a processor set in this way, enables the system to make efficient use of system resources for better performance. By running an application server process in a processor set consisting of 1 processor chip, the process is able to benefit by accessing memory local to the processor as well as the 8MB cache in the cpu chip.

To handle the network traffic between the driver systems and the 4 application server instances, a 10GbE dual port network card was configured in the Sun Fire X2270, where both ports were connected to the 10Gbit switch as shown in the diagram above. Two 1 Gbit network connections were configured on the X2270 system to handle the network traffic for the database transactions.

Each of the zones was configured with 2 separate virtual or logical network interfaces. Two zones shared one of 2 ports on the physical 10Gbit NIC and the other 2 zones shared the second port on the 10Gbit NIC for one of the virtual network interfaces for the transaction requests from the driver systems. On the database side, two zones shared separate 1 Gbit NICs for the other virtual network interface. The information to implement this network configuration is included in the full disclosure file for this benchmark result.

Each application server instance was configured to use the Sun Hotspot JVM JDK 1.6.0_14 Performance Release soon to be available for download from java.sun.com. Each JVM was run in the FX scheduling class using the command "priocntl -e -c FX [command]" when starting the application server instance. This benchmark result used the 64-bit version of the JVM.

Tuning of the Sun GlassFish Enterprise Server v2.1 included sizing of the application server threads and JDBC connections, GlassFish parameters and JVM options. This information is also included in the benchmark report full disclosure file.

The following system and network tunings were applied:

System Tuning in /etc/system:
set ddi_msix_alloc_limit=8
set pcplusmp:apic_multi_msi_max=8
set pcplusmp:apic_msix_max=8
set pcplusmp:apic_intr_policy=1

Additional details on tuning options can be found at:
http://www.solarisinternals.com/wiki/index.php/Networks
http://docs.sun.com/app/docs/doc/817-0404

Database Server Configuration Details:

The Sun X4170 was configured with MySQL 5.1.30 database server which is a multi-threaded single process and run in the FX scheduling class using the command "priocntl -s -c FX -i pid [process ID of mysqld]".

The database storage consisted of a Sun StorageTek 2540 FC array and was configured to host the database files and transaction logs using the ZFS filesystem.

Configuration and tuning parameters for the MySQL 5.1.30 database were implemented using the file /etc/my.cnf which is included in the benchmark disclosure form.

Two of the 4 onboard network controllers on the X4170 were connected directly to the application server for the database transactions. The Sun X4170 used the same system and network tunings as the application server listed above.

The database system also acted as a DNS server, to enable the workload to be distributed across the four application server instances using round-robin DNS.

Benchmark Description:

SPECjAppServer2004 (Java Application Server) is a multi-tier benchmark for measuring the performance of Java 2 Enterprise Edition (J2EE) technology-based application servers. SPECjAppServer2004 is an end-to-end application which exercises all major J2EE technologies implemented by compliant application servers as follows:

Moreover, SPECjAppServer2004 also heavily exercises all parts of the underlying infrastructure that make up the application environment, including hardware, JVM software, database software, JDBC drivers, and the system network. The primary metric of the SPECjAppServer2004 benchmark is jAppServer Operations Per Second (JOPS) which is calculated by adding the metrics of the Dealership Management Application in the Dealer Domain and the Manufacturing Application in the Manufacturing Domain. There is NO price/performance metric in this benchmark.