Skip to content

Commit c486379

Browse files
committed
change invoke time to "TImer" and add time/insn ratio histogram
1 parent 343666e commit c486379

File tree

2 files changed

+18
-7
lines changed

2 files changed

+18
-7
lines changed

docs/metrics.md

+4-2
Original file line numberDiff line numberDiff line change
@@ -176,9 +176,11 @@ soroban.host-fn-op.emit-event | meter | number of events emit
176176
soroban.host-fn-op.emit-event-byte | meter | number of event bytes emitted
177177
soroban.host-fn-op.cpu-insn | meter | metered cpu instructions
178178
soroban.host-fn-op.mem-byte | meter | metered memory bytes
179-
soroban.host-fn-op.invoke-time-nsecs | meter | time [nsecs] spent in `invoke_host_function`
179+
soroban.host-fn-op.invoke-time-nsecs | timer | time spent in `invoke_host_function`
180180
soroban.host-fn-op.cpu-insn-excl-vm | meter | metered cpu instructions excluding VM instantation
181-
soroban.host-fn-op.invoke-time-nsecs-excl-vm | meter | time [nsecs] spent in `invoke_host_function` excluding VM instantation
181+
soroban.host-fn-op.invoke-time-nsecs-excl-vm | timer | time spent in `invoke_host_function` excluding VM instantation
182+
soroban.host-fn-op.invoke-time-fsecs-cpu-insn-ratio | histogram | ratio between invoke_time (femto-seconds) and cpu instructions
183+
soroban.host-fn-op.invoke-time-fsecs-cpu-insn-ratio-excl-vm | histogram | ratio between invoke_time (femto-seconds) and cpu instructions excluding VM instantation
182184
soroban.host-fn-op.max-rw-key-byte | meter | bytes of the largest key in entries read/written
183185
soroban.host-fn-op.max-rw-data-byte | meter | bytes of the largest data entry read/written
184186
soroban.host-fn-op.max-rw-code-byte | meter | bytes of the largest code entry read/written

src/transactions/InvokeHostFunctionOpFrame.cpp

+14-5
Original file line numberDiff line numberDiff line change
@@ -225,15 +225,24 @@ struct HostFunctionMetrics
225225
.NewMeter({"soroban", "host-fn-op", "mem-byte"}, "byte")
226226
.Mark(mMemByte);
227227
mMetrics.registry()
228-
.NewMeter({"soroban", "host-fn-op", "invoke-time-nsecs"}, "time")
229-
.Mark(mInvokeTimeNsecs);
228+
.NewTimer({"soroban", "host-fn-op", "invoke-time-nsecs"})
229+
.Update(std::chrono::nanoseconds(mInvokeTimeNsecs));
230230
mMetrics.registry()
231231
.NewMeter({"soroban", "host-fn-op", "cpu-insn-excl-vm"}, "insn")
232232
.Mark(mCpuInsnExclVm);
233233
mMetrics.registry()
234-
.NewMeter({"soroban", "host-fn-op", "invoke-time-nsecs-excl-vm"},
235-
"time")
236-
.Mark(mInvokeTimeNsecsExclVm);
234+
.NewTimer({"soroban", "host-fn-op", "invoke-time-nsecs-excl-vm"})
235+
.Update(std::chrono::nanoseconds(mInvokeTimeNsecsExclVm));
236+
mMetrics.registry()
237+
.NewHistogram(
238+
{"soroban", "host-fn-op", "invoke-time-fsecs-cpu-insn-ratio"})
239+
.Update(mInvokeTimeNsecs * 1000000 /
240+
std::max(mCpuInsn, uint64_t(1)));
241+
mMetrics.registry()
242+
.NewHistogram({"soroban", "host-fn-op",
243+
"invoke-time-fsecs-cpu-insn-ratio-excl-vm"})
244+
.Update(mInvokeTimeNsecsExclVm * 1000000 /
245+
std::max(mCpuInsnExclVm, uint64_t(1)));
237246

238247
mMetrics.registry()
239248
.NewMeter({"soroban", "host-fn-op", "max-rw-key-byte"}, "byte")

0 commit comments

Comments
 (0)