aboutsummaryrefslogtreecommitdiffstats
path: root/syz-manager
diff options
context:
space:
mode:
authorAleksandr Nogikh <nogikh@google.com>2024-10-14 22:44:07 +0200
committerTaras Madan <tarasmadan@google.com>2024-10-25 12:08:02 +0000
commit78ccf1e6b3d9e44604faf283b65faa3a5e0825f9 (patch)
treeb9d76d91556434ddbf543f241155ebe8affbb326 /syz-manager
parent45491cdceb1295e9120756b1615200b494a5f97b (diff)
pkg/rpcserver: take stats as a dependency
It will enable collecting statistics for several simultaneous RPCServer objects.
Diffstat (limited to 'syz-manager')
-rw-r--r--syz-manager/manager.go8
-rw-r--r--syz-manager/snapshot.go6
2 files changed, 8 insertions, 6 deletions
diff --git a/syz-manager/manager.go b/syz-manager/manager.go
index 2a7c2efe5..ebd4b94cf 100644
--- a/syz-manager/manager.go
+++ b/syz-manager/manager.go
@@ -81,6 +81,7 @@ type Manager struct {
crashStore *manager.CrashStore
serv rpcserver.Server
http *manager.HTTPServer
+ servStats rpcserver.Stats
corpus *corpus.Corpus
corpusDB *db.DB
corpusDBMu sync.Mutex // for concurrent operations on corpusDB
@@ -250,7 +251,8 @@ func RunManager(mode Mode, cfg *mgrconfig.Config) {
go mgr.trackUsedFiles()
// Create RPC server for fuzzers.
- mgr.serv, err = rpcserver.New(mgr.cfg, mgr, *flagDebug)
+ mgr.servStats = rpcserver.NewStats()
+ mgr.serv, err = rpcserver.New(mgr.cfg, mgr, mgr.servStats, *flagDebug)
if err != nil {
log.Fatalf("failed to create rpc server: %v", err)
}
@@ -323,7 +325,7 @@ func (mgr *Manager) heartbeatLoop() {
if mgr.firstConnect.Load() == 0 {
continue
}
- mgr.statFuzzingTime.Add(diff * queue.StatNumFuzzing.Val())
+ mgr.statFuzzingTime.Add(diff * mgr.servStats.StatNumFuzzing.Val())
buf := new(bytes.Buffer)
for _, stat := range stat.Collect(stat.Console) {
fmt.Fprintf(buf, "%v=%v ", stat.Name, stat.Value)
@@ -1307,7 +1309,7 @@ func (mgr *Manager) dashboardReporter() {
FuzzingTime: time.Duration(mgr.statFuzzingTime.Val()) - lastFuzzingTime,
Crashes: uint64(mgr.statCrashes.Val()) - lastCrashes,
SuppressedCrashes: uint64(mgr.statSuppressed.Val()) - lastSuppressedCrashes,
- Execs: uint64(queue.StatExecs.Val()) - lastExecs,
+ Execs: uint64(mgr.servStats.StatExecs.Val()) - lastExecs,
}
if mgr.phase >= phaseTriagedCorpus && !triageInfoSent {
triageInfoSent = true
diff --git a/syz-manager/snapshot.go b/syz-manager/snapshot.go
index 962589926..a7e72132f 100644
--- a/syz-manager/snapshot.go
+++ b/syz-manager/snapshot.go
@@ -20,8 +20,8 @@ import (
)
func (mgr *Manager) snapshotInstance(ctx context.Context, inst *vm.Instance, updInfo dispatcher.UpdateInfo) {
- queue.StatNumFuzzing.Add(1)
- defer queue.StatNumFuzzing.Add(-1)
+ mgr.servStats.StatNumFuzzing.Add(1)
+ defer mgr.servStats.StatNumFuzzing.Add(-1)
updInfo(func(info *dispatcher.Info) {
info.Status = "snapshot fuzzing"
@@ -48,7 +48,7 @@ func (mgr *Manager) snapshotLoop(ctx context.Context, inst *vm.Instance) error {
builder := flatbuffers.NewBuilder(0)
var envFlags flatrpc.ExecEnv
for first := true; ctx.Err() == nil; first = false {
- queue.StatExecs.Add(1)
+ mgr.servStats.StatExecs.Add(1)
req := mgr.snapshotSource.Next(inst.Index())
if first {
envFlags = req.ExecOpts.EnvFlags