Sunday, March 5, 14:15-15:15
at 14:00
Schreiber Building, Room 309
cJVM is a cluster Java Virtual Machine (JVM) which provides a Single
System Image of a traditional JVM while executing in a distributed
fashion on the nodes of a cluster. cJVM virtualizes the cluster,
transparently distributing the objects and threads of any pure Java
application. The aim of cJVM is to obtain improved scalability
for
Java Server Applications (e.g., Java Web server) by distributing
the
application's work among the cluster's computing resources. We
have demonstrated cJVM on a large, real Java application where
we
have obtained 80% efficiency on a four node cluster.
This talk presents cJVM, focusing on the systems architecture and
optimization techniques.
It is the architecture -- cJVM's unique object, thread and memory models
--
which enables cJVM to virtualize a cluster, extending Java's
"Write Once, Run Anywhere" promise to a cluster.
To obtain performance, we use optimizations which are based on
three principles. First we employ a large number of mostly simple
optimizations which address caching, locality of execution and object
migration. Second, we take advantage of the Java semantics and of
common usage patterns in implementing the optimizations. Third, we
use speculative optimizations, taking advantage of the fact that the
cJVM run time environment can correct false speculations.
This is joint work with Michael Factor, Avi Teperman, Tamar Eilam and
Assaf Schuster.
For colloquium schedule, see http://www.math.tau.ac.il/~zwick/colloq.html