aboutsummaryrefslogtreecommitdiffstats
path: root/pkg/rpcserver/rpcserver.go
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2024-07-01 14:26:05 +0200
committerDmitry Vyukov <dvyukov@google.com>2024-08-02 13:16:51 +0000
commit66fcb0a84fcd55ad8e1444cdd0bc0ad6592f7329 (patch)
tree998e52d5569938e0251da1eb7c54c3746186b488 /pkg/rpcserver/rpcserver.go
parent1e9c4cf3ae82ef82220af312606fffe65e124563 (diff)
pkg/fuzzer: try to triage on different VMs
Distribute triage requests to different VMs.
Diffstat (limited to 'pkg/rpcserver/rpcserver.go')
-rw-r--r--pkg/rpcserver/rpcserver.go19
1 files changed, 15 insertions, 4 deletions
diff --git a/pkg/rpcserver/rpcserver.go b/pkg/rpcserver/rpcserver.go
index 37e74c91b..da3a0f076 100644
--- a/pkg/rpcserver/rpcserver.go
+++ b/pkg/rpcserver/rpcserver.go
@@ -76,9 +76,12 @@ type Server struct {
canonicalModules *cover.Canonicalizer
coverFilter []uint64
- mu sync.Mutex
- runners map[string]*Runner
- execSource queue.Source
+ mu sync.Mutex
+ runners map[string]*Runner
+ execSource *queue.Distributor
+ // TODO: replace names with indices.
+ ids map[string]int
+ idSeq int
triagedCorpus atomic.Bool
statVMRestarts *stat.Val
*runnerStats
@@ -140,9 +143,10 @@ func newImpl(ctx context.Context, cfg *Config, mgr Manager) (*Server, error) {
sysTarget: sysTarget,
timeouts: sysTarget.Timeouts(cfg.Slowdown),
runners: make(map[string]*Runner),
+ ids: make(map[string]int),
checker: checker,
baseSource: baseSource,
- execSource: queue.Retry(baseSource),
+ execSource: queue.Distribute(queue.Retry(baseSource)),
statVMRestarts: stat.New("vm restarts", "Total number of VM starts",
stat.Rate{}, stat.NoGraph),
@@ -412,6 +416,13 @@ func (serv *Server) CreateInstance(name string, injectExec chan<- bool, updInfo
panic(fmt.Sprintf("duplicate instance %s", name))
}
serv.runners[name] = runner
+ id, ok := serv.ids[name]
+ if !ok {
+ id = serv.idSeq
+ serv.idSeq++
+ serv.ids[name] = id
+ }
+ runner.id = id
return runner.resultCh
}