Do not save objects to metabase on PUT if writecache enabled #992
Labels
No labels
P0
P1
P2
P3
badger
frostfs-adm
frostfs-cli
frostfs-ir
frostfs-lens
frostfs-node
good first issue
triage
Infrastructure
blocked
bug
config
discussion
documentation
duplicate
enhancement
go
help wanted
internal
invalid
kludge
observability
perfomance
question
refactoring
wontfix
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: TrueCloudLab/frostfs-node#992
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Is your feature request related to a problem? Please describe.
How PUT works now (if writecache enabled):
Performance tests on hardware show that latency of saving to writecache and to metabase are almost the same. So for pretty small objects (8KB for example) total PUT latency = save to writecache latency + save to metabase latency.
Describe the solution you'd like
Writecache should be fast enough to read whole object. So maybe it is possible to change PUT algorithm:
I suppose to investigate the possibility of changing the PUT behavior as described, and if possible to implement it.
Important cases:
About expired/inhumed objects: can such objects be put by user? The only case I can think of is malicious actor or lagging storage node. In both cases "success" status shouldn't hurt anything.
Locking is different though, the returned status is important.
Crazy, but what if small objects are put directly to the metabase (i.e. no
CutPayload
)?And flushing is done from the metabase by some background thread.
The most important part for iteration is evacuation. During evacuation shard must be in
read-only
mode.