Repository navigation
1.2.61
- Gzip web and cluster responses with ISA-L when the
speedupsextra
installsisal. On Linux it compresses a 500-job/jobsresponse 3.5
times as fast as stock zlib, and aiohttp uses it for the gzip exchange
between cluster peers. Withoutisal, the daemon uses the standard
library'szlib.isalinstalls only from a wheel, so the amd64 and
arm64 Docker images include it, as do theamd64,amd64v3, andarm64
binaries for Linux, macOS, and Windows. Thewebapi.gzip_body_500
benchmark times the compressor. - The amd64 and arm64 Docker images include uvloop, the
speedupsextra's
event loop, as the POSIX binaries do. The other image architectures have
no uvloop wheel and run on stock asyncio. - Reduce daemon memory. After parsing its configuration, the daemon frees
the YAML parse tree, about 20 KB per job, which an idle daemon otherwise
keeps until its next full garbage collection. An idle daemon with 3,000
jobs uses 73 MB on Linux instead of 113 MB. On Windows, a finished run
frees the 64 KiB read buffer of each captured stream once its output is
drained, so a daemon running 20 jobs every 3 seconds peaks at 69 MB
instead of 99 MB.
Performance compared with 1.2.60
Regression check: passed. No compared metric exceeded its regression thresholds.
Both versions were benchmarked in alternating rounds on the same machine. Results use the lowest runtime and median memory usage across rounds. Negative changes mean less time or memory; positive changes mean more.
Benchmark comparisons (100 metrics)
Noise (±) estimates run-to-run variation across both versions. A result fails the regression check only if the increase exceeds its percentage limit, its minimum absolute change, and 2 times the noise estimate. n/a means too few rounds to estimate noise; the other limits still apply.
The Regression limit column accounts for the minimum absolute change, expressed as a percentage of the baseline. Not enforced marks informational metrics.
Startup times include Python startup overhead. Their percentage changes exclude that overhead when it can be measured separately and leaves a positive runtime in both versions.
| Benchmark | 1.2.60 | 1.2.61 | Change | Noise (±) | Regression limit |
|---|---|---|---|---|---|
| webapi.gzip_body_500 | 226.20 ms | 64.05 ms | -71.7% | 0.3% | 15% |
| mem.gc_pause_100k | 130.78 ms | 115.09 ms | -12.0% | 18.1% | 25% |
| webui.log_count_5k | 90.0 us | 100.0 us | +11.1% | 4.5% | 2222% (declared 25%) |
| webui.append_line_5k | 14.0 us | 15.0 us | +7.1% | 5.8% | 25% |
| webapi.jobs_payload_500 | 54.49 ms | 50.92 ms | -6.6% | 0.9% | 18.35% (declared 15%) |
| loop.stall_metrics_2000 | 26.86 ms | 26.12 ms | -2.7% | 4.1% | Not enforced |
| loop.stall_completions_500 | 9.99 ms | 10.25 ms | +2.6% | 2.2% | 50.07% (declared 25%) |
| cronexpr.parse_simple | 44.47 ms | 45.49 ms | +2.3% | 2.6% | 22.49% (declared 15%) |
| prometheus.render_500 | 16.91 ms | 17.17 ms | +1.5% | 2.1% | 59.14% (declared 15%) |
| cronexpr.next_dst_2k | 41.41 ms | 40.81 ms | -1.4% | 1.9% | 24.15% (declared 15%) |
| state.artifact_list_churn | 1.47 ms | 1.49 ms | +1.4% | 3.0% | 340% (declared 25%) |
| dag.finish_fanin_1k | 3.33 ms | 3.28 ms | -1.3% | 2.4% | 150.3% (declared 25%) |
| schedule.suggest_slot_5k | 4.22 ms | 4.27 ms | +1.3% | 2.1% | 237.1% (declared 15%) |
| schedule.cold_build_100k | 493.25 ms | 499.28 ms | +1.2% | 0.9% | 15% |
| redact.adversarial_10k | 36.62 ms | 36.18 ms | -1.2% | 1.8% | 27.31% (declared 15%) |
| state.lease_renew_200 | 50.87 ms | 50.29 ms | -1.1% | 0.6% | 98.29% (declared 25%) |
| dag.build_layered_10k | 49.50 ms | 48.94 ms | -1.1% | 1.1% | 20.2% (declared 15%) |
| redact.secrets_5k | 20.40 ms | 20.63 ms | +1.1% | 1.6% | 49.01% (declared 15%) |
| job.stream_capture_120k | 35.26 ms | 35.65 ms | +1.1% | 4.0% | 28.36% (declared 15%) |
| startup.import_daemon | 179.45 ms | 181.34 ms | +1.1% | 0.3% | 25% |
| state.list_records_2k | 22.57 ms | 22.33 ms | -1.1% | 2.6% | 44.3% (declared 15%) |
| config.parse_yaml_300 | 198.03 ms | 200.15 ms | +1.1% | 3.1% | 15% |
| config.parse_yaml_3k | 1.985 s | 1.965 s | -1.0% | 2.0% | 15% |
| schedule.lint_250_zoned | 7.76 ms | 7.84 ms | +1.0% | 2.2% | 128.8% (declared 15%) |
| dag.mapped_drain_256 | 19.59 ms | 19.78 ms | +0.9% | 1.7% | 51.04% (declared 25%) |
| state.boot_rehydrate_populated | 38.96 ms | 39.31 ms | +0.9% | 3.0% | 25.67% (declared 15%) |
| cluster.job_owner_2k | 57.31 ms | 57.82 ms | +0.9% | 4.4% | 17.45% (declared 15%) |
| cronexpr.next_simple | 38.91 ms | 39.25 ms | +0.9% | 2.2% | 25.7% (declared 15%) |
| cronexpr.test_match_200k | 25.12 ms | 24.90 ms | -0.9% | 2.5% | 39.81% (declared 15%) |
| redact.clean_20k | 20.63 ms | 20.81 ms | +0.9% | 1.1% | 48.47% (declared 15%) |
| state.kv_roundtrip_200 | 56.27 ms | 55.78 ms | -0.9% | 0.8% | 17.77% (declared 15%) |
| loop.stall_jobs_500 | 21.25 ms | 21.06 ms | -0.9% | 1.3% | Not enforced |
| schedule.duplicates_20k | 17.02 ms | 17.16 ms | +0.8% | 7.0% | 58.74% (declared 15%) |
| tui.log_restyle_5k | 31.82 ms | 31.56 ms | -0.8% | 1.0% | 31.43% (declared 15%) |
| webui.render_fleet_15x400 | 23.41 ms | 23.60 ms | +0.8% | 1.1% | 25% |
| schedule.reseed_100k | 203.77 ms | 202.22 ms | -0.8% | 0.6% | 15% |
| startup.import_cronexpr | 25.69 ms | 25.75 ms | -0.7% | 1.2% | 25% |
| startup.python_baseline | 17.45 ms | 17.58 ms | +0.7% | 0.1% | Not enforced |
| startup.validate_config_100 | 219.51 ms | 220.99 ms | +0.7% | 0.6% | 25% |
| ical.render_500x7d | 51.61 ms | 51.26 ms | -0.7% | 2.1% | 19.38% (declared 15%) |
| state.derive_max_cold | 19.80 ms | 19.68 ms | -0.6% | 2.9% | 50.5% (declared 15%) |
| state.append_1k | 126.48 ms | 127.24 ms | +0.6% | 1.0% | 39.53% (declared 15%) |
| schedule.next_fires_2k | 25.06 ms | 24.91 ms | -0.6% | 1.1% | 39.91% (declared 15%) |
| tui.log_search_20k | 15.34 ms | 15.43 ms | +0.6% | 1.0% | 65.18% (declared 15%) |
| state.gc_sweep_2k_streams | 32.71 ms | 32.53 ms | -0.6% | 0.6% | 45.85% (declared 25%) |
| config.jobconfig_3k | 67.84 ms | 68.20 ms | +0.5% | 1.3% | 15% |
| state.fanout_gather_100 | 9.94 ms | 9.99 ms | +0.5% | 4.1% | 100.6% (declared 25%) |
| dag.adopt_scan_500 | 100.93 ms | 101.46 ms | +0.5% | 1.2% | 25% |
| startup.job_set_id_100 | 225.86 ms | 227.07 ms | +0.5% | 1.9% | 25% |
| dag.advance_quiescent_1k | 72.21 ms | 71.84 ms | -0.5% | 1.0% | 25% |
| cronexpr.parse_complex | 24.29 ms | 24.41 ms | +0.5% | 1.1% | 41.17% (declared 15%) |
| statsd.emit_2k | 12.97 ms | 12.91 ms | -0.5% | 1.5% | 77.1% (declared 25%) |
| dag.build_chain_10k | 28.51 ms | 28.65 ms | +0.5% | 1.4% | 35.07% (declared 15%) |
| loop.idle_wake_rate | 22.03 ms | 21.93 ms | -0.5% | 2.2% | 25% |
| job.report_noop_100k | 52.81 ms | 52.57 ms | -0.5% | 3.7% | 15% |
| schedule.pressure_20k_48h | 16.38 ms | 16.31 ms | -0.5% | 1.5% | 61.04% (declared 15%) |
| state.list_documents_600 | 55.41 ms | 55.17 ms | -0.4% | 0.6% | 21.66% (declared 15%) |
| dag.list_dags_warm | 1.09 ms | 1.10 ms | +0.4% | 1.7% | 183.3% (declared 25%) |
| state.derive_max_warm | 147.38 ms | 146.79 ms | -0.4% | 0.2% | 15% |
| cronexpr.occurrences_1k | 13.87 ms | 13.93 ms | +0.4% | 1.9% | 72.08% (declared 15%) |
| json.roundtrip_3k | 581.93 ms | 579.72 ms | -0.4% | 1.2% | 15% |
| cluster.parse_summaries_6k | 85.28 ms | 85.58 ms | +0.4% | 1.4% | 15% |
| push.seal_500 | 90.53 ms | 90.83 ms | +0.3% | 1.1% | 15% |
| config.interp_2k | 65.53 ms | 65.71 ms | +0.3% | 0.5% | 15% |
| startup.version | 54.14 ms | 54.16 ms | -0.3% | 0.4% | 25% |
| webui.render_rows_500 | 16.94 ms | 16.98 ms | +0.2% | 0.8% | 25% |
| mcp.handle_200 | 156.03 ms | 156.40 ms | +0.2% | 1.0% | 15% |
| state.list_records_warm | 107.59 ms | 107.82 ms | +0.2% | 0.7% | 15% |
| webapi.auth_scope_20k | 88.47 ms | 88.28 ms | -0.2% | 1.5% | 15% |
| webui.render_term_5k | 106.10 ms | 105.90 ms | -0.2% | 0.9% | 25% |
| state.artifact_get_newest | 21.78 ms | 21.74 ms | -0.2% | 0.9% | 25% |
| cluster.fleet_view_15x400 | 84.99 ms | 84.85 ms | -0.2% | 1.3% | 25% |
| json.roundtrip_orjson_3k | 208.04 ms | 207.71 ms | -0.2% | 0.7% | 15% |
| webapi.sse_burst_20k | 46.45 ms | 46.37 ms | -0.2% | 1.1% | 15% |
| schedule.due_pass_100k | 15.82 ms | 15.85 ms | +0.1% | 1.2% | 63.19% (declared 25%) |
| config.reload_warm_50 | 46.31 ms | 46.37 ms | +0.1% | 2.2% | 25% |
| state.depends_on_past_gate | 3.07 ms | 3.08 ms | +0.1% | 3.0% | 65.08% (declared 25%) |
| startup.import_config | 96.24 ms | 96.44 ms | +0.1% | 0.1% | 25% |
| mem.rss_daemon_import | 37.53 MB | 37.50 MB | -0.1% | 0.1% | 25% |
| cronexpr.next_complex | 15.76 ms | 15.74 ms | -0.1% | 2.9% | 63.46% (declared 15%) |
| config.parse_crontab_1k | 12.52 ms | 12.53 ms | +0.1% | 0.9% | 79.87% (declared 15%) |
| config.reload_warm_include_50 | 99.49 ms | 99.56 ms | +0.1% | 1.2% | 25% |
| dag.list_runs_warm | 12.94 ms | 12.95 ms | +0.1% | 1.6% | 25% |
| dag.advance_quiescent_chain | 71.01 ms | 70.96 ms | -0.1% | 0.4% | 25% |
| schedule.reseed_local_20k | 94.04 ms | 94.09 ms | +0.1% | 1.1% | 15% |
| config.reload_gc_100k | 2.443 s | 2.444 s | +0.0% | 0.7% | 25% |
| mem.rss_version | 14.46 MB | 14.45 MB | -0.0% | 0.1% | 25% |
| tui.dag_graph_paint_2k | 228.05 ms | 228.13 ms | +0.0% | 1.3% | 15% |
| dag.plan_claim_10k | 13.37 ms | 13.37 ms | -0.0% | 3.2% | 74.77% (declared 15%) |
| tui.drawer_paint_5k | 105.21 ms | 105.24 ms | +0.0% | 1.6% | 15% |
| fingerprint.job_set_id_10k | 305.22 ms | 305.14 ms | -0.0% | 0.8% | 15% |
| resources.monitor_stop_100 | 287.70 ms | 287.78 ms | +0.0% | 2.0% | 25% |
| state.mutate_document_1k | 143.98 ms | 143.97 ms | -0.0% | 1.3% | 34.73% (declared 25%) |
| webui.week_walk_500 | 2.95 ms | 2.95 ms | -0.0% | 2.6% | 67.8% (declared 25%) |
| webui.radar_walk_500 | 320.0 us | 320.0 us | +0.0% | 6.4% | 625% (declared 25%) |
| webapi.jobs_bytes_500 | 181.42 KB | 181.42 KB | +0.0% | 0.0% | 15% |
| webapi.jobs_gzip_500 | 5.19 KB | 5.19 KB | +0.0% | 0.0% | 15% |
| mem.crontab_10k | 2.80 MB | 2.80 MB | +0.0% | 0.0% | 17.85% (declared 15%) |
| mem.jobconfig_2k | 1.54 MB | 1.54 MB | +0.0% | 0.0% | 32.36% (declared 15%) |
| mem.retired_output_1k | 0.12 MB | 0.12 MB | +0.0% | 0.0% | 433.7% (declared 15%) |
Full Changelog: 1.2.60...1.2.61