frostfs-node/pkg/local_object_storage/metabase
Evgenii Stratonikov adf7ebab5b [#996] metabase: Speed up bucket creation
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:42:58 +00:00
..
children.go [#772] node: Apply gofumpt 2023-10-31 17:03:03 +03:00
containers.go [#373] metabase: Add metrics 2023-06-21 15:13:26 +03:00
containers_test.go Revert "[#972] Use require.ElementsMatch() where possible" 2024-02-19 15:36:01 +00:00
control.go [#959] node: Set mode to shard's components when open it 2024-02-09 14:04:01 +00:00
control_test.go [#895] test: Use t.Cleanup only for external resources 2024-01-11 12:32:09 +00:00
counter.go [#996] metabase: Speed up bucket creation 2024-02-20 15:42:58 +00:00
counter_test.go [#904] metabase: Return if object was actuall inserted 2024-01-17 19:04:39 +03:00
db.go [#496] node: Fix linter importas 2023-07-06 15:36:41 +03:00
db_test.go [#959] node: Set mode to shard's components when open it 2024-02-09 14:04:01 +00:00
delete.go [#964] metabase: Drop GC marks if object not found 2024-02-08 07:54:39 +00:00
delete_test.go [#964] metabase: Drop GC marks if object not found 2024-02-08 07:54:39 +00:00
errors.go [#481] Update frostfs-sdk-go and error pointer receivers 2023-08-09 10:26:53 +00:00
exists.go [#874] engine: Check object existance concurrently 2024-01-23 09:28:29 +03:00
exists_test.go [#895] test: Use t.Cleanup only for external resources 2024-01-11 12:32:09 +00:00
expired.go [#772] node: Apply gofumpt 2023-10-31 17:03:03 +03:00
expired_test.go [#895] test: Use t.Cleanup only for external resources 2024-01-11 12:32:09 +00:00
generic_test.go [#xx] Avoid manual management of files in tests 2023-08-14 14:01:39 +03:00
get.go [#481] Update frostfs-sdk-go and error pointer receivers 2023-08-09 10:26:53 +00:00
get_test.go [#895] test: Use t.Cleanup only for external resources 2024-01-11 12:32:09 +00:00
graveyard.go [#373] metabase: Add metrics 2023-06-21 15:13:26 +03:00
graveyard_test.go [#895] test: Use t.Cleanup only for external resources 2024-01-11 12:32:09 +00:00
index_test.go [#587] Do not use math/rand.Read 2023-08-09 16:02:44 +03:00
info.go [#2057] meta: Fix concurrent mode changes 2022-11-19 11:01:04 +03:00
inhume.go [#904] metabase: Log Inhume operation 2024-01-17 18:42:52 +03:00
inhume_test.go [#895] test: Use t.Cleanup only for external resources 2024-01-11 12:32:09 +00:00
iterators.go [#838] metabase: Count user objects 2023-12-06 15:44:21 +03:00
iterators_test.go [#895] test: Use t.Cleanup only for external resources 2024-01-11 12:32:09 +00:00
list.go [#825] policer: Do not drop required linking objects 2023-12-12 11:04:03 +00:00
list_test.go Revert "[#972] Use require.ElementsMatch() where possible" 2024-02-19 15:36:01 +00:00
lock.go [#772] node: Apply gofumpt 2023-10-31 17:03:03 +03:00
lock_test.go [#895] test: Use t.Cleanup only for external resources 2024-01-11 12:32:09 +00:00
metrics.go [#373] local storage: Pass parent ID 2023-06-21 15:13:26 +03:00
mode.go [#959] node: Set mode to shard's components when open it 2024-02-09 14:04:01 +00:00
mode_test.go [#959] node: Set mode to shard's components when open it 2024-02-09 14:04:01 +00:00
movable.go [#446] los: Wrap SSD errors in a separate type 2023-06-16 14:53:31 +03:00
movable_test.go [#895] test: Use t.Cleanup only for external resources 2024-01-11 12:32:09 +00:00
put.go [#996] metabase: Speed up bucket creation 2024-02-20 15:42:58 +00:00
put_test.go [#895] test: Use t.Cleanup only for external resources 2024-01-11 12:32:09 +00:00
select.go [#547] metabase: Fix datarace in tests 2023-07-31 15:35:15 +00:00
select_test.go [#895] test: Use t.Cleanup only for external resources 2024-01-11 12:32:09 +00:00
shard_id.go [#96] node: Drop neo-go's slices package 2023-11-17 13:24:04 +03:00
storage_id.go [#96] node: Drop neo-go's slices package 2023-11-17 13:24:04 +03:00
storage_id_test.go [#895] test: Use t.Cleanup only for external resources 2024-01-11 12:32:09 +00:00
util.go [#763] metabase: Add container objects counter 2023-11-08 12:30:57 +03:00
version.go Rename package name 2023-03-07 16:38:26 +03:00
VERSION.md [#83] pre-commit: Add initial configuration 2023-03-13 07:07:29 +00:00
version_test.go [#959] node: Set mode to shard's components when open it 2024-02-09 14:04:01 +00:00