With full system simulation an entire physical machine can be simulated on top of a host operating system (OS). Simulation thus provides a powerful foundation to study the runtime behavior and interaction of computer architecture, operating systems and applications. However, current solutions for full system simulation suffer from high slowdowns and do not encompass support for detailed tracing of operations carried out in the simulated machine (e.g., memory accesses). That limits the applicability of simulation-based performance analysis and debugging as well as complicates extracting desired information.

In the Simutrace project, we aim at establishing technologies to overcome current limitations. To that end, we are researching new ways to accelerate full system simulation and to ease the analysis of workloads through tracing.




Tracing Framework

The tracing components build the core of the project and have been conceived with full length, no-loss tracing in mind. Simutrace uses a client-server architecture, where an extension in a full system simulator collects events (e.g., memory accesses) and a storage server receives the data, performs trace compression and storage as well as provides easy access to the data for later analysis and inspection. Simutrace places no restriction on the type and number of captured events and employs a scalable storage format, which easily handles traces of hundreds of gigabytes in size.


A well-known limitation of full system simulation is the low execution speed offered by current simulators. Compared to hardware-assisted virtualization, functional simulation is orders of magnitude slower, restricting analyses based on simulation to short-running workloads. Moreover, due to the high slowdown, simulated machines loose the possibility to interact with non-simulated remote hosts. That further limits the types of workloads that can be examined with full system simulation. SimuBoost strives to close the performance gap between virtualization and functional simulation through the use of scalable parallelization, thereby extending the applicability of our tracing framework.