Use the current Python interpreter with oxia>=0.2.0 and boto3 installed.
For the EC2/public-S3 path, prefer the wrapper instead of manual export flows:
python3 -m loadtest.ec2 bootstrap
python3 -m loadtest.ec2 preflight --scenario loadtest/run-configs/public-s3-demo-5m.json --bucket "$S3_BUCKET"
python3 -m loadtest.ec2 smoke --bucket "$S3_BUCKET"
python3 -m loadtest.ec2 run --scenario loadtest/run-configs/public-s3-demo-5m-scaleout.json --bucket "$S3_BUCKET"
python3 -m loadtest.ec2 report latest
python3 -m loadtest.ec2 bundle latestTo bypass managed MinIO and use an existing S3 bucket instead:
export LLOG_LOADTEST_EXTERNAL_S3=1
export LLOG_S3_BUCKET="replace-with-your-bucket"
export AWS_REGION="us-east-1"Set LLOG_S3_ENDPOINT_URL as well when the target is S3-compatible storage rather than AWS S3 itself. The public external-S3 demo flows and exact commands are in PUBLIC_S3_DEMO.md.
client-summary.json and consume-client-summary.json now report only the
steady-state measurement window by default and keep a full_window section for
warmup-inclusive debugging.
Sizing http_clients_per_broker:
request_payload_bytes = record_size_bytes * topic_partitions_per_request * records_per_topic_partition_per_requesttarget_requests_per_sec_per_broker = (target_mib_per_sec_per_broker * 1048576) / request_payload_bytesrequired_inflight_per_broker ~= target_requests_per_sec_per_broker * p50_latency_seconds- if
client-summary.jsonshowsinflight_requests.per_broker.<broker>.peakstuck at the configured cap andpacing_lag_msis large or rising, increasehttp_clients_per_brokerbefore blaming the broker
Quick Grafana flow:
cd "$HOME/code/diskless-python-kafka" && ./quick_run.shcd "$HOME/code/diskless-python-kafka" && ./quick_run.sh downcd "$HOME/code/diskless-python-kafka" && python3 -m loadtest.orchestrate up --scenario loadtest/run-configs/sanity-clustered.jsonIf LLOG_LOADTEST_PROMETHEUS_SYNC_SCRIPT points at a sync script, up
will run it after the brokers are healthy so Prometheus sees the new loopback
targets immediately instead of waiting for cron.
cd "$HOME/code/diskless-python-kafka" && python3 -m loadtest.orchestrate run --scenario loadtest/run-configs/sanity-clustered.jsonrun invokes the same sync after broker startup and again after teardown. That
keeps short-lived load tests visible in Prometheus and cleans stale target files
and bridge proxies when the stack exits.
Set "compactor_enabled": true in the scenario JSON when the run should start
managed compactors alongside MinIO, Oxia, and the brokers. Use
"compactor_count" and "compactor_workers" to choose how many processes to
start and how many workers each one runs with. The compactors will be tracked
in stack.json, ports.json, and processes.json under the run directory.
cd "$HOME/code/diskless-python-kafka" && python3 -m loadtest.orchestrate status --run-dir loadtest/results/<run-id>cd "$HOME/code/diskless-python-kafka" && python3 -m loadtest.orchestrate precreate --run-dir loadtest/results/<run-id>cd "$HOME/code/diskless-python-kafka" && python3 -m loadtest.metrics_collector --run-dir loadtest/results/<run-id> --oncecd "$HOME/code/diskless-python-kafka" && python3 -m loadtest.metrics_collector --run-dir loadtest/results/<run-id> --samples 10cd "$HOME/code/diskless-python-kafka" && python3 -m loadtest.orchestrate down --run-dir loadtest/results/<run-id>down also re-runs the sync so Prometheus target files and loopback bridge
proxies are cleaned up right after shutdown.