There are a number of parameters in Simics which can be tweaked which might
lead to increased performance.
- Multicore Accelerator can be enabled.
- The instruction per cycle (IPC) parameter can be decreased, see command
<cpu>.set-step-rate. Similar to reducing the CPU frequency,
this will cause virtual time to progress more rapidly with the same amount of
instructions executed.
- Devices sometimes have a timing model that can be changed by
attributes.
- When real-time performance is required, the real-time module
provides some means to achieve this. See
command enable-real-time-mode.
- For distributed simulation, multithreading, and Multicore
Accelerator, you might want to tweak the default latency or allowed
virtual time window. Increasing the latency/time window will diminish
the cost of synchronizing the simulation. More information is
available in chapter 16.
- In a similar way, you may want to check the time quantum used to schedule
the simulated processors within a Simics process or a simulation
cell. Processors unrelated to each other (they do not share memory, for
example) do not need to be simulated with a small time quantum.
- The frequencies of the processors can be lowered
(cpu_freq_mhz). This will cause virtual time to progress more
rapidly with the same amount of instructions executed.
- If page/swap activities can be monitored on the host running Simics you
might want to decrease the memory-limit. See the
set-image-memory-limit
command. See chapter 7.2.3.
- For large configuration using many cells and/or processors, Simics
will create as many execution threads as there are available host
processors and schedule the execution on these. However, sometimes it
is not beneficial to use the SMT threads on the host but instead
reduce the amount of created threads, using only 1 SMT thread per
core. In that case, use the set-thread-limit command to
limit the thread count to the available number of host cores.
- The sim->max_worker_threads attribute controls the
number of threads that can be used for JIT compilation. The default
number of JIT threads is automatically set conservatively low, to
avoid interfering with the execution threads. This attribute can be
adjusted at any time. To disable parallel JIT compilation, the
sim->use_jit_threads attribute can be set to
false
.
Then the execution threads themselves run the compilation.