ojob.io/java/jsysbench

Usage

ojob ojob.io/java/jsysbench port=8080 host=0.0.0.0 tests=retain,discard,pressure count=2000000 objectSize=256 batchSize=25000 pressureDuration=30s growthSteps=10 waitBetween=5s iterations=1 keepAlive=true 

Description

Runs a series of Java heap allocation / garbage collection stress tests (retained objects,
discarded/short-lived objects, GC pressure, an explicit full GC and staged heap growth)
while exposing live JVM heap and GC metrics, in OpenMetrics/Prometheus format, over HTTP
for scraping. Useful to compare how different JVM versions, vendors or flags (heap sizing,
GC algorithm, etc) behave under the same allocation workload: run this same ojob with
different "java" binaries/options and compare the resulting /metrics or console output.

Expects

Name Description
port HTTP port where /metrics (OpenMetrics/Prometheus format) will be exposed
host Network interface to bind the metrics HTTP server to (defaults to all interfaces)
tests Comma delimited list of tests to run, in order (retain, discard, pressure, fullgc, growth) or "all"
count Number of objects to allocate for the retain, discard and growth tests
objectSize Approximate payload size, in characters/bytes, of each allocated object
batchSize Number of allocations performed between each progress checkpoint (also the garbage batch size used by the discard and pressure tests)
pressureDuration How long the GC pressure test keeps allocating short-lived garbage for (time abbreviation)
growthSteps Number of incremental steps the growth test uses to reach count retained objects
waitBetween Wait time between tests, right after a full GC used to reset the heap baseline (time abbreviation)
iterations Number of times the selected test suite is repeated (0 = repeat forever)
keepAlive If true keeps the metrics HTTP server (and process) running after all tests finish