C3D
A distributed raytracer for benchmarking Java RMI & Serialization |
|
C3D is a Java benchmark application that measures the performance of a
3D raytracer renderer distributed over several Java virtual machines using
Java RMI. This benchmark gives indication of the performance of the serialization
process and Java RMI itself. The benchmark is an automated version of C3D,
which is both a collaborative application and a distributed raytracer:
users can interact through messaging and voting facilities in order to
choose a scene that is renderer using a set of distributed rendering engines
working in parallel. Near-linear speedup is achieved with up to half a
dozen rendering engines running in parallel and communicating using Java
RMI.
A similar application was also developped with
the ProActive PDC Java Library
(formerly Java//, Java Parallel )
a Java library to ease the programming of
distributed, concurrent and parallel applications.
We did perform some basic benchmarking tests in
order to evaluate the basic communication cost of RMI.
These tests are very simple: we measure the time elapsed after
100 calls to a method of a 'remote' object and divide it by 100 to get
the average time.
Same VM Same Host |
| | RMI |
| void | 2.0 |
| int | 3.24 |
| Object | 3.86 |
|
Another VM Same Host |
| | RMI |
| void | 1.3 |
| int | 1.95 |
| Object | 4.31 |
|
Another VM Another Host |
| | RMI |
| void | 11.07 |
| int | 49.82 |
| Object | 49.82 |
|
| Execution time measured in milliseconds. |
The benchmarks were run on the following platforms:
Ultra Sparc 5, Sun Enterprise 450, Pentium Pro 200, on both homogeneous
and heterogeneous clusters, and on both Ethernet 10 and 100 Mbits/s.
Here are the results for a platform of Ultra Sparc 5.
Each workstation had the following characteristics:
- Processor : Ultra Sparc 5
- Memory : 64 Mb RAM, 128 Mb swap
- OS : SunOs 5.6
- Java environment : JDK 1.2 beta 2
The following figures can be found:
These tests have been executed on complex scenes
[8 balls, 5 lights], in order to increase CPU time instead of communication time.
The Overall execution time curve and the speedup curve
show C3D RMI 's good performances and scalability over the network.
Speedup formula: Speedup = Sequential time / Parallel time
Figure 1 - Overall execution time in ms.
Figure 2 - Speedup curve
| # of engines | RMI |
| 1 | 31839 |
| 2 | 15789 | |
| 3 | 11342 |
| 4 | 8698 |
| 5 | 7248 |
| 6 | 6832 |
Execution time measured in milliseconds
First, although not measured, it is important to notice that all the
collaborative aspects and synchronizations appeared to be instantaneous
for users. That demonstrates the capability, based on RMI, to develop
interactive applications over the Internet.
Also, we can observe good speedup up to 5 or 6 machines, which is already
quite interesting and useful. The results were quite consistent on all
tested platforms. This brings and explain the problems encountered when
trying to use more machines.
On all platforms, when the number of machines reaches around 10, the
speedup get very poor, and at some point below 1. Moreover, this fade
of speed up occurs at the
same point whatever the network is (10 or 100 Mbits/s). This exhibits
on a real-size application that the RMI implementation, and mainly the
serialization, is the main
bottleneck here, rather than the transport and network itself.
Improvements of this aspect, as discussed and presented in the sections
above should make it possible to easily use quite a large number of
workstations on a standard network to build parallel applications with
good speed up.
A Here are some information about the size of the program and the amount of work the programmer has to produce in order to code this rmi application.
| RMI |
| # of lines | 3177 |
| # of source files | 22 |
| # of class files | 25 |
| Total classes size [Kb] | 96 |
C3D was mainly developed by Wilfried
Klauser and Florian Doyon at INRIA
Sophia-Antipolis under the supervision of Denis
Caromel. Additional coding and final packaging were provided by David
Sagnol and Julien
Vayssière. Thanks to Bartosz Milewski and ReliSoft for the permission
to use and modify the source code of their Java raytracer.
This experiment was partly sponsored by
and is part of the
Java Grande Forum
www.javagrande.org
Feedback
We appreciate your feedback on any aspect of this benchmark application:
relevance, implementation, ease of installation, results, etc. You can send
your feedback to Denis Caromel, Julien
Vayssière
Since February, 16th, 1999, you are our
th visitor.
Thanks for visiting!
This page is maintained by Denis Caromel.