A Fine-grain Time-sharing Time Warp System

Alessandro Pellegrini and Francesco Quaglia

Published in: ACM Transactions on Modeling and Computer Simulation, 2017
pdf Download PDF

Several techniques have been proposed to improve the performance of Parallel Discrete Event Simulation platforms relying on the Time Warp (optimistic) synchronization protocol. Among them we can mention optimized approaches for state restore, as well as techniques for load balancing or (dynamically) controlling the speculation degree, the latter being specifically targeted at reducing the incidence of causality errors leading to waste of computation. However, in state-of-the-art Time Warp systems, events’ processing is not preemptable, which may prevent the possibility to promptly react to the injection of higher priority (say, lower timestamp) events. Delaying the processing of these events may, in turn, give rise to higher incidence of incorrect speculation. In this article, we present the design and realization of a fine-grain time-sharing Time Warp system, to be run on multi-core Linux machines, which makes systematic use of event preemption in order to dynamically reassign the CPU to higher priority events/tasks. Our proposal is based on a truly dual mode execution, application versus platform, which includes a timer-interrupt-based support for bringing control back to platform mode for possible CPU reassignment according to very fine grain periods. The latter facility is offered by an ad-hoc timer-interrupt management module for Linux, which we release, together with the overall time-sharing support, within the open source ROOT-Sim platform. An experimental assessment based on the classical PHOLD benchmark and two real-world models is presented, which shows how our proposal effectively leads to the reduction of the incidence of causality errors, especially when running with higher degrees of parallelism.

BibTeX Entry:

author = {Pellegrini, Alessandro and Quaglia, Francesco},
title = {A Fine-grain Time-sharing Time Warp System},
journal = {ACM Transactions on Modeling and Computer Simulation},
year = {2017},
issn = {0885-7458},
month = may,
number = {2},
volume = {27},
doi = {10.1145/3013528},
publisher = {ACM Press},
series = {TOMACS}