\section{Experimental Results}
\label{sec-results}

In this section, we present performance numbers for our initial prototype
implementation.  We conducted our experiments in a heterogeneous environment:
Pentium PCs, Sparc-5s, Sparc-10s, and single and dual processor UltraSparcs connected by
10 and 100 Mbit Ethernet.  Although all machines run under Solaris,
heterogeneity was introduced by using Java VMs with and without JIT.
Furthermore, all experiments were conducted under these machines' typical workloads.


\input{microbenchmarks}

\input{raytracing}

\subsection{The Mersenne Prime Application}

As our second application for our Javelin infrastructure we implemented
a parallel primality test which is used to search for Mersenne prime numbers.
As we shall see, this type of application is well suited to  
Javelin, since it is very coarse-grained with  a high computation-to-%
communication ratio when testing large Mersenne primes.

A Mersenne prime is a prime number of the form $2^p - 1$, where the
exponent $p$ itself is prime. These are traditionally the largest known primes.
The advent of the computer provided a
powerful tool to search and verify Mersenne primes.  Beginning in the
1952, with the discovery of the 13th Mersenne prime by Raphael M.
Robinson~\cite{rmr54}, all subsequent Mersenne primes have been found
by computer.  To date only 35 Mersenne primes have been discovered.
The current record holder is $2^{1398269} -1$ and was discovered in November 1996 by
a coordinated effort of over 700 PCs and workstations worldwide.
With larger and larger prime exponents, the search for Mersenne primes
becomes progressively more difficult\footnote{For more information on Mersenne primes see
{\tt http://www.utm.edu/research/primes/mersenne.shtml}}.

In our current implementation, we developed a Java application to test
for Mersenne primality, given a range of prime numbers.  Our application
works as follows:
\begin{enumerate}
\item First, the client submits an applet to the broker containing the
  Mersenne primality test.
  
\item The client then waits for hosts to participate in the Mersenne
  prime test.  It maintains a FIFO of primes to be checked, dealing
  them out one at a time among the hosts that join in the computation.
  
\item When a user registers with a broker, the host daemon downloads
  the Mersenne Applet to the host site and executes the applet.  The
  applet then contacts the client with the broker serving as a router
  to obtain a prime exponent $p$. The applet then checks if the
  resulting Mersenne $2^p - 1$ is prime.
  
\item After the host applet has completed its computation, it reports
  the result back to the client.  The client marks whether the prime
  exponent $p$ the host has tested corresponds to a Mersenne prime.
  The host then asks for the next prime to test, and the client
  dispenses subsequent primes until the queue is empty.
\end{enumerate}

\input{measurements}


