|
||||||||||
| PREV PACKAGE NEXT PACKAGE | FRAMES NO FRAMES | |||||||||
See:
Description
| Interface Summary | |
| Harness | Definition of the testing harness. |
| TestCollection | Definition of a collection of regression tests. |
| Class Summary | |
| EmptyEvent | An empty event is an event with no data. |
| Exercise | Implementation of the exercise program. |
| Minimum | Implementation of a minimal main application component. |
This package provides a framework for regression testing and benchmarking. It defines the testing harness and the interface for collections of related tests.
Classes that implement a collection of regression tests should be
defined within the package for which they provide the regression
tests. Such a class should be named "Test<Name>",
where <Name> is the name of the abstraction or
concept being tested.
There are three sets of benchmarks designed to evaluate tuple store
performance. These tests are BenchmarkTupleStore, BenchmarkBDB, and BenchmarkTSpaces.
BenchmarkTupleStore is a microbenchmark of TupleStore performance.
BenchmarkBDB is a microbenchmark of raw Berkeley DB performance, designed to
show the latency penalty imposed by one.world over raw Berkeley DB.
BenchmarkTSpaces is a benchmark of IBM TSpaces performance meant as a point of
comparison to Berkeley DB.
The data used in each test are PIM contact tuples modeled after the digime datatype (this exact datatype was not used to allow a closer comparison with TSpaces, which does not support nested tuples). An unlimited number of random tuples (with a fixed number of distinct first names) can be created.
Their are four basic tests (only 3 of which are supported in BDB):
In addition, the TupleStore and TSpaces benchmarks allow throughput to be measured by allowing differing amounts of concurrency. In BenchmarkTupleStore, this means that a user specified number of operations can be concurrently outstanding. In BenchmarkTSpaces, this means a user specified number of threads are run concurrently.
Specific information on running each benchmark is listed with each class
If the concurrency is 1, the latency per operation is calculated. This is simply the average elapsed time per test divided by the number of operations per test.
The throughput in operations/second is always returned. This is simply the number of operations per test divided by the average test time. For concurrency of 1, this is simply the inverse of the latency. The reported standard deviation is the standard deviation of operations/second between tests.
For named queries, the average number of matches per query is also returned.
These benchmarks are provided as a comparison to one.world
DatagramIO and NetworkIO
performance (benchmarks for these components are implemented by BenchmarkDatagramIO and BenchmarkNetworkIO). The Java tests in this package are
implemented in BenchmarkUdp and BenchmarkTcp, respectively.
Tests are performed a specified number of times and the average
result is printed. These tests can be performed by sending either Tuples or raw bytes, so that the overhead of using an
object (Tuple) wire format may be determined.
Specific information on running each benchmark is listed with each class
Benchmarks are provided for the comparison of remote event passing
(REP) to Java RMI. These benchmarks test latency and throughput. The
number of tests to run and the number of remote events or remote method
invocations in each test can be chosen by the user.
See BenchmarkRmi and
BenchmarkREP for more information on running these
benchmarks.
Two machines are required to run the REP benchmarks. Designate one the client and one the server.
To run the REP latency benchmark, from the one.world shell on the server, type
mk echo one.world.rep.BenchmarkREP echo
run echo
On the client, type
mk el one.world.rep.BenchmarkREP el servername echo
run el
The reported result on the client machine will be the average over 100
tests of the time required to send and receive 1000 remote events.
To run the REP throughput benchmark, from the one.world shell on the server, type
mk etr one.world.rep.BenchmarkREP etr
run etr
On the client, type
mk ets one.world.rep.BenchmarkREP ets servername etr
run ets
The reported result on the server machine will be the average over 100
tests of the time required to receive 1000 remote events from the
client.
To run the Java RMI benchmarks, the RMI registry must be running. To start the RMI registry under Linux, run
rmiregistry &
To run the RMI registry under Windows, run
start rmiregistry
To run the RMI call latency benchmark, go to the
${JAVA_DEV_ROOT}/src/one/fonda/java directory on the server
and type
java -Djava.security.policy=rmi.policy one.fonda.java.BenchmarkRmi cls cls
From the client, type
java one.fonda.java.BenchmarkRmi clc servername cls
The reported result on the client machine will be the average over 100
tests of the time required to make 1000 remote method invocations.
To run the RMI call throughput benchmark, go to the
${JAVA_DEV_ROOT}/src/one/fonda/java directory on the server
and type
java -Djava.security.policy=rmi.policy one.fonda.java.BenchmarkRmi cts cts
From the client, type
java one.fonda.java.BenchmarkRmi ctc servername cts
numthreads
The reported result on the server machine will be the average over 100
tests of the time required to receive 1000 remote method invocations
from the client. numthreads is the number of threads used by the
client to perform remote method invocations. If numthreads is 1,
the result reported will be nearly the latency. To determine throughput,
numthreads should be increased until it no longer reduces the time
reported.
To run the RMI event latency benchmark, go to the
${JAVA_DEV_ROOT}/src/one/fonda/java directory on the server
and type
java -Djava.security.policy=rmi.policy one.fonda.java.BenchmarkRmi els els
From the client, type
java one.fonda.java.BenchmarkRmi elc servername els
The reported result on the client machine will be the average over 100
tests of the time required to make 1000 remote method invocations.
To run the RMI event throughput benchmark, go to the
${JAVA_DEV_ROOT}/src/one/fonda/java directory on the server
and type
java -Djava.security.policy=rmi.policy one.fonda.java.BenchmarkRmi ets ets
From the client, type
java one.fonda.java.BenchmarkRmi etc servername ets
numthreads
The reported result on the server machine will be the average over 100
tests of the time required to receive 1000 remote method invocations
from the client. numthreads is the number of threads used by the
client to perform remote method invocations. If numthreads is 1,
the result reported will be nearly the latency. To determine throughput,
numthreads should be increased until it no longer reduces the time
reported.
|
||||||||||
| PREV PACKAGE NEXT PACKAGE | FRAMES NO FRAMES | |||||||||