diff options
| author | Taras Madan <tarasmadan@google.com> | 2022-03-22 16:05:39 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-03-22 16:05:39 +0100 |
| commit | 5ff41e943946a9e71b55566a02c8b1371fc9b8de (patch) | |
| tree | eb13c4a6fddd7614b8c5f8833d2192b060ccbef7 /syz-verifier | |
| parent | 1ffe9e6099af97bf8bd61cc89e7c5a4e38fc08c7 (diff) | |
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
Diffstat (limited to 'syz-verifier')
| -rw-r--r-- | syz-verifier/verifier.go | 21 |
1 files 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 { |
