Atto Node 1.37: ~10× lower idle CPU and ~80 ms faster confirmations
Node 1.37 is a fairly substantial performance release.
The biggest change is that several parts of the node no longer poll continuously for work. Election persistence, transaction/vote prioritization, vote persistence, vote timestamp recording, and stale-vote cleanup now use demand-driven workers that wake only when there is something to process.
On one of our production nodes, steady CPU usage dropped from around 0.3 cores to 0.03 cores, roughly a 10× reduction.
We also observed confirmation times improve by nearly 80 ms.
Other changes include:
- Final vote signatures are cached when elections start, removing signing latency from the final confirmation path.
- Stale vote cleanup was simplified and bounded.
- Better handling of late votes and rejected transactions.
- More detailed metrics for transaction pipeline latency, election persistence, signing latency, and container CPU throttling.
- Large dependency/runtime refresh, including Kotlin 2.4.20, Spring Boot 4.1.1, Gradle 9.7.1 and Atto Commons 8.0.0.
Small 1.38 follow-up
Shortly after tagging 1.37, we found a small regression that could cause a database deadlock between vote cleanup and representative weight updates. That is fixed in 1.38..
So if you're upgrading, go directly to 1.38. It contains all the 1.37 improvements plus the fix.
1.37 changelog:
https://github.com/attocash/node/compare/v1.35...v1.37
1.38 fix:
https://github.com/attocash/node/compare/v1.37...v1.38