Skip to content

Give up on an engine only when it has never run on this machine - #82

Merged
tamnd merged 1 commit into
mainfrom
prove-the-engine-runs
Sep 10, 2026
Merged

tamnd merged 1 commit into
mainfrom
prove-the-engine-runs

Conversation

@tamnd

@tamnd tamnd commented Sep 10, 2026

Copy link
Copy Markdown
Owner

The 32 core box stopped at 45 cells of 60 after #81 was deployed to it, and its own sweep log says why.

bench_yo-threads_16-pipeline_10-perf_no-run_2.json failed: on the sets pass the first of 16 load generator threads finished after 3.761 seconds where the last took 31.477
yo has failed 3 times in a row, so the rest of its cells are being left rather than failing one at a time for the next day
swept 60 cells in 3m 19s: 0 measured here, 45 already on disk, 3 failed, 11 left alone because their engine was given up on, 1 left alone after 4 tries each

GIVE_UP fires before TRIES ever can. The five runs of one shape are consecutive in the matrix order, so a shape that box cannot measure is three failures in a row on the third run, the engine goes down, and the eleven cells after it are never attempted. The count from #81 needs four full sweeps to bite and the engine is gone after one.

The rule was written for an engine the machine cannot run at all, where attempting a thousand cells to learn that costs a day. That is a real case and it stays. What tells the two apart is whether the engine has ever produced a cell here. One on the disk, or one measured in this session, and the failures are about a shape rather than about the engine, so the sweep walks on. The cost of walking on is one run for each remaining bad cell, once, because the attempt count then leaves those cells alone on the next sweep. The cost of not walking on is a sweep that stops at the same place however many times it is restarted.

put_down is the whole decision and it has its own test. whats_left collects the engines with a cell already on the disk, which is what makes this work on a restart rather than only within one session.

Three failures in a row put a whole engine down for the session, which is right for an engine the machine cannot run and wrong for an engine that runs fine and has one shape this machine cannot measure. The five runs of a shape sit next to each other in the matrix order, so a bad shape reads as three in a row and takes the other nine hundred cells with it.

A cell on the disk, or one measured in this session, is proof the engine runs here. With that proof the sweep walks past the bad shape and pays one run for each of its cells, once, because the attempt count added in #81 leaves them alone on the next sweep.
@tamnd tamnd added core Types, the JSON model, config and hardware profiles cli The cache-bench binary and its subcommands host Hardware profiles, host setup, machine specific problems labels Sep 10, 2026
@tamnd
tamnd merged commit f042d86 into main Sep 10, 2026
14 checks passed
@tamnd
tamnd deleted the prove-the-engine-runs branch September 10, 2026 10:21
@tamnd tamnd mentioned this pull request Sep 10, 2026
8 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

cli The cache-bench binary and its subcommands core Types, the JSON model, config and hardware profiles host Hardware profiles, host setup, machine specific problems

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant