Parallelize background tree service sync #166

Closed
opened 2023-03-23 12:44:15 +00:00 by fyrchik · 1 comment
Owner

Currently we iterate over all container nodes starting from the same height.
Let's say i-th node returned log up to h_i height.
Then we take min(h_i) and store it in the database as the next point.

There are 2 opportunities for synchronization here:

  1. Process container nodes in parallel. This should allow us merging operations streams from GetOpLog() to process each height exactly once.
  2. Perform TreeApply() in parallel. This is a bit more difficult, but it allows to speed up synchronization by a lot. So basically we will have 3 components:
  • Workers which receive GetOpLog operations.
  • Worker which merges multiple stream into one stream of strictly increasing log operations
  • Workers which apply operations to the local storage.

I suggest starting with (1) and do (2) separately.

Currently we iterate over all container nodes starting from the same height. Let's say i-th node returned log up to h_i height. Then we take min(h_i) and store it in the database as the next point. There are 2 opportunities for synchronization here: 1. Process container nodes in parallel. This should allow us merging operations streams from GetOpLog() to process each height exactly once. 2. Perform TreeApply() in parallel. This is a bit more difficult, but it allows to speed up synchronization by a lot. So basically we will have 3 components: - Workers which receive `GetOpLog` operations. - Worker which merges multiple stream into one stream of strictly increasing log operations - Workers which apply operations to the local storage. I suggest starting with (1) and do (2) separately.
fyrchik added the
enhancement
triage
labels 2023-03-23 12:44:15 +00:00
aarifullin was assigned by fyrchik 2023-03-23 12:44:21 +00:00
fyrchik added this to the v0.37.0 milestone 2023-04-11 08:22:53 +00:00
fyrchik added
frostfs-node
and removed
triage
labels 2023-04-14 09:11:00 +00:00
Author
Owner

Closed via #235.

Closed via #235.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: TrueCloudLab/frostfs-node#166
No description provided.