From 5ff41e943946a9e71b55566a02c8b1371fc9b8de Mon Sep 17 00:00:00 2001 From: Taras Madan Date: Tue, 22 Mar 2022 16:05:39 +0100 Subject: syz-verifier: support multiple VMs (#3040) Reused config parameter "config.vm.count". Local fuzzing speed test result: 1 vm/pool => 380 programs/minute 2 vm/pool => 1050 programs/minute 4 vm/pool => 1600 programs/minute 8 vm/pool => 800 programs/minute --- syz-verifier/verifier.go | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/syz-verifier/verifier.go b/syz-verifier/verifier.go index 4bcb0fa8a..33dabebe0 100644 --- a/syz-verifier/verifier.go +++ b/syz-verifier/verifier.go @@ -230,23 +230,24 @@ func (vrf *Verifier) SetPrintStatAtSIGINT() error { func (vrf *Verifier) startInstances() { for poolID, pi := range vrf.pools { - go func(pi *poolInfo, poolID int) { - for { - // TODO: implement support for multiple VMs per Pool. - - vrf.createAndManageInstance(pi, poolID) - } - }(pi, poolID) + totalInstances := pi.pool.Count() + for vmID := 0; vmID < totalInstances; vmID++ { + go func(pi *poolInfo, poolID, vmID int) { + for { + vrf.createAndManageInstance(pi, poolID, vmID) + } + }(pi, poolID, vmID) + } } } -func (vrf *Verifier) createAndManageInstance(pi *poolInfo, poolID int) { - inst, err := pi.pool.Create(0) +func (vrf *Verifier) createAndManageInstance(pi *poolInfo, poolID, vmID int) { + inst, err := pi.pool.Create(vmID) if err != nil { log.Fatalf("failed to create instance: %v", err) } defer inst.Close() - defer vrf.srv.cleanup(poolID, 0) + defer vrf.srv.cleanup(poolID, vmID) fwdAddr, err := inst.Forward(vrf.srv.port) if err != nil { -- cgit mrf-deployment