Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

resource_manager: implement the token-consuming by client #6039

Merged
merged 43 commits into from
Mar 23, 2023
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
43 commits
Select commit Hold shift + click to select a range
2c3ed91
roughly impl
HuSharp Feb 23, 2023
b73f7db
make check happy
HuSharp Feb 23, 2023
0c6ceb2
make check happy
HuSharp Feb 23, 2023
0b56890
move sync
HuSharp Feb 24, 2023
384406e
add client id
HuSharp Feb 27, 2023
29fd6a6
Merge branch 'master' into token_client_limit
HuSharp Feb 28, 2023
3ec7cbf
update config
HuSharp Feb 28, 2023
1cebac6
remove stale slot
HuSharp Mar 1, 2023
e72b96e
merge master
HuSharp Mar 2, 2023
a2c1568
address comment
HuSharp Mar 8, 2023
5a88b30
Merge branch 'master' into token_client_limit
HuSharp Mar 8, 2023
ea1db71
merge upstream
HuSharp Mar 10, 2023
922c6a7
make ci happy
HuSharp Mar 10, 2023
6ad83df
Merge branch 'master' into token_client_limit
HuSharp Mar 13, 2023
15a7ad0
update cal
HuSharp Mar 13, 2023
23777f6
Merge branch 'master' into token_client_limit
HuSharp Mar 13, 2023
7466d46
update lock
HuSharp Mar 13, 2023
8b8ecdf
Merge branch 'master' into token_client_limit
HuSharp Mar 14, 2023
dec9006
address comment and update impl
HuSharp Mar 15, 2023
70481b1
update comment
HuSharp Mar 16, 2023
1dca47d
needTokens amplification
HuSharp Mar 16, 2023
8cd6520
merge upstream
HuSharp Mar 16, 2023
7b83512
make check happy
HuSharp Mar 16, 2023
3557221
merge upstream
HuSharp Mar 16, 2023
2664000
Merge branch 'master' into token_client_limit
HuSharp Mar 17, 2023
03be994
revert buffer
HuSharp Mar 17, 2023
8918d1b
add comment
HuSharp Mar 20, 2023
0992131
merge upstream
HuSharp Mar 20, 2023
c92ab35
merge upstream
HuSharp Mar 20, 2023
ed6e033
merge upstream
HuSharp Mar 21, 2023
071fd44
reserve last burst
HuSharp Mar 21, 2023
da7adf3
reserve last burst
HuSharp Mar 21, 2023
19dd323
remove cleanup
HuSharp Mar 21, 2023
2699523
address comment
HuSharp Mar 21, 2023
654702d
Merge branch 'master' into token_client_limit
HuSharp Mar 21, 2023
59dbdd0
address comment
HuSharp Mar 22, 2023
86024e5
update ratio to 0.5
HuSharp Mar 22, 2023
e3c4045
update test with ratio
HuSharp Mar 22, 2023
5d73b28
update test with ratio
HuSharp Mar 22, 2023
20d084c
Merge branch 'master' into token_client_limit
ti-chi-bot Mar 23, 2023
a30f6af
make check happy
HuSharp Mar 23, 2023
b31fffc
remove error
HuSharp Mar 23, 2023
ceec274
remove error
HuSharp Mar 23, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 7 additions & 5 deletions pkg/mcs/resource_manager/server/token_buckets_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -81,14 +81,16 @@ func TestGroupTokenBucketRequest(t *testing.T) {
tb, trickle = gtb.request(time1, 60000, uint64(time.Second)*10/uint64(time.Millisecond), clientUniqueID)
re.LessOrEqual(math.Abs(tb.Tokens-22000), 1e-7)
re.Equal(trickle, int64(time.Second)*10/int64(time.Millisecond))
tb, trickle = gtb.request(time1, 3000, uint64(time.Second)*10/uint64(time.Millisecond), clientUniqueID)
re.LessOrEqual(math.Abs(tb.Tokens-2000), 1e-7)
re.Equal(trickle, int64(time.Second)*10/int64(time.Millisecond))
// Get reserved 10000 tokens = fillrate(2000) * 10 * defaultReserveRatio(0.5)
// Max loan tokens is 60000.
tb, trickle = gtb.request(time1, 3000, uint64(time.Second)*10/uint64(time.Millisecond), clientUniqueID)
re.LessOrEqual(math.Abs(tb.Tokens-1000), 1e-7)
re.Equal(trickle, int64(time.Second)*10/int64(time.Millisecond))
time2 := time1.Add(10 * time.Second)
tb, trickle = gtb.request(time1, 12000, uint64(time.Second)*10/uint64(time.Millisecond), clientUniqueID)
re.LessOrEqual(math.Abs(tb.Tokens-10000), 1e-7)
re.Equal(trickle, int64(time.Second)*10/int64(time.Millisecond))
time2 := time1.Add(30 * time.Second)
tb, trickle = gtb.request(time2, 20000, uint64(time.Second)*10/uint64(time.Millisecond), clientUniqueID)
re.LessOrEqual(math.Abs(tb.Tokens-19000), 1e-7)
re.LessOrEqual(math.Abs(tb.Tokens-20000), 1e-7)
re.Equal(trickle, int64(time.Second)*10/int64(time.Millisecond))
}
7 changes: 4 additions & 3 deletions pkg/mcs/resource_manager/server/token_bukets.go
Original file line number Diff line number Diff line change
Expand Up @@ -401,9 +401,10 @@ func (ts *TokenSlot) assignSlotTokens(neededTokens float64, targetPeriodMs uint6
}
}
}
if grantedTokens < defaultReserveRatio*float64(fillRate)*targetPeriodTimeSec {
ts.tokenCapacity -= defaultReserveRatio*float64(fillRate)*targetPeriodTimeSec - grantedTokens
grantedTokens = defaultReserveRatio * float64(fillRate) * targetPeriodTimeSec
if neededTokens > 0 && grantedTokens < defaultReserveRatio*float64(fillRate)*targetPeriodTimeSec {
reservedTokens := math.Min(neededTokens, defaultReserveRatio*float64(fillRate)*targetPeriodTimeSec)
HuSharp marked this conversation as resolved.
Show resolved Hide resolved
ts.tokenCapacity -= reservedTokens - grantedTokens
grantedTokens = reservedTokens
}
res.Tokens = grantedTokens

Expand Down