Skip to content

Add local targets #14

Open
fyrchik opened this issue Feb 24, 2023 · 3 comments
Open

Add local targets #14

fyrchik opened this issue Feb 24, 2023 · 3 comments
Labels
enhancement New feature or request

Comments

@fyrchik
Copy link

fyrchik commented Feb 24, 2023

Sometimes we want to perform benchmark on a filled cluster. Filling it with gRPC is fast, but not enough: we are talking about weeks, not hours. Writing a separate utility for this is a dead-end scenario IMO: it has only 1 use-case, maintenance costs are non-negligible, users need to learn yet another CLI interface (and, of course, inevitable bugs in the implementation).

The proposal is to use implement local client:

  1. Use engine from frostfs-node.
  2. Execute k6 on a target hardware using new local.js scenario.
  3. Policer/tree service sync will do the rest.

Pros:

  1. The results can be compared with gRPC results to see the overhead we have.
  2. Easily automated to test for regressions. Local benchmarks in the frostfs-node are not suitable for this: they are usually not long/big enough.
  3. S3 is also easily supported: engine exports all necessary machinery.

Cons:

  1. Harder to maintain compatibility: we need to update k6 each time engine is updated. However, it isn't impossible: the engine interface changes very rarely.
  2. Importing frostfs-node here is not aestethically pleasing IMO.

cc @anikeev-yadro @realloc @carpawell @alexvanin

@realloc
Copy link

realloc commented Feb 24, 2023

S3 is also easily supported: engine exports all necessary machinery.

Could you please clarify here a bit? Do you mean handling both tree service calls and storage engine calls in "S3-local" case?

@fyrchik
Copy link
Author

fyrchik commented Feb 28, 2023

Yes. Tree service is just a wrapper over the engine, we can work with pilorama directly.
The only difficulty is knowing the tree structure for a bucket, but our bench is simple enough (flat structure, single version).

@realloc
Copy link

realloc commented Feb 28, 2023

There is one more benchmark for versioned objects case where we put a loooong chain of versions for an object.
Ok. LGTM =)

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

2 participants