Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
change
sglang
Commits
499c85f1
Unverified
Commit
499c85f1
authored
Dec 06, 2024
by
Byron Hsu
Committed by
GitHub
Dec 06, 2024
Browse files
[Router] remove duplicate char count (#2378)
parent
e5f227c0
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
38 additions
and
52 deletions
+38
-52
rust/py_test/test_launch_server.py
rust/py_test/test_launch_server.py
+2
-0
rust/src/server.rs
rust/src/server.rs
+1
-3
rust/src/tree.rs
rust/src/tree.rs
+35
-49
No files found.
rust/py_test/test_launch_server.py
View file @
499c85f1
...
@@ -45,6 +45,8 @@ def popen_launch_router(
...
@@ -45,6 +45,8 @@ def popen_launch_router(
port
,
port
,
"--dp"
,
"--dp"
,
str
(
dp_size
),
# Convert dp_size to string
str
(
dp_size
),
# Convert dp_size to string
"--router-eviction-interval"
,
"5"
,
# frequent eviction for testing
]
]
# Use current environment
# Use current environment
...
...
rust/src/server.rs
View file @
499c85f1
use
crate
::
router
::
PolicyConfig
;
use
crate
::
router
::
PolicyConfig
;
use
crate
::
router
::
Router
;
use
crate
::
router
::
Router
;
use
actix_web
::{
use
actix_web
::{
get
,
post
,
web
,
App
,
HttpRequest
,
HttpResponse
,
HttpServer
,
Responder
};
delete
,
get
,
post
,
put
,
web
,
App
,
HttpRequest
,
HttpResponse
,
HttpServer
,
Responder
,
};
use
bytes
::
Bytes
;
use
bytes
::
Bytes
;
use
env_logger
::
Builder
;
use
env_logger
::
Builder
;
use
log
::{
info
,
LevelFilter
};
use
log
::{
info
,
LevelFilter
};
...
...
rust/src/tree.rs
View file @
499c85f1
...
@@ -24,7 +24,6 @@ struct Node {
...
@@ -24,7 +24,6 @@ struct Node {
#[derive(Debug)]
#[derive(Debug)]
pub
struct
Tree
{
pub
struct
Tree
{
root
:
NodeRef
,
root
:
NodeRef
,
// TODO: Char Count per tenant
pub
tenant_char_count
:
DashMap
<
String
,
usize
>
,
pub
tenant_char_count
:
DashMap
<
String
,
usize
>
,
}
}
...
@@ -408,17 +407,9 @@ impl Tree {
...
@@ -408,17 +407,9 @@ impl Tree {
pub
fn
evict_tenant_data
(
&
self
,
max_size
:
usize
)
{
pub
fn
evict_tenant_data
(
&
self
,
max_size
:
usize
)
{
// Calculate used size and collect leaves
// Calculate used size and collect leaves
let
mut
stack
=
vec!
[
Arc
::
clone
(
&
self
.root
)];
let
mut
stack
=
vec!
[
Arc
::
clone
(
&
self
.root
)];
let
mut
used_size_per_tenant
:
HashMap
<
String
,
usize
>
=
HashMap
::
new
();
let
mut
pq
=
BinaryHeap
::
new
();
let
mut
pq
=
BinaryHeap
::
new
();
while
let
Some
(
curr
)
=
stack
.pop
()
{
while
let
Some
(
curr
)
=
stack
.pop
()
{
for
tenant
in
curr
.tenant_last_access_time
.iter
()
{
let
size
=
used_size_per_tenant
.entry
(
tenant
.key
()
.clone
())
.or_insert
(
0
);
*
size
+=
curr
.text
.read
()
.unwrap
()
.chars
()
.count
();
}
for
child
in
curr
.children
.iter
()
{
for
child
in
curr
.children
.iter
()
{
stack
.push
(
Arc
::
clone
(
child
.value
()));
stack
.push
(
Arc
::
clone
(
child
.value
()));
}
}
...
@@ -436,22 +427,18 @@ impl Tree {
...
@@ -436,22 +427,18 @@ impl Tree {
}
}
info!
(
"Before eviction - Used size per tenant:"
);
info!
(
"Before eviction - Used size per tenant:"
);
for
(
tenant
,
size
)
in
&
used_size_per_tenant
{
for
entry
in
self
.tenant_char_count
.iter
()
{
info!
(
"Tenant: {}, Size: {}"
,
t
en
ant
,
size
);
info!
(
"Tenant: {}, Size: {}"
,
en
try
.key
(),
entry
.value
()
);
}
}
// Process eviction
// Process eviction
while
let
Some
(
Reverse
(
entry
))
=
pq
.pop
()
{
while
let
Some
(
Reverse
(
entry
))
=
pq
.pop
()
{
let
EvictionEntry
{
tenant
,
node
,
..
}
=
entry
;
let
EvictionEntry
{
tenant
,
node
,
..
}
=
entry
;
if
let
Some
(
&
used_size
)
=
u
se
d_size_per_tena
nt
.get
(
&
tenant
)
{
if
let
Some
(
used_size
)
=
se
lf
.tenant_char_cou
nt
.get
(
&
tenant
)
{
if
used_size
<=
max_size
{
if
*
used_size
<=
max_size
{
continue
;
continue
;
}
}
// Update used size
if
let
Some
(
size
)
=
used_size_per_tenant
.get_mut
(
&
tenant
)
{
*
size
-=
node
.text
.read
()
.unwrap
()
.chars
()
.count
();
}
}
// Decrement when removing tenant from node
// Decrement when removing tenant from node
...
@@ -487,13 +474,12 @@ impl Tree {
...
@@ -487,13 +474,12 @@ impl Tree {
}));
}));
}
}
}
}
}
};
}
}
}
info!
(
"After eviction - Used size per tenant:"
);
info!
(
"After eviction - Used size per tenant:"
);
for
(
tenant
,
size
)
in
&
used_size_per_tenant
{
for
entry
in
self
.tenant_char_count
.iter
()
{
info!
(
"Tenant: {}, Size: {}"
,
t
en
ant
,
size
);
info!
(
"Tenant: {}, Size: {}"
,
en
try
.key
(),
entry
.value
()
);
}
}
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment