JiST / SWANS
Java in Simulation Time / Scalable Wireless Ad hoc Network Simulator
Introduction to JiST
JiST is a high-performance discrete event simulation engine that runs over
a standard Java virtual machine. It is a prototype of a new general-purpose
approach to building discrete event simulators, called virtual
machine-based simulation, that unifies the traditional systems and
language-based simulator designs. The resulting simulation platform is
surprisingly efficient. It out-performs existing highly optimized simulation
runtimes both in time and memory consumption. For example, JiST has twice
the raw event throughput of the highly optimized, C-based Parsec engine, and supports
process-oriented simulation using a fraction of the memory.
The JiST approach is also inherently flexible, capable of transparently
performing important cross-cutting program transformations and optimizations.
This transparency is a key benefit: simulation code that runs on JiST need not
be written in a domain-specific language invented specifically for writing
simulations, nor need it be littered with special-purpose system calls and
call-backs to support runtime simulation functionality. Instead, JiST converts
an existing virtual machine into a simulation platform, by embedding
simulation time semantics at the byte-code level. Thus, JiST simulations are
written in Java, compiled using a regular Java compiler, and run over a
standard, unmodified virtual machine.
The following tables list some JiST time and space micro-benchmark
results. For a detailed explanation and for further information, please refer
to the JiST user guide and other online documentation.
Event throughput
Memory footprint
5 million events
time (sec)
vs. baseline
vs. JiST
baseline
0.738
1.00x
0.76x
JiST
0.970
1.31x
1.00x
Parsec
1.907
2.59x
1.97x
ns2-C
3.260
4.42x
3.36x
GloMoSim
9.539
12.93x
9.84x
ns2-Tcl
76.558
103.81x
78.97x
memory
per entity
per event
10K node sim.
JiST
36B
36B
21MB
GloMoSim
36B
64B
35MB
ns2
544B
40B *
74MB
Parsec
28536B
64B
2885MB
Introduction to SWANS
SWANS is a scalable wireless network simulator built atop the JiST
platform. It was created primarily because existing network simulation tools
are not sufficient for current research needs, and its performance serves as a
validation of the virtual machine-based approach to simulator construction.
SWANS is organized as independent software components that can be composed to
form complete wireless network or sensor network configurations. Its
capabilities are similar to ns2 and
GloMoSim, but is able
to simulate much larger networks. SWANS leverages the JiST design to acheive
high simulation throughput, save memory, and run standard Java network
applications over simulated networks. In addition, SWANS implements a data
structure, called hierarchical binning, for efficient computation of
signal propagation.
The following table lists some SWANS time and space macro-benchmark
results running simulations of a beaconing node discovery protocol. SWANS can
simulate networks that are one or two order of magnitude larger than what is
possible with GloMoSim and ns2, respectively, using the same amount of time
and memory, and at the same level of detail. SWANS simulates a million node
network on a 2.0 GHz uni-processor with 2 GB of RAM. For further
information and explanations, please refer to the SWANS user guide and other online documentation.
SWANS performance
nodes
simulator
time
memory
500
SWANS (hier)
43 s
1,101 KB
GloMoSim
82 s
5,759 KB
ns2
7136 s
5,8761 KB
5,000
SWANS (hier)
430 s
5,284 KB
GloMoSim
6191 s
27,570 KB
50,000
SWANS (hier)
4377 s
49,262 KB
1,000,000
SWANS (hier)
--
933 MB
News
March 2005 - JiST/SWANS v1.0.6 released: refer to CHANGES in distribution.
February 2005 - JiST/SWANS v1.0.5 released: refer to CHANGES in distribution.
November 2004 - JiST/SWANS v1.0.2 released: small fixes and improvements.
September 2004 - JiST/SWANS v1.0.1 released, more documents online.