neofs-node icon indicating copy to clipboard operation
neofs-node copied to clipboard

Cache storage policy application results (`Get`/`Head`/`GetRange`)

Open cthulhu-rider opened this issue 7 months ago • 1 comments

  • continues #2892

i created 2 containers with 5 object in each and ran 30 routines sending 1000 GET queries (each time random object)

v0.42.1

Screenshot from 2024-07-18 16-27-59

current branch

Screenshot from 2024-07-18 16-35-55


Go script
strObjs := []string{
		"47pRu4GKKHL3yJ5wkXRDZj5QsyfH3wUUy27x9eEp7wgK/7GRiZmkxHruwrR5YbwfiTCMzo5rnEHr8HmyNAPwAEzex",
		"47pRu4GKKHL3yJ5wkXRDZj5QsyfH3wUUy27x9eEp7wgK/3ZSUCYqacwGY3teqJm3f9gDYSsEtB4uccXUp5in6jXBc",
		"47pRu4GKKHL3yJ5wkXRDZj5QsyfH3wUUy27x9eEp7wgK/EMdsnvaUK2XQtxLf1zFjVeFFtbszEwKu8mvYt9W15oMw",
		"47pRu4GKKHL3yJ5wkXRDZj5QsyfH3wUUy27x9eEp7wgK/En1K6HVfzoQtX9Vn2nW85szWduXqepdbmeAt9t2NMQJL",
		"47pRu4GKKHL3yJ5wkXRDZj5QsyfH3wUUy27x9eEp7wgK/B7UjiPD8UcCQsWHpDLZWswATnA7q4bWvbHAvJJXCtbPq",
		"2GN486btkTpxsYHsVjz5tZzug65YiSFUAYqAQiEkg4sg/FtRXxUBiTteyCM5QyeKKwFsJiJsNQGDMG31dTchagep3",
		"2GN486btkTpxsYHsVjz5tZzug65YiSFUAYqAQiEkg4sg/FJijkw5XauTY9N2TKUSTf8QxJoDjBFGVS9Qc9V6ejW1i",
		"2GN486btkTpxsYHsVjz5tZzug65YiSFUAYqAQiEkg4sg/HhbtK3cTcwu8uzLaMjMFg9Cnj1ZkmPAvPGPAXBNoYM6E",
		"2GN486btkTpxsYHsVjz5tZzug65YiSFUAYqAQiEkg4sg/DcLuSr69JEEgeqTE3AaMAQqcVzPDHxtK88ZXdDVycRfM",
		"2GN486btkTpxsYHsVjz5tZzug65YiSFUAYqAQiEkg4sg/Afykr7S6kgwbkVA5fsmw6bjkv8LrUQ7hxzLWreneoERh",
	}
	const endpoint = "s01.neofs.devenv:8080"
	const workers = 30
	ctx := context.Background()
	signer := test.RandomSignerRFC6979(t)

	objs := make([]oid.Address, len(strObjs))
	for i := range strObjs {
		require.NoError(t, objs[i].DecodeString(strObjs[i]))
	}

	c, err := client.New(client.PrmInit{})
	require.NoError(t, err)
	var prm client.PrmDial
	prm.SetServerURI(endpoint)
	require.NoError(t, c.Dial(prm))
	t.Cleanup(func() { c.Close() })

	var wg sync.WaitGroup
	st := time.Now()
	for i := 0; i < workers; i++ {
		wg.Add(1)
		go func() {
			defer wg.Done()

			for i := 0; i < 1000; i++ {
				if i%100 == 0 {
					fmt.Println(i)
				}
				a := objs[rand.Int()%len(objs)]
				_, rdr, err := c.ObjectGetInit(ctx, a.Container(), a.Object(), signer, client.PrmObjectGet{})
				if err != nil {
					log.Println("init search:", err)
					continue
				}
				rdr.Close()
			}
		}()
	}
	wg.Wait()
	fmt.Println(time.Since(st))

cthulhu-rider avatar Jul 17 '24 13:07 cthulhu-rider