2.8. FAQ / Troubleshooting#

Which packages do I need to install to write and submit virtual prototypes?

For writing scripts and submitting them to the SimBricks Cloud you need simbricks-orchestration, simbricks-client and simbricks-cli, plus the Python packages of the components your script imports (e.g. simbricks-qemu-sim-py, simbricks-i40e-sys-py). All of these are pure Python and installable via pip or conda. The simulator binaries are only needed where the simulation actually executes — on the Runners, or on your machine for local execution (see Installing SimBricks Packages (Conda Channel)).

My script fails with AttributeError: module 'simbricks.orchestration.simulation' has no attribute 'QemuSim' (or similar).

Concrete simulator and device classes no longer live in simbricks-orchestration. They come from the component packages under simbricks.components.*, e.g. from simbricks.components.qemu import simulation as qemu_sim for QemuSim. Install the respective simbricks-<x>-...-py package and update your imports (see Component Packages: simbricks.components.*).

Local execution fails because a simulator executable (e.g. simb_net_switch ) is not found.

The orchestration framework resolves simulator executables through $PATH. Install the component’s binary conda package (e.g. simbricks-net-base-sim-bin) from the SimBricks conda channel into the active environment, or run inside the simbricks/simbricks-executor container (see Advanced Setup & Building).

Local execution fails with RuntimeError: Global input directory is not set or cannot find a disk image.

DistroDiskImage resolves images inside the global input directory. Pass --global-input-dir <dir> to simbricks-run, where <dir> contains images/<name>/<name> as produced by the image-builder tool (see Disk Images and Data Flow).

QEMU is very slow / warns that KVM is not available.

Fast functional simulation with QEMU uses KVM. Make sure /dev/kvm exists and is accessible (when using Docker, pass --device /dev/kvm). Inside VMs, nested virtualization must be enabled. Without KVM, QEMU falls back to slower binary translation (TCG) — simulations still work, just slower.

gem5 complains about the disk image or kernel.

gem5 only supports raw disk images (build them with CONVERT_RAW=true in image-builder) and boots the ELF vmlinux from images/<name>/boot/vmlinux. Also note that gem5 needs to run with kernel.perf_event_paranoid set to 1 or lower on the host (sudo sysctl -w kernel.perf_event_paranoid=1); in Docker this typically requires --privileged.

My performance measurements are not reproducible / look wrong.

By default SimBricks executes virtual prototypes unsynchronized, which is only meant for functional testing. Enable synchronization in your Simulation Configuration for meaningful end-to-end measurements (see Simulation Configuration).

Where do I find the outputs of a run?

For cloud execution, outputs are stored by the Backend and retrievable via CLI, client library, or the web UI. For local execution, everything is collected under the working directory (default ./out/), with the aggregated simulation output in output/out.json (see Disk Images and Data Flow).

Something else is broken — where do I get help?

Ask on https://join.slack.com/t/simbricks/shared_invite/zt-16y96155y-xspnVcm18EUkbUHDcSVonASlack or open an issue/discussion on GitHub (simbricks/simbricks). Bug reports with the full simulation output and your virtual prototype script are the easiest to help with.