test, arm: Add scripts to test checkpoints
Review Request #2684 - Created March 6, 2015 and submitted
| Information | |
|---|---|
| Andreas Hansson | |
| gem5 | |
| default | |
| Reviewers | |
| Default | |
Changeset 10735:7f058afecefe --------------------------- test, arm: Add scripts to test checkpoints Add a set of scripts to automatically test checkpointing in the regression framework. The checkpointing tests are similar to the switcheroo tests, but instead of switching between CPUs, they checkpoint the system and restore from the checkpoint again. This is done at regular intervals, typically while booting Linux. The implementation is fairly straight forward, with the exception that we have to work around gem5's inability to restore from a checkpoint after a system has been instantiated. We work around this by forking off child processes that does the actual simulation and never instantiate a system in the parent process unless a maximum checkpoint count is reached (in which case we just simulate the system to completion in the parent). Checkpoint testing is currently only enabled 32- and 64-bit ARM systems using atomic CPUs. Note: An unfortunate side-effect of forking is that every new process will overwrite the stats and terminal output from the previous process. This means that the output directory only contains data from the last checkpoint.
Glad to have a test for checkpoints. The fork idea is clever.
I think the output issue could be fixed, e.g., by calling stats.initText() with a new filename, or perhaps call core.setOutputDir() first and then just call stats.initText() to open a new stats.txt in a different dir. That will take a little work though, since as it stands initText() is a no-op if the file is already open---we'd have to change that behavior or create a new function like reInitText(). Clearly that can all wait for a later changeset though.
