Correction to #14, found on the first hour of live data.
miner_stale_hashes_total was recorded in the QUIC loop for every result whose job id no longer matched the current one. That is every cancelled search, because a worker interrupted by a new job reports the whole search under the old id. On benjy it flagged 18.3 G of 24.7 G hashes as stale, 74 percent, which is the loop's notion of a stale result and not wasted work: those hashes were done while the job was current.
The wasted work is the batch that completes after the job was superseded, at most one per job switch per worker. That is now recorded in the engine at the cancellation check, per device and kernel, and the loop-level accounting is gone. Expected value is about one batch per job, so with 1M batches at 144 MH/s roughly 7 ms of work per job switch. This is the number #6 trades against batch size.
Label change: miner_stale_hashes_total{engine} becomes miner_stale_hashes_total{device, kernel}. The rule quantus:stale_hash_fraction:rate1h sums by instance and is unaffected.
clippy, fmt and tests clean. The bench workflow runs on this PR since engine-gpu changed.
Correction to #14, found on the first hour of live data.
`miner_stale_hashes_total` was recorded in the QUIC loop for every result whose job id no longer matched the current one. That is every cancelled search, because a worker interrupted by a new job reports the whole search under the old id. On benjy it flagged 18.3 G of 24.7 G hashes as stale, 74 percent, which is the loop's notion of a stale *result* and not wasted work: those hashes were done while the job was current.
The wasted work is the batch that completes after the job was superseded, at most one per job switch per worker. That is now recorded in the engine at the cancellation check, per device and kernel, and the loop-level accounting is gone. Expected value is about one batch per job, so with 1M batches at 144 MH/s roughly 7 ms of work per job switch. This is the number #6 trades against batch size.
Label change: `miner_stale_hashes_total{engine}` becomes `miner_stale_hashes_total{device, kernel}`. The rule `quantus:stale_hash_fraction:rate1h` sums by instance and is unaffected.
clippy, fmt and tests clean. The bench workflow runs on this PR since engine-gpu changed.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
https://claude.ai/code/session_01CBgs2nSi4H2mdh8kD8vMX5
miner_stale_hashes_total was recorded in the QUIC loop for every result whose
job id no longer matched, which is every cancelled search: 74% of all hashes
on benjy flagged as stale on the first hour of data. That is the loop's
notion of a stale *result*, not wasted work; the hashes were done while the
job was current.
The wasted work is the batch that completes after the job was superseded.
Record that in the engine at the cancellation check, per device and kernel,
and drop the loop-level accounting. Expect one batch per job switch.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CBgs2nSi4H2mdh8kD8vMX5
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Correction to #14, found on the first hour of live data.
miner_stale_hashes_totalwas recorded in the QUIC loop for every result whose job id no longer matched the current one. That is every cancelled search, because a worker interrupted by a new job reports the whole search under the old id. On benjy it flagged 18.3 G of 24.7 G hashes as stale, 74 percent, which is the loop's notion of a stale result and not wasted work: those hashes were done while the job was current.The wasted work is the batch that completes after the job was superseded, at most one per job switch per worker. That is now recorded in the engine at the cancellation check, per device and kernel, and the loop-level accounting is gone. Expected value is about one batch per job, so with 1M batches at 144 MH/s roughly 7 ms of work per job switch. This is the number #6 trades against batch size.
Label change:
miner_stale_hashes_total{engine}becomesminer_stale_hashes_total{device, kernel}. The rulequantus:stale_hash_fraction:rate1hsums by instance and is unaffected.clippy, fmt and tests clean. The bench workflow runs on this PR since engine-gpu changed.
🤖 Generated with Claude Code
https://claude.ai/code/session_01CBgs2nSi4H2mdh8kD8vMX5
quantus-bench
20749c622bon benjy.hanzalova.internaltotal median: 143.99 MH/s (batch 1000000, 5 x 30s, engine gpu-wgpu)
--- resume miner ---
active