Skip to content

Commit 79b8ce5

Browse files
authored
feat(metrics): capture total gas metric from ApplyBlocks (#13037)
1 parent 811d25c commit 79b8ce5

File tree

2 files changed

+26
-5
lines changed

2 files changed

+26
-5
lines changed

chain/consensus/compute_state.go

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -194,7 +194,7 @@ func (t *TipSetExecutor) ApplyBlocks(ctx context.Context,
194194
}
195195
}
196196

197-
vmEarly := partDone()
197+
vmEarlyDuration := partDone()
198198
earlyCronGas := cronGas
199199
cronGas = 0
200200
partDone = metrics.Timer(ctx, metrics.VMApplyMessages)
@@ -258,14 +258,14 @@ func (t *TipSetExecutor) ApplyBlocks(ctx context.Context,
258258
}
259259
}
260260

261-
vmMsg := partDone()
261+
vmMsgDuration := partDone()
262262
partDone = metrics.Timer(ctx, metrics.VMApplyCron)
263263

264264
if err := runCron(vmi, epoch); err != nil {
265265
return cid.Cid{}, cid.Cid{}, err
266266
}
267267

268-
vmCron := partDone()
268+
vmCronDuration := partDone()
269269
partDone = metrics.Timer(ctx, metrics.VMApplyFlush)
270270

271271
rectarr := blockadt.MakeEmptyArray(sm.ChainStore().ActorStore(ctx))
@@ -301,14 +301,28 @@ func (t *TipSetExecutor) ApplyBlocks(ctx context.Context,
301301
return cid.Undef, cid.Undef, xerrors.Errorf("vm flush failed: %w", err)
302302
}
303303

304-
vmFlush := partDone()
304+
vmFlushDuration := partDone()
305305
partDone = func() time.Duration { return time.Duration(0) }
306306

307-
log.Infow("ApplyBlocks stats", "early", vmEarly, "earlyCronGas", earlyCronGas, "vmMsg", vmMsg, "msgGas", msgGas, "vmCron", vmCron, "cronGas", cronGas, "vmFlush", vmFlush, "epoch", epoch, "tsk", ts.Key())
307+
log.Infow(
308+
"ApplyBlocks stats",
309+
"earlyMs", vmEarlyDuration.Milliseconds(),
310+
"earlyCronGas", earlyCronGas,
311+
"vmMsgMs", vmMsgDuration.Milliseconds(),
312+
"msgGas", msgGas,
313+
"vmCronMs", vmCronDuration.Milliseconds(),
314+
"cronGas", cronGas,
315+
"vmFlushMs", vmFlushDuration.Milliseconds(),
316+
"totalMs", (vmEarlyDuration + vmMsgDuration + vmCronDuration + vmFlushDuration).Milliseconds(),
317+
"totalGas", earlyCronGas+msgGas+cronGas,
318+
"epoch", epoch,
319+
"tsk", ts.Key(),
320+
)
308321

309322
stats.Record(ctx,
310323
metrics.VMSends.M(int64(atomic.LoadUint64(&vm.StatSends))),
311324
metrics.VMApplied.M(int64(atomic.LoadUint64(&vm.StatApplied))),
325+
metrics.VMApplyBlocksTotalGas.M(earlyCronGas+msgGas+cronGas),
312326
metrics.VMApplyEarlyGas.M(earlyCronGas),
313327
metrics.VMApplyMessagesGas.M(msgGas),
314328
metrics.VMApplyCronGas.M(cronGas),

metrics/metrics.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,7 @@ var (
123123
VMApplyEarly = stats.Float64("vm/applyblocks_early", "Time spent in early apply-blocks (null cron, upgrades)", stats.UnitMilliseconds)
124124
VMApplyCron = stats.Float64("vm/applyblocks_cron", "Time spent in cron", stats.UnitMilliseconds)
125125
VMApplyFlush = stats.Float64("vm/applyblocks_flush", "Time spent flushing vm state", stats.UnitMilliseconds)
126+
VMApplyBlocksTotalGas = stats.Int64("vm/applyblocks_total_gas", "Total gas of messages and cron", stats.UnitDimensionless)
126127
VMApplyMessagesGas = stats.Int64("vm/applyblocks_messages_gas", "Total gas of block messages", stats.UnitDimensionless)
127128
VMApplyEarlyGas = stats.Int64("vm/applyblocks_early_gas", "Total gas of early apply-blocks (null cron, upgrades)", stats.UnitDimensionless)
128129
VMApplyCronGas = stats.Int64("vm/applyblocks_cron_gas", "Total gas of cron", stats.UnitDimensionless)
@@ -411,6 +412,11 @@ var (
411412
Aggregation: defaultMillisecondsDistribution,
412413
TagKeys: []tag.Key{Network},
413414
}
415+
VMApplyBlocksTotalGasView = &view.View{
416+
Measure: VMApplyBlocksTotalGas,
417+
Aggregation: view.LastValue(),
418+
TagKeys: []tag.Key{Network},
419+
}
414420
VMApplyEarlyGasView = &view.View{
415421
Measure: VMApplyEarlyGas,
416422
Aggregation: view.LastValue(),
@@ -815,6 +821,7 @@ var ChainNodeViews = append([]*view.View{
815821
VMApplyEarlyView,
816822
VMApplyCronView,
817823
VMApplyFlushView,
824+
VMApplyBlocksTotalGasView,
818825
VMApplyEarlyGasView,
819826
VMApplyMessagesGasView,
820827
VMApplyCronGasView,

0 commit comments

Comments
 (0)