Don't require batch priority throttling during process failures
- Dominant language
- C++
- Stars
- 16.7k
- Forks
- 1.6k
- Avg merge
- 1d 20h
- Merged PRs (30d)
- 126
Description
The batch priority queue thresholds are currently set such that they are lower than the transaction log spill threshold, which means that batch priority transactions will be stopped during process failures. This was chosen such that users would have the freedom to run heavy batch workloads while minimizing the risk of that workload pushing us into constant spilling, which historically had been a non-trivial performance burden.
Because process failures aren't particularly rare, it does mean that batch priority work may be being throttled too frequently. It's not necessarily bad to have this type of work be stopped occasionally, such that it demonstrates the contract that we provide (i.e. we give the client experience with operating in this mode to confirm they handle it properly), but done too frequently it can hinder the ability to get batch work done.
With recent changes to the spilling logic, it may be the case that we would no longer be concerned with constant spilling due to a heavy batch load and we could adjust the thresholds accordingly. Alternatively, we could change the spill policy to better reflect the fact that we don't need to spill in response to a saturating load (relying instead on ratekeeper to push back).
Contributor guide
Research direction
Start by tracing the batch priority queue thresholds, transaction log spill threshold, recent spilling logic, and ratekeeper behavior described in the issue. Determine whether threshold changes or a revised spill policy best prevents unnecessary throttling during process failures, and validate that batch workloads still receive the intended protection from constant spilling.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp
- Domain
- databases, distributed-systems, performance
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100