Java TPC-W Implementation Distribution

In an attempt to encourage widespread use of realistic, modern application benchmarks in computer systems research, we are making our implementation of the TPC-W benchmark publicly available. This implementation is based on the TPC-W specification version 1.0.1. It strays from the official benchmark specification in a few minor areas, which are specified in documentation included with the distribution. Credit for this implementation goes to the students of Prof. Lipasti's Fall 1999 ECE 902 course, where most of this work took place.

This implementation is completely written in the Java programming language, making use of the Java Servlet API and the JDBC API for database connectivity. Running this benchmark requires the use of a servlet-capable web server as well as a relational database system. We have tested this implementation with the IBM WebSphere , Apache/JServ, Sun Java Web Server, and Jigsaw Web Servers, as well as the IBM DB2 relational database system.

Amit Manjhi at CMU has adapted this implementation of TPC-W to run with Tomcat and Mysql. Check here for more information.

Christian Plattner has adapted this implementation of TPC-W to run with Postgresql. Check for more information. NOTE: This link to ETHZ no longer works, so I took the liberty of creating a local copy of the document from click here to read it.

Jan Kiefer has created an installer for this software, available from>.

Download a copy of the TPC-W Java source code (~700 KB gzipped tar file).
[No longer up]Browse the TPC-W bookstore website implemented by our Java servlet code (for best results, turn off cookies in your browser).

Architectural Characterization

We are also performing a detailed microarchitectural characterization of this workload. Preliminary results of our ongoing work were presented at the 3rd Workshop On Computer Architecture Evaluation Using Commercial Workloads (CAECW) at the January 2000 HPCA conference in Toulouse, France.

Here are the presentation slides.


Any information presented here is not in any sense based on the official TPC-W benchmark, and is not comparable to an official TPC result. Due to the TPC fair use policy, no-one should construe the results presented or comments made as having anything to do with the official TPC-W benchmark or any other TPC benchmark for that matter.

CAECW Talk Title

Characterizing a Java Implementation of TPC-W


Todd Bezenek, Trey Cain, Ross Dickson, Timothy Heil, Milo Martin, Collin McCurdy, Ravi Rajwar, Eric Weglarz, Craig Zilles, and Mikko Lipasti


Department of Electrical and Computer Engineering and Computer Sciences Department, University of Wisconsin - Madison

Talk Abstract

The Transaction Processing Performance Council (TPC) is in the process of developing a new benchmark, TPC-W, that attempts to model the application behavior of online web merchant sites. TPC-W consists of a web serving component that models online browsing and purchasing, as well as an on-line transaction processing (OLTP) component that models order processing and tracking. We implement this benchmark based on the preliminary specification that TPC has made available for public review. The remote browser emulation, web merchant application logic, and web server of our version of TPC-W are implemented completely in Java, using the Jigsaw Web Server, the servlet interface for dynamic html and forms processing, and relational database connectivity through the standard JDBC (Java Database Connectivity) interface. The OLTP component is implemented using the IBM DB2 relational database management system.

We characterize our implementation of TPC-W by running it under a full-system simulation environment in a single-tier configuration. Work is in progress to bring up our TPC-W implementation under two different instruction sets (PowerPC and SPARC) running under their respective full-system simulators (SimOS-PPC and SimICS). We will discuss the challenges we faced in bringing up a complex, networked, multitier workload implemented in a new language (Java) on a full system simulator. We will also present preliminary data characterizing the instruction stream, branch predictability, cache behavior, and multiprocessor data sharing patterns of this new workload.

Go back to Mikko's home page.
Go to the PHARM group page.

Last Updated: Jun-26-2012 10:41:53 CDT