
What Does the Scheduler Do in Agave?
The scheduler is the brain of Solana's Transaction Processing Unit (TPU)
Key Responsibilities:
- Receives transactions - Ingests incoming transactions from the network via TPU
- Prioritizes by fees - Orders transactions based on priority fees (higher fees = higher priority)
- Detects conflicts - Identifies which transactions access the same accounts (read/write locks)
- Schedules execution - Assigns non-conflicting transactions to worker threads for parallel execution
- Maximizes throughput - Balances between batch size and parallelism to optimize block production
Current Schedulers in Agave:
# Central Scheduler (dependency graphs)
--block-production-method central-scheduler
# Greedy Scheduler (no graphs)
--block-production-method central-scheduler-greedy
Why Adaptive Scheduler?
Problem:
- Fixed schedulers can't adapt - Central scheduler builds dependency graphs (high overhead under load), greedy scheduler skips graphs but creates smaller batches
- No runtime flexibility - Current Agave requires validator restart to switch schedulers via
-block-production-method flag
- Different workloads need different strategies - High contention vs low contention scenarios benefit from different approaches
Solution: Adaptive Scheduling