Use the naked-check-create script in the GEMS 2.0 release to create a system checkpoint running Solaris. You can then get a multiprogrammed checkpoint by starting background jobs in the Simics guest prompt (i.e. "./run_program & "). See the .simics files in the microbenchmarks/transactional/ directory for examples of how to manipulate the naked checkpoint to automatically insert commands in the guest prompt. You will also want to to insert a magic breakpoint into your workloads that will start ruby at the appropriate time, as doing so before the programs start would take a prohibitively long time. Ideally you will only want the program you start last to call the magic breakpoint. Again, see the code samples in microbenchmarks/transactional to see how this is done.
You can use the Solaris function processor_bind to place threads on a specific processor. (though beware that this is really only a hint to the kernel and does not guarantee a binding)
-Derek
|