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.
Something in the script names a path that only exists on the Runner — an ExternalDiskImage, a
boot_dir=, or a @{SIMBRICKS_PATH:global_input_dir}@ placeholder. Pass
--global-input-dir <dir> to simbricks-run so those paths resolve, in the layout described
in The global input directory. The images SimBricks publishes need none of this: they
are downloaded (The images SimBricks publishes), so check network access to
https://disk-images.simbricks.io instead.
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, and boots the ELF vmlinux. A layered image is built
in whichever format the simulator needs, so building one on top of a distro image is the way to
run gem5 on it — a downloaded image is qcow2 only (The images SimBricks publishes). The
vmlinux is extracted from the image with libguestfs, which needs libguestfs-tools on the
Runner and the kernel’s debug package in the image (Boot artifacts). For a
prebuilt image of your own, make sure the raw variant is in place (images/<name>/<name>.raw,
see The global input directory) and use FileDiskImage so the vmlinux is
extracted too, or put it at images/<name>/boot/vmlinux and point an ExternalDiskImage’s
boot_dir= at it. 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.