Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Only send flushes when Downstairs is idle; send Barrier otherwise #1505

Open
wants to merge 5 commits into
base: main
Choose a base branch
from

Conversation

mkeeter
Copy link
Contributor

@mkeeter mkeeter commented Oct 14, 2024

This PR removes automatic flushes, per RFD 518. Instead, the new Barrier operation is sent. If the system is idle for a particular amount of time, we send a final Flush to put everything into a known state.

When the Upstairs retires jobs after a barrier operation, the system as a whole becomes ineligible for replay. This state determines whether the new Downstairs reconnects through Offline (which does replay) or Faulted (which does live-repair instead).

Removing automatic flushes is a noticeable performance improvement:

Screenshot 2024-10-11 at 11 06 26 AM

(tested on the London mini-cluster, with Upstairs and 3x Downstairs on different sleds)

region info:
  block size:      4096 bytes
  blocks / extent: 16384
  extent size:     64 MiB
  extent count:    2048
  total blocks:    33554432
  total size:      128 GiB
  encryption:      yes

@mkeeter mkeeter requested review from jmpesp and leftwo October 14, 2024 17:54
@mkeeter mkeeter force-pushed the mkeeter/no-auto-flush branch 2 times, most recently from b0c092b to 3a7e2f8 Compare October 15, 2024 20:40
@mkeeter mkeeter changed the base branch from main to mkeeter/io-state-job-and-byte-count October 15, 2024 20:40
@mkeeter
Copy link
Contributor Author

mkeeter commented Oct 15, 2024

Rebased to stage on top of #1507, because we want to only send Barrier operations if there's enough bytes / jobs buffered (which requires keeping track!)

@mkeeter mkeeter force-pushed the mkeeter/io-state-job-and-byte-count branch from 7b7ec22 to 1e4cc53 Compare October 16, 2024 13:48
Base automatically changed from mkeeter/io-state-job-and-byte-count to main October 16, 2024 14:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant