go-algorand icon indicating copy to clipboard operation
go-algorand copied to clipboard

perf: batch verification for agreement votes

Open algorandskiy opened this issue 2 years ago • 3 comments

Summary

Agreement vote verify worker could use batch verification when enough votes are available. Estimated perf boost ~2.4x in agreement vote verification.

Speeding up vote verification would speed up block validation.

  • Block validation takes ~X seconds
  • Batch verifying votes would speed up block validation by Y%, freeing up Z seconds of round time

Research phase

  1. Obtain node.log from relays.
  2. Figure out number of step 1 and step 2 votes relay receive in a round, build a histogram to see if 10ms batching makes sense.
  3. Check a single vote verification time.
  4. Estimate current CPU usage vs proposed with batching.

Acceptance

  1. Add a new unit test
  2. Benchmark two scenarios: low load, high load
  3. Existing e2e tests pass
  4. Run a participation TestNet or BetaNet node and ensure it progresses

algorandskiy avatar Oct 11 '22 19:10 algorandskiy

Phase 1: https://app.zenhub.com/workspaces/algorand-main-workspace-5ea71fda6d554d53dda36f16/issues/gh/algorand/go-algorand-internal/2777

algonautshant avatar Feb 10 '23 18:02 algonautshant

Phase 2: https://app.zenhub.com/workspaces/algorand-main-workspace-5ea71fda6d554d53dda36f16/issues/gh/algorand/go-algorand-internal/2778

algonautshant avatar Feb 11 '23 00:02 algonautshant

Phase 3: https://github.com/algorand/go-algorand/pull/5222

jsgranados avatar May 01 '23 18:05 jsgranados