Hash-rewrite holding (0 mismatches); one regression-shaped item to watch — a py3.13-only step on both SC-PV machines. Daily monitoring digest for the public Newton ASV benchmark fleet — for review, not a decision report. Weekend catch-up: Fri 07-24 → Mon 07-27.
Benchmark check 2026-07-27 (Dylan) Catching the thread up across the weekend — covers Friday's hash-rewrite (posted about it here at the time, while Alain's out) plus today. One thing needs eyes; the rest is clean or expected. Friday recap: ran the hash-rewrite across all three boundaries in one commit (0bf74a7a) — merged #3566 (a051c39a) + #3575 (38c44beb) + #3409 (44cb76b1, HeightfieldCollision). Mismatch count went to 0. KitchenG1 stayed hard-excluded (deliberate version="2" workload fix — the pre-v2 series accidentally skipped the kitchen scene, so the old numbers were the wrong ones), and NotifyDRLegs.time_notify_shape_properties was deferred (coherent boundary step, not enough post-change data to call). Both recorded as comments in replace_hash.sh so they don't get re-litigated. :eyes: py3.13-only slowdown on both SC-PV machines from the 07-24 snapshot — this is the one to look at. Three unrelated benchmarks step up together and hold two points (07-24, 07-25): - HeightfieldCollision.time_simulate +25–30% (SC-PV-02 0.084→0.105, SC-PV-10 0.079→0.103) - FastInverseDynamics.time_eval_inverse_dynamics_force +30–35% (SC-PV-02 0.41→0.54, SC-PV-10 0.39→0.53) - NotifyDRLegs.time_notify_shape_properties ~+53% (the deferred one, same boundary) py3.12 is dead flat on the exact same newton commits — SC-PV-02 ran 19f8e33b on both envs, py3.12 unchanged and py3.13 stepped — and thor/orin are flat. So this is NOT a newton regression, it's the py3.13 virtualenv. asv isn't recording pinned deps in the result files so I can't name the package from the data; most likely a nightly wheel that refreshed in the py3.13 env on the SC-PV runners on 07-24. SC-PV-10 has shown this pair bimodal before (brief high mode on 07-17), so it may revert. Plan: watch the next 1–2 SC-PV py3.13 runs — if it holds, someone should diff what changed in the py3.13 venv on those runners on 07-24. Holding off #newton-dev until I have the revert/hold signal. :white_check_mark: model_properties improvement confirmed — the mid-series drop I flagged is real and expected, not a glitch. NotifyDRLegs.time_notify_model_properties is ~4–8x faster on every reporting machine at the 07-22→07-23 boundary, bracket (fda8c48f, 9e85e577], Kamino cluster. #3606 (simplify Kamino gravity to alias Newton vectors) is the cause — aliasing instead of copying means less to push on a model-property notify. New metric, starts fresh, no merge decision. :white_check_mark: hash-rewrite holding — sweep HASH MISMATCH count is 0 today, no residual. KitchenG1 still shows up as the top +2x flag in the sweep but that's the excluded v2 workload fix, not a regression. :warning: machine health — L40S has gone quiet, last data 07-22 (now flagged at 4 days). orin also hasn't produced a new snapshot since 07-23. SC-PV-02/10 and thor are current through 07-25. GB10 still silent 33 days (last 06-23) — same standing issue, predates everything, separate. :information_source: carry-overs, no action: CpuMuJoCoAnt orin creep is holding at +8% (3.82 at 07-23), no new orin data to move it — still watching, not classifiable yet. ContactPyramidDefaults orin is back at baseline (0.196), staying resolved. Minor new one: FastExampleCablePile +5% at the 07-23 boundary on both py envs + orin (thor flat) — cross-env so newton-side, low magnitude, just noting it. @Viktor @Tobias — the new metric series (p95 step, realtime factor, steady-state GPU mem, solver niter) have fully landed and are stable; the appeared/hash churn from them will keep aging out over the next week. Reminder on the higher-is-better ones (realtime factor, steps/sec): the sweep reads a ratio <1 as an "improvement", so track the reciprocal — a drop in realtime factor is the regression direction, not a win.
0bf74a7a) merged all three boundaries —
#3566 (a051c39a),
#3575 (38c44beb), and
#3409 (44cb76b1,
HeightfieldCollision). Today the sweep’s HASH MISMATCH count is 0, no
residual. KitchenG1 stayed hard-excluded (version="2" workload fix) and
NotifyDRLegs.time_notify_shape_properties stayed deferred — both recorded as comments
in replace_hash.sh.HeightfieldCollision.time_simulate
+25–30%, FastInverseDynamics.time_eval_inverse_dynamics_force +30–35%, and
NotifyDRLegs.time_notify_shape_properties ~+53%. py3.12 is dead flat on the
identical newton commit (SC-PV-02 ran 19f8e33b on both envs), so this is the
py3.13 virtualenv, not a product change. See the item below.model_properties improvement is confirmed and expected.
NotifyDRLegs.time_notify_model_properties is ~4–8x faster on every
reporting machine at the 07-22→07-23 boundary — bracket (fda8c48f, 9e85e577], a
Kamino cluster with #3606 (simplify
Kamino gravity to alias Newton vectors) as the cause. New metric, starts fresh, no merge decision.L40S has gone quiet
(last data 07-22, now flagged at 4 days) and orin hasn’t produced a new snapshot
since 07-23. SC-PV-02/10 and thor are current through 07-25. GB10 still silent (33 days)
— unchanged standing issue.CpuMuJoCoAnt orin creep holding at
+8% (no new orin data); ContactPyramidDefaults orin back at baseline (staying resolved);
one minor new step, FastExampleCablePile +5% at the 07-23 boundary (cross-env, so
newton-side, low magnitude). Warp still 1.16.0.dev20260716.| Machine | Last data | Status |
|---|---|---|
| SC-PV-02 | 07-25 (402d8eac) |
OK |
| SC-PV-10 | 07-25 (402d8eac) |
OK |
| jetson_agx_thor | 07-25 (402d8eac) |
OK |
| jetson_agx_orin | 07-23 (77b846e0) |
OK — but no new snapshot in 4 days; watching |
| adenzler-horde-L40S | 07-22 (4a6e036f) |
silent 4 days — newly flagged; was current Friday |
| SC-PV-SPARK-PS-07 (GB10) | 2026-06-23 | still silent 33 days — standing issue, predates everything, separate |
Three unrelated benchmarks step up together on py3.13 only, on both SC-PV machines, at the 07-24 snapshot boundary, and hold two points (07-24, 07-25):
HeightfieldCollision.time_simulate — SC-PV-02 0.0838→0.105 (+25%),
SC-PV-10 0.0794→0.103 (+30%).FastInverseDynamics.time_eval_inverse_dynamics_force — SC-PV-02 0.411→0.538
(+31%), SC-PV-10 0.395→0.530 (+34%).NotifyDRLegs.time_notify_shape_properties — SC-PV-02/10 py3.13 ~1.53e-4→~2.4e-4
(~+53%); this is the boundary step deferred on Friday, same 07-24 boundary.Not a newton regression. py3.12 is dead flat on the identical newton
commit — SC-PV-02 ran 19f8e33b (#3640,
a CI-gate change) on both envs; py3.12 unchanged, py3.13 stepped. thor and orin (py3.12) are flat
too. The only variable is the Python environment, so the cause is the py3.13 virtualenv on the
SC-PV runners — most likely a nightly wheel that refreshed there on 07-24. asv does not record
pinned dependency versions in these result files (requirements/env_vars
are empty), so the specific package can’t be pinned from the data.
Caveat: on SC-PV-10 this pair has shown a brief high mode before (07-17, at a snapshot boundary), so an env-rebuild / cold-start artifact that reverts is still on the table. SC-PV-02’s pre-07-24 series is flat, and the step holds two points on both machines.
#newton-dev until there’s a hold/revert signal.
0bf74a7a merged
the #3566 /
#3575 /
#3409 boundaries; today’s sweep
reports no HASH MISMATCH lines. No new boundaries appeared over the weekend.FastKitchenG1.track_simulate is intentionally NOT merged — version="2"
workload fix (pre-v2 accidentally omitted the kitchen scene). Documented as an exclusion comment in
replace_hash.sh; the sweep still lists it as the top +2x flag but it is not a
regression.NotifyDRLegs.time_notify_shape_properties was deferred on Friday; its boundary step is
now part of the py3.13 07-24 cluster above. Stays deferred pending the env question.track_p95_step_time, track_real_time_factor,
track_steady_state_gpu_memory, track_solver_niter_*,
FastMetrics* classes, the teleop suite
(#3269), implicit MPM
ImplicitMPMSingleWorld.time_step
(#3411). All hash-stable and still
showing as “appeared” only because their baseline window is filling. Appearance/level is
not a perf signal.bench_mujoco.Fast*.time_simulate (now 1 machine/env — the stale L40S snapshot;
removed by #3416) and
FastSensorTiledCamera.time_rendering_pixel_priority_* (documented exclusion,
tiled-camera #3480). No action.Six findings. One is a regression-shaped watch (the py3.13 env step); one is a confirmed improvement; one is a carry-over watch; one is resolved; one is a minor new step; one is a known excluded workload fix.
The day’s only regression-shaped signal — see the Needs a look item above for the
full detail. HeightfieldCollision.time_simulate +25–30%,
FastInverseDynamics.time_eval_inverse_dynamics_force +30–35%, and
NotifyDRLegs.time_notify_shape_properties ~+53%, all py3.13, both SC-PV, holding two
points. py3.12 flat on the identical newton commit ⇒ py3.13 virtualenv, not newton. Deps not
recorded in the result files; watching for revert vs hold.
NotifyDRLegs.time_notify_model_properties ~4–8x faster
The mid-series drop flagged for follow-up, now characterized. Steps down at the 07-22→07-23
boundary on every reporting machine: SC-PV-02 2.8e-5→6.6e-6 (py3.12) / 3.7e-5→5.9e-6
(py3.13), SC-PV-10 similar, thor 8.1e-5→9.8e-6, orin 1.4e-4→1.7e-5. thor still ran high at
fda8c48f, which narrows the bracket to (fda8c48f, 9e85e577] — a Kamino
cluster. #3606 (simplify
Kamino gravity to alias Newton vectors) is the mechanism: aliasing instead of copying means
less to push on a model-property notify. New metric, starts fresh — reported as an improvement, no
merge decision.
CpuMuJoCoAnt slow creep on orin, holding +8%
Unchanged from Friday: two small steps (3.55→3.71 at 07-14, 3.71→3.87 across the 07-15→07-20 gap), latest 3.82 at 07-23. orin has produced no new snapshot since, so there’s nothing to move it. Weak echoes on thor / SC-PV-02 py3.13. Still small, still one CPU benchmark, still not classifiable — keeping open.
FastExampleContactPyramidDefaults at baseline
Latest point 0.196 (07-23) sits at the ~0.191 baseline. The 1.07x sweep flag is only the 07-20/21 post-outage elevation (0.209/0.213) still inside the recent-2 window; it will age out as orin runs again. Staying resolved.
FastExampleCablePile.time_simulate +5% at the 07-23 boundary
Small step at the 07-22→07-23 boundary on both py3.12 and py3.13: SC-PV-02
0.124→0.130 / 0.132→0.139, SC-PV-10 0.123→0.129 / 0.133→0.137, orin 0.296→0.321;
thor flat. Because it hits both Python envs it is newton-side, not the py3.13 env
issue — bracket (a051c39a, 6de960ac]. Low magnitude (+5%); noting it, holding for more
points.
FastKitchenG1.track_simulate [512] +2x, all machines
Still the top sweep flag (1.44–2.06x across machines), still the deliberate
version="2" workload fix — the pre-v2 series omitted the kitchen scene, so the new
numbers are the first correct ones. Hard-excluded from any history merge; the exclusion is recorded
in replace_hash.sh. Not a regression.
setup.bench_model.{Fast,Kpi}Initialize{Solver,Model,ViewerGL} flags up to 1.32x
(SC-PV-02/10) — known bimodal init series, high spreads (x1.38–x15.78), OSCILLATING/NOISY
tags, directions disagree across params. The mirror-image 0.68–0.90x “improvement”
flags on the same benchmarks are the #3415
batch-ModelBuilder cluster aging through short baselines.CpuMuJoCoAnt 1.26x SC-PV-10 py3.12 / 1.07x SC-PV-02 py3.12 — spread x1.41–x16.27,
cold-start contamination; the genuine residual is tracked as finding 3 (orin).time_render_* 0.86–0.94x everywhere — the #3415 improvement family
aging through short baselines; no new movement. time_rendering_pixel_priority_*
remains the documented tiled-camera exclusion.SlowExample* compile-load flags 1.05–1.11x / 0.95x — single-shot compile
benchmarks, ±15% jitter, oscillating, directions disagree across machines.CpuIKFranka 1.06x SC-PV-10 py3.12, FastViewerGL 1.13x, FastBuildSdf
1.05–1.06x — short windows / bimodal, recent values inside the historical envelope.KpiDRLegs.track_simulate 0.84–0.95x and FastDRLegs orin 0.94x — the
carry-over kamino improvement (warp 1.16 / #3557),
already classified; still at the improved level.FastAllegro.track_simulate orin 0.61x / FastHumanoid.track_simulate orin
0.93x — aging steps plus wide jetson track-metric spread (x1.66); flat since mid-July on the
stable machines.