Tuesday, October 31, 2006

Massive Parallel Test Kit

I have implemented a Massive Parallel Test Kit (MPT) whose major goal is to measure the throughput of a server. While in my case, MPT is used to measure the throughput of our web service registry, GRIMOIRES.

MPT has the following features:
  • MPT is an MPI program. So it is able to create a large number of real parallel clients on a computer cluster to generate a large number of requests simultaneously. That is why it is claimed to be "massive parallel". By the way, it is really convenient to program a cluster using MPI.
  • Each MPI process invokes a Java program, ThroughputTest. ThroughputTest provides basic functionalities required to run a throughput test. Above all, it supports user provided plug-in, called Worker, which implements the actual test business logic.
  • In fact, Worker extends Thread. Thus two forms of parallelism are leveraged in MPT: multi-processing at the MPI level, and multi-threading in at the Java level.
  • MPT has a single control point. The degree of multi-processing, the degree of multi-threading, and the test time are all set as the parameters for the MPI program. The latter two are then passed as environment variables to ThrouputTest.
  • The fairness of the service can be revealed by calculating the deviation of the throughputs measured by individual MPI processes.
I believe MPT is a useful tool to conduct a stress test for web services. A cluster is useful for a building and testing environment for web services. After more tests of MPT, I will release it at the GRIMOIRES project website.

No comments: