Resources
The cost of a run, captured beside it over its measured phase:
each server JVM (processes, name to pid): its CPU time and resident memory every second (
/procon Linux,pselsewhere), its garbage collector and heap fromjstat -gc, one sampling process per JVM, and the bytes it allocated (Allocations), so the results give bytes per operation beside CPU;each container (containers): its CPU and memory from one
docker statsstream;the stores' operation counters: MongoDB's
serverStatus().opcounters(mongoContainer) and PostgreSQL'spg_stat_databaseof postgresDatabase withpg_stat_wal(postgresContainer), each from one session that prints them every second, and the end offsets of every Kafka topic (kafkaContainer).
Nothing starts inside the measured phase (B.O-2): prepare, at the warm-up, starts every sampling process, opens the allocation connections and reads the Kafka offsets once (kafka-get-offsets is a JVM of its own); start and stop only read what is already running, and complete, after the drain, reads the Kafka offsets again. The stores' counters at the phase's edges are the samples nearest to them; PostgreSQL's also give a per-second series of commits and WAL writes and flushes (B.O-3). The samplers are a few percent of a core; the results say what they were.
Constructors
Properties
Functions
Every process's cumulative CPU seconds, read as cpu reads them.
Starts every sampling process and opens the allocation connections, at the warm-up: the first attach starts a JVM's management agent, and mongosh, psql and jstat take a moment to start, none of which may land in the measured phase. The Kafka offsets are read last, once.