Pre-allocate memory in the replicator #463
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
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: TrueCloudLab/frostfs-node#463
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?
We read an object, we decompress it and just throw all the memory in the GC.
We can preallocate thread-local slice and read/decompress in them.
After TrueCloudLab/frostfs-api#9 it could even be made zero-alloc (for the uncompressed case).
We probably need to use workers instead of a pool here. The trickiest part here is to allow changing the number of workers depending on the load. May be we can remove this logic now: current implementation has some quirks. For example, using only half of
object.put.pool_size_remote
threads tells replicator that is node is 50% loaded, but in reality we could be putting lot's of big objects. This is hard to fix until we have proper queues.PutSingle
#531