cargo xflowey
To implement various developer workflows (both locally, as well as in CI), the
OpenVMM project relies on flowey: a custom, in-house Rust library/framework
for writing maintainable, cross-platform automation.
cargo xflowey is a cargo alias that makes it easy for developers to run
flowey-based pipelines locally.
Some particularly notable pipelines:
cargo xflowey build-igvm- primarily dev-tool used to build OpenHCL IGVM files locallycargo xflowey restore-packages- restores external packages needed to compile and run OpenVMM / OpenHCLcargo xflowey vmm-tests-run- build and run VMM tests with automatic artifact discovery. Use--filter "test(name)"to run specific testscargo xflowey vmm-perf- build and run the standalone VMM.Perf profilescargo xflowey cca-tests- build and run ARM64 CCA tests using software emulator
VMM.Perf
Run all VMM.Perf profiles on a Linux or Windows x64 host with:
cargo xflowey vmm-perf
By default, scratch files are created under target/vmm_perf/t and retained
results are written to target/vmm_perf/results. Use --dir to select a
different root directory with the same t and results layout. The default
VM shape is 16 virtual processors and 64 GiB of memory. Hosts with fewer than
16 logical processors or 64 GiB of available memory must use
--vmm-perf-vmsizes to select a smaller VM shape.
To run one profile:
cargo xflowey vmm-perf --profile fio
To run explicit VM sizes:
cargo xflowey vmm-perf \
--profile fio \
--vmm-perf-vmsizes 'CpuCount=2,MemoryMB=4096' \
--vmm-perf-vmsizes 'CpuCount=8,MemoryMB=16384'
The command selects linux-x64-gnu on Linux and windows-x64 on Windows.
Use --target linux-x64-musl when the Linux host requires a statically linked
runner, such as the MSHV Azure Linux pool.
xflowey vs xtask
In a nutshell:
cargo xtask: implements novel, standalone tools/utilitiescargo xflowey: orchestrates invoking a sequence of tools/utilities, without doing any non-trivial data processing itself