...
RAMCloud has a fairly extensive internal metrics-gathering infrastructure. The RawMetrics class defines a number of subsystem-grouped uint64_t counters that are maintained by various subsystemsmodules. For example, every RPC opcode serviced increments an operation count counter and a ticks counter (cpu cycles spent executing the operation) such as 'rpc.ReadCount' and 'rpc.ReadTicks'.
...
Code Block | ||
---|---|---|
| ||
CycleCounter<> ticks; // default template type is uint64_t ... do something ... printf("took %lu ticks\n", ticks.stop()); extern uint64_t globalWeirdConditionCounter; if (someConditionRequiringWork) { CycleCounter<> ticksticks2(&globalWeirdConditionCounter); ... do the work ... // the ticksticks2 destructor will call stop() and apply the // delta to globalWeirdConditionCounter automatically. } printf("Spent a total of %f seconds in weird condition\n", Cycles::toSeconds(globalWeirdConditionCounter)); |
...