Schedule requests as soon as possible #13

Merged
dstepanov-yadro merged 1 commit from dstepanov-yadro/frostfs-qos:fix/limit_scheduling into master 2025-03-28 10:06:02 +00:00

Let's assume that for some tag limit = 1000 RPS defined and each
request takes 10 ms to complete. At some point in time 1000 requests
were accepted. Then first request will be scheduled at now(), second -
at now() + 1 ms, third - at now() + 2 ms etc. Total processing
duration of 1000 requests will be 1 second + 10 ms.

After this fix scheduler looks forward to schedule requests within limit.
So for situation above total processing duration of 1000 requests will be
10 ms in ideal world.

The same for reservation scheduling.

Let's assume that for some tag `limit = 1000 RPS` defined and each request takes 10 ms to complete. At some point in time 1000 requests were accepted. Then first request will be scheduled at `now()`, second - at `now() + 1 ms`, third - at `now() + 2 ms` etc. Total processing duration of 1000 requests will be 1 second + 10 ms. After this fix scheduler looks forward to schedule requests within limit. So for situation above total processing duration of 1000 requests will be 10 ms in ideal world. The same for reservation scheduling.
dstepanov-yadro added 1 commit 2025-03-24 12:36:19 +00:00
[#9999] mclock: Schedule by limit requests as soon as possible
All checks were successful
DCO action / DCO (pull_request) Successful in 24s
Vulncheck / Vulncheck (pull_request) Successful in 31s
Pre-commit hooks / Pre-commit (pull_request) Successful in 1m10s
Tests and linters / Run gofumpt (pull_request) Successful in 1m4s
Tests and linters / Lint (pull_request) Successful in 1m12s
Tests and linters / gopls check (pull_request) Successful in 1m11s
Tests and linters / Staticcheck (pull_request) Successful in 1m18s
Tests and linters / Tests with -race (pull_request) Successful in 1m30s
Tests and linters / Tests (pull_request) Successful in 1m3s
41690c21e5
Let's assume that for some tag `limit = 1000 RPS` defined and each
request takes 10 ms to complete. At some point in time 1000 requests
were accepted. Then first request will be scheduled at `now()`, second -
at `now() + 1 ms`, third - at `now() + 2 ms` etc. Total processing
duration of 1000 requests will be 1 second + 10 ms.

After this fix scheduler looks forward to schedule requests within limit.
So for situation above total processing duration of 1000 requests will be
10 ms in ideal world.

Signed-off-by: Dmitrii Stepanov <d.stepanov@yadro.com>
dstepanov-yadro force-pushed fix/limit_scheduling from 41690c21e5 to a19b28337c 2025-03-24 12:37:21 +00:00 Compare
dstepanov-yadro force-pushed fix/limit_scheduling from a19b28337c to 57d895c321 2025-03-24 13:37:20 +00:00 Compare
dstepanov-yadro changed title from WIP: Schedule by limit requests as soon as possible to WIP: Schedule requests as soon as possible 2025-03-24 13:39:14 +00:00
dstepanov-yadro changed title from WIP: Schedule requests as soon as possible to Schedule requests as soon as possible 2025-03-28 08:13:39 +00:00
requested reviews from fyrchik, storage-core-committers, storage-core-developers 2025-03-28 08:13:52 +00:00
aarifullin approved these changes 2025-03-28 08:28:37 +00:00
acid-ant approved these changes 2025-03-28 08:53:11 +00:00
dstepanov-yadro merged commit 57d895c321 into master 2025-03-28 10:06:02 +00:00
Sign in to join this conversation.
No description provided.