Skip to content

Accessing local storage outside the container when reading objects #3411

@cthulhu-rider

Description

@cthulhu-rider

Is your feature request related to a problem? Please describe.

currently, SN object read (GET/HEAD/RANGE) handler always accesses local storage. If the object is present, SN does not access the container members

normally, SN outside the container does not store its objects on a permanent basis. There is a transitional state when SN, after the epoch change, leaves the container and begins to migrate data to a new location. The faster this is done, the more efficiently the cluster functions

in total:

  1. local lookup makes sense, and sometimes even necessary
  2. hitting an object is either completely impossible or possible, but the probability drops rapidly over time

i think all this makes unconditional touching of local storage impractical

Describe the solution you'd like

manage list of to-migrate containers for which SN stores data locally but does not belong to. Iff requested container is non-local and to-migrate one, skip local read

the list is update on:

  • SN init
  • new epoch in runtime
  • container migration finish

having this list, whole migration procedure may go faster. Afaik it is object-by-object now

Describe alternatives you've considered

no for now

Additional context

i've run 10m load to GET object of 4K payload size from REP 1 container through non-container SN. Here's cpu.pb.gz profile of proxy node. As we can see, local execution takes ~20% time

Metadata

Metadata

Assignees

No one assigned

    Labels

    I4No visible changesS3Minimally significantU3RegularenhancementImproving existing functionalityneofs-storageStorage node application issuesperformanceMore of something per second

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions