tools/run.py is a cluster orchestrator: it compiles nothing itself but
distributes the prebuilt binary, the libs/ directory, and the chosen config to every test
host, launches the DPDK application over SSH with the right EAL arguments, then collects and
analyzes the per-host results.
Before first use, edit the configuration block at the top of the script to match your
cluster: HOST_CONFIGS lists each host/bond combination (control IP, data IP, PCIe address,
and lcore range), and BASE_DIR is the working directory the files are copied to on each
host. For a run, the per-host command line is assembled in build_host_run_entries(), and
the hosts that actually participate are filtered by the servers.peer_ip field of the
config (select_host_entries_from_config()).
run.py is invoked as python3 tools/run.py <subcommand>:
| Subcommand | Purpose |
|---|---|
run --program <bin> --config <yaml> |
The main workflow: distribute the binary + config to the relevant hosts and launch the experiment, then collect logs into logs/<timestamp>/ and run the analysis. |
distribute <src> <dst> |
Copy a file or directory to all remote hosts. |
exp-range <bin> <cfg> <key> <start> <stop> <step> |
Sweep one config key over a range (linear or multiplicative), running the experiment once per value and aggregating/plotting the results. |
plot-exp-range <log_dir> <key> <start> <stop> |
Re-plot a previously collected exp-range sweep without re-running it. |
set-yaml <cfg> <key> <value> |
Edit a single value in a YAML config (supports a.b nested keys). |
init |
Prepare the hosts: set traffic_class, reserve hugepages, and start nusad. |
killall |
Kill any leftover anytest processes on the local and all remote hosts. |
pingmesh |
Ping the data-plane IPs across hosts to warm up the ARP cache. |
set-cnp-interval <ip> <interval> |
Set the NIC's CNP generation interval on a given host. |
ibtest |
Batch-launch ib_write_bw server/clients for a perftest baseline. |