aboutsummaryrefslogtreecommitdiffstats
path: root/syz-verifier
diff options
context:
space:
mode:
authorTaras Madan <tarasmadan@google.com>2022-03-22 16:05:39 +0100
committerGitHub <noreply@github.com>2022-03-22 16:05:39 +0100
commit5ff41e943946a9e71b55566a02c8b1371fc9b8de (patch)
treeeb13c4a6fddd7614b8c5f8833d2192b060ccbef7 /syz-verifier
parent1ffe9e6099af97bf8bd61cc89e7c5a4e38fc08c7 (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.go21
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 {