metabase: Speed up bucket creation #996

Merged
fyrchik merged 1 commit from fyrchik/frostfs-node:fix-metabase into master 2024-02-20 15:42:59 +00:00

1 commit

Author SHA1 Message Date
9db82319aa [#996] metabase: Speed up bucket creation
All checks were successful
Vulncheck / Vulncheck (pull_request) Successful in 4m56s
DCO action / DCO (pull_request) Successful in 5m1s
Build / Build Components (1.21) (pull_request) Successful in 6m26s
Build / Build Components (1.20) (pull_request) Successful in 6m41s
Tests and linters / Lint (pull_request) Successful in 8m14s
Tests and linters / Staticcheck (pull_request) Successful in 8m5s
Tests and linters / Tests (1.21) (pull_request) Successful in 10m13s
Tests and linters / Tests (1.20) (pull_request) Successful in 12m50s
Tests and linters / Tests with -race (pull_request) Successful in 13m44s
Most of the time it exits, e.g. when it is per-container and use on each
object PUT. Bbolt implementation first tries to create bucket and then
returns it if it exists. Create operation uses cursor and thus is not
very lightweight, we can avoid it.

```
goos: linux
goarch: amd64
pkg: git.frostfs.info/TrueCloudLab/frostfs-node/pkg/local_object_storage/metabase
cpu: 11th Gen Intel(R) Core(TM) i5-1135G7 @ 2.40GHz
                 │     old     │                new                 │
                 │   sec/op    │   sec/op     vs base               │
Put/parallel-8     174.4µ ± 3%   163.3µ ± 3%  -6.39% (p=0.000 n=10)
Put/sequential-8   263.3µ ± 2%   259.0µ ± 1%  -1.64% (p=0.000 n=10)
geomean            214.3µ        205.6µ       -4.05%

                 │     old      │                 new                 │
                 │     B/op     │     B/op      vs base               │
Put/parallel-8     275.3Ki ± 3%   281.1Ki ± 4%       ~ (p=0.063 n=10)
Put/sequential-8   413.0Ki ± 2%   426.6Ki ± 2%  +3.29% (p=0.003 n=10)
geomean            337.2Ki        346.3Ki       +2.70%

                 │     old     │                 new                 │
                 │  allocs/op  │  allocs/op   vs base                │
Put/parallel-8      678.0 ± 1%    524.5 ± 2%  -22.64% (p=0.000 n=10)
Put/sequential-8   1.329k ± 0%   1.183k ± 0%  -10.91% (p=0.000 n=10)
geomean             949.1         787.9       -16.98%
```

Signed-off-by: Evgenii Stratonikov <e.stratonikov@yadro.com>
2024-02-20 15:43:21 +03:00