solana
solana copied to clipboard
Split out voting and banking threads in banking stage
Additionally this allows us to aggressively prune the buffer for voting threads as with the new vote state only the latest vote from each validator is necessary.
Problem
Summary of Changes
Fixes #
They should maybe have separate block compute limits too? Right now it seems that there is a potential for non-vote transaction compute to starve out votes due to non votes filling up block compute (see recent discussion in mb planning channel)
They should maybe have separate block compute limits too? Right now it seems that there is a potential for non-vote transaction compute to starve out votes due to non votes filling up block compute (see recent discussion in mb planning channel)
The priority details are being ripped out of vote txs. With this change vote threads and bank threads would compete to add to block however having some sort of separation might be interesting cc @taozhu-chicago .
Was bench-tps run to compare before/after this change?
Was bench-tps run to compare before/after this change?
Before
test bench_banking_stage_multi_accounts ... bench: 11,967,033 ns/iter (+/- 4,120,951)
test bench_banking_stage_multi_accounts_with_voting ... bench: 15,190,062 ns/iter (+/- 1,918,300)
test bench_banking_stage_multi_programs ... bench: 15,294,097 ns/iter (+/- 3,577,250)
test bench_banking_stage_multi_programs_with_voting ... bench: 22,088,729 ns/iter (+/- 2,597,948)
After
test bench_banking_stage_multi_accounts ... bench: 11,092,034 ns/iter (+/- 2,780,082)
test bench_banking_stage_multi_accounts_with_voting ... bench: 15,460,632 ns/iter (+/- 1,716,954)
test bench_banking_stage_multi_programs ... bench: 15,422,798 ns/iter (+/- 2,654,561)
test bench_banking_stage_multi_programs_with_voting ... bench: 21,099,046 ns/iter (+/- 1,589,215)