Skip to Main Content
We describe the design, implementation and performance optimizations of SPaDES/Java, a process-oriented discrete-event simulation library in Java that supports sequential and parallel simulation. Parallel event synchronization is facilitated through a hybrid carrier-, demand-driven flushing conservative message mechanism. Inter-processor message communication is coordinated by a shared persistent memory implemented using Java Jini/JavaSpaces. We present the stepwise performance optimizations we have carried out, focusing mainly on reducing the cost of multithreading, message synchronization overhead, and the cost of inter-processor communication. Two benchmark programs consisting of an open linear pipeline system and PHOLD representing a closed system are used. For PHOLD(16×6, 16), our optimization reduces the message ratio from 0.94 to 0.29 on eight processors. Based on our time and space instrumentation, we observed that the memory cost of message synchronization accounts for less than 10% of the total memory required by the PHOLD simulation.