pageserver: single per-timeline variable backpressure signal #10116
Labels
a/performance
Area: relates to performance of the system
c/storage/pageserver
Component: storage: pageserver
Currently, the Pageserver backpressures the compute by sending a set of LSNs and having the compute calculate the backpressure. This has a few issues:
Instead, we should consider exposing a single backpressure signal to the compute: an integer specifying a bytes/second WAL append rate. When the compute appends to the WAL, it sleeps as:
sleep(size / rate)
-- we can optionally subtract the IO time if we want to have a more accurate rate. A rate of 0 means a full stall, a rate of <0 means no throttling. Different shards will compute different target rates, which should be taken into account.We could also simply do the backpressure on the Safekeeper, but that could allow the compute to build up a large WAL backlog locally.
The text was updated successfully, but these errors were encountered: