mirror of
https://github.com/hanzoai/papers.git
synced 2026-10-29 07:34:31 +00:00
Every measured constant in hanzo-dormant-agents came from bench lanes that have since been re-run, and two of them from a lane that was deleted. The paper is the last consumer to be corrected and the one where it matters most. The pooled row was the problem. Section 6 reported 37.54 ms for "a command dispatched into a container that is already up" and built a paragraph on it — "pooling collapses most of the gap, and is the only tier that matters at fleet scale" — which the conclusion then turned into policy: pool the expensive boundary so a fleet pays the pooled number in steady state. That row was docker exec, on a runtime this system does not use. The runtime it does use has no exec, no attach and no pool. Every call boots. So the table is hanzo-vm now: 309 ms cold, 335 p95, and 311 ms from a checkpoint — which is the same number, because a checkpoint carries the filesystem an earlier run left and the kernel boots either way. The pooling paragraph is replaced by what is true: there is no warm tier, the published resume figures elsewhere are memory snapshots and ours is not, and setting the two side by side would claim a mechanism by borrowing its name. The cost of not having it is stated instead — about 3x on a whole agent call. Section 6 also said our figure "compares favourably to the published cold-start figures". At 309 ms it does not: it is slower than the under-200 ms published for Firecracker sandboxes, faster than the container platforms, and all of those were taken by their authors on their own hardware. The paper says that now, including that quoting their hardware back at them is not a defence. The rest are re-measurements: a goroutine spawns in 125 ns (the 187 was a fresh binary's first run, which is 1.65x its own steady state), a million wake in 107 ms, a V8 context is 0.13 ms, an isolate 0.35 ms, wazero 7.8 us, goja 2.4 us, gpython 25.0 us. The isolation ratio is 2377x, not 1016x. Rebuilt: 12 pages, no stale figure survives in the PDF. Co-authored-by: Hanzo Dev <[email protected]>
63 lines
2.0 KiB
TeX
63 lines
2.0 KiB
TeX
% GENERATED from the runs named below -- do not hand-edit.
|
|
%
|
|
% Host: Apple M-series laptop, darwin/arm64, 16 cores, Go 1.27.1, Node 26.5.0.
|
|
% Date: 2026-09-07.
|
|
%
|
|
% hanzoai/cloud bench/fleet/fleet.mjs one run (state at rest)
|
|
% hanzoai/cloud bench/goroutine/main.go five runs (execution at rest)
|
|
% hanzoai/cloud bench/sandbox/sandbox.mjs 20 runs per row (isolation)
|
|
% hanzoai/cloud bench/pricing/pricing.mjs one run (rates, cited)
|
|
%
|
|
% Timing rows are the median over the runs; the range is carried separately so
|
|
% the paper can print it. Memory rows were identical on every run and carry no
|
|
% range.
|
|
|
|
% -- state at rest: SQLite, one row per agent
|
|
\renewcommand{\rFleetAgents}{1{,}000{,}000}
|
|
\renewcommand{\rFleetRecord}{367}
|
|
\renewcommand{\rFleetDisk}{454.6}
|
|
\renewcommand{\rFleetPer}{477}
|
|
\renewcommand{\rFleetWriteS}{3.2}
|
|
\renewcommand{\rFleetRate}{309{,}789}
|
|
\renewcommand{\rFleetResume}{0.034}
|
|
\renewcommand{\rFleetResumeCold}{3.42}
|
|
|
|
% -- execution at rest: one goroutine per agent
|
|
\renewcommand{\rGoSpawn}{125}
|
|
\renewcommand{\rGoSpawnLo}{123}
|
|
\renewcommand{\rGoSpawnHi}{133}
|
|
\renewcommand{\rGoPer}{601}
|
|
\renewcommand{\rGoHeap}{573.0}
|
|
\renewcommand{\rGoWake}{107}
|
|
\renewcommand{\rGoWakeLo}{107}
|
|
\renewcommand{\rGoWakeHi}{108}
|
|
|
|
% -- code: in-process runtimes
|
|
\renewcommand{\rWazero}{7.8}
|
|
\renewcommand{\rWazeroHi}{7.8}
|
|
\renewcommand{\rWazeroCall}{20}
|
|
\renewcommand{\rGoja}{2.4}
|
|
\renewcommand{\rGojaLo}{2.4}
|
|
\renewcommand{\rGojaHi}{2.4}
|
|
\renewcommand{\rGojaWarm}{740}
|
|
\renewcommand{\rGojaWarmLo}{726}
|
|
\renewcommand{\rGojaWarmHi}{742}
|
|
\renewcommand{\rGpython}{25.0}
|
|
\renewcommand{\rGpythonLo}{23.7}
|
|
\renewcommand{\rGpythonHi}{25.5}
|
|
|
|
% -- isolation: what it costs to get a boundary
|
|
\renewcommand{\rVeight}{0.13}
|
|
\renewcommand{\rVeightP}{0.15}
|
|
\renewcommand{\rVm}{309}
|
|
\renewcommand{\rVmP}{335}
|
|
\renewcommand{\rVmCkpt}{311}
|
|
\renewcommand{\rVmCkptP}{343}
|
|
\renewcommand{\rVmRatio}{2377}
|
|
|
|
% -- rates (cited, not measured)
|
|
\renewcommand{\rPlaneCost}{852}
|
|
\renewcommand{\rPlaneCpu}{14}
|
|
\renewcommand{\rPlaneRam}{56}
|
|
\renewcommand{\rFleetStorage}{0.01}
|