apple / apple/foundationdb

Don't require batch priority throttling during process failures

Open
#2,363 2 comments 2 reactions 0 assignees View on GitHub
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.