* `idle` — idle task queue.
* `tasks` — task dependency tree.
* `hashtable` — hash table page-occupancy histogram.
+ * `delta-counts` — event-counter change since this report last rendered.
+ * `delta-rates` — that change divided by the elapsed time.
### Built-in reports
# workers - worker thread list
# queue - pending task queue
# idle - idle task queue
- # tasks - task dependency tree
- # hashtable - hash table page-occupancy histogram
+ # tasks - task dependency tree
+ # hashtable - hash table page-occupancy histogram
+ # delta-counts- event-counter change since this report last rendered
+ # delta-rates - that change divided by the elapsed time
content =
# [report.legacy] reproduces the $BEESSTATUS status file. The default
}
};
+/// Stateful token: the change in event counters since this token last
+/// rendered. Each report owns its own DeltaToken instance (built fresh in
+/// add_report), so two reports at different intervals each see the delta over
+/// their own interval. Counts mode prints the raw delta; Rates mode divides
+/// by the elapsed time.
+class DeltaToken : public BeesReportToken {
+public:
+ enum class Mode { Counts, Rates };
+private:
+ const Mode m_mode;
+ BeesStats m_last = BeesStats::s_global;
+ Timer m_timer;
+public:
+ explicit DeltaToken(Mode mode) : m_mode(mode) {}
+ void render(ostream &os) override {
+ const auto cur = BeesStats::s_global;
+ const auto age = m_timer.age();
+ const auto delta = cur - m_last;
+ if (m_mode == Mode::Counts) {
+ os << "DELTA COUNTS (" << age << "s):\n\t" << delta << "\n";
+ } else {
+ os << "DELTA RATES (" << age << "s):\n\t" << (delta / age) << "\n";
+ }
+ m_last = cur;
+ m_timer.lap();
+ }
+};
+
}
BeesReporter::BeesReporter(shared_ptr<BeesContext> ctx) :
os << "\n";
}
});
+ } else if (name == "delta-counts") {
+ return make_shared<DeltaToken>(DeltaToken::Mode::Counts);
+ } else if (name == "delta-rates") {
+ return make_shared<DeltaToken>(DeltaToken::Mode::Rates);
} else {
return make_shared<PlaceholderToken>(name);
}