forked from TrueCloudLab/frostfs-node
[#1024] shard: Add refill metabase benchmark
Signed-off-by: Dmitrii Stepanov <d.stepanov@yadro.com>
This commit is contained in:
parent
76398c06b0
commit
1005bf4f56
1 changed files with 72 additions and 0 deletions
72
pkg/local_object_storage/shard/refill_test.go
Normal file
72
pkg/local_object_storage/shard/refill_test.go
Normal file
|
@ -0,0 +1,72 @@
|
||||||
|
package shard
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"os"
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"git.frostfs.info/TrueCloudLab/frostfs-node/pkg/local_object_storage/internal/testutil"
|
||||||
|
oidtest "git.frostfs.info/TrueCloudLab/frostfs-sdk-go/object/id/test"
|
||||||
|
"github.com/stretchr/testify/require"
|
||||||
|
)
|
||||||
|
|
||||||
|
func BenchmarkRefillMetabase(b *testing.B) {
|
||||||
|
b.Run("100 objects", func(b *testing.B) {
|
||||||
|
benchRefillMetabase(b, 100)
|
||||||
|
})
|
||||||
|
|
||||||
|
b.Run("1000 objects", func(b *testing.B) {
|
||||||
|
benchRefillMetabase(b, 1000)
|
||||||
|
})
|
||||||
|
|
||||||
|
b.Run("2000 objects", func(b *testing.B) {
|
||||||
|
benchRefillMetabase(b, 2000)
|
||||||
|
})
|
||||||
|
|
||||||
|
b.Run("5000 objects", func(b *testing.B) {
|
||||||
|
benchRefillMetabase(b, 5000)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
func benchRefillMetabase(b *testing.B, objectsCount int) {
|
||||||
|
sh := newShard(b, false)
|
||||||
|
defer func() { require.NoError(b, sh.Close()) }()
|
||||||
|
|
||||||
|
var putPrm PutPrm
|
||||||
|
|
||||||
|
for i := 0; i < objectsCount/2; i++ {
|
||||||
|
obj := testutil.GenerateObject()
|
||||||
|
testutil.AddAttribute(obj, "foo", "bar")
|
||||||
|
testutil.AddPayload(obj, 1<<5) // blobvnicza tree obj
|
||||||
|
|
||||||
|
putPrm.SetObject(obj)
|
||||||
|
|
||||||
|
_, err := sh.Put(context.Background(), putPrm)
|
||||||
|
require.NoError(b, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
for i := 0; i < objectsCount/2; i++ {
|
||||||
|
obj := testutil.GenerateObject()
|
||||||
|
testutil.AddAttribute(obj, "foo", "bar")
|
||||||
|
obj.SetID(oidtest.ID())
|
||||||
|
testutil.AddPayload(obj, 1<<20) // fstree obj
|
||||||
|
|
||||||
|
putPrm.SetObject(obj)
|
||||||
|
|
||||||
|
_, err := sh.Put(context.Background(), putPrm)
|
||||||
|
require.NoError(b, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
require.NoError(b, sh.Close())
|
||||||
|
require.NoError(b, os.Remove(sh.metaBase.DumpInfo().Path))
|
||||||
|
|
||||||
|
require.NoError(b, sh.Open(context.Background()))
|
||||||
|
sh.cfg.refillMetabase = true
|
||||||
|
|
||||||
|
b.ReportAllocs()
|
||||||
|
b.ResetTimer()
|
||||||
|
|
||||||
|
require.NoError(b, sh.Init(context.Background()))
|
||||||
|
|
||||||
|
require.NoError(b, sh.Close())
|
||||||
|
}
|
Loading…
Reference in a new issue