Add kvcache-centric profiling and admission controls
This commit is contained in:
@@ -33,6 +33,8 @@ class RequestMetrics:
|
||||
kv_transfer_blocks: int
|
||||
actual_kv_transfer_blocks: int
|
||||
cached_tokens: int
|
||||
prefill_request_priority: int | None
|
||||
decode_request_priority: int | None
|
||||
re_prefill_required: bool
|
||||
effective_input_length: int | None
|
||||
session_reused: bool
|
||||
@@ -58,6 +60,8 @@ class RequestMetrics:
|
||||
latency_s: float | None,
|
||||
ttft_s: float | None,
|
||||
tpot_s: float | None,
|
||||
prefill_request_priority: int | None = None,
|
||||
decode_request_priority: int | None = None,
|
||||
error: str | None = None,
|
||||
) -> "RequestMetrics":
|
||||
return cls(
|
||||
@@ -81,6 +85,8 @@ class RequestMetrics:
|
||||
kv_transfer_blocks=decision.kv_transfer_blocks,
|
||||
actual_kv_transfer_blocks=actual_kv_transfer_blocks,
|
||||
cached_tokens=cached_tokens,
|
||||
prefill_request_priority=prefill_request_priority,
|
||||
decode_request_priority=decode_request_priority,
|
||||
re_prefill_required=decision.re_prefill_required,
|
||||
effective_input_length=effective_input_length,
|
||||
session_reused=session_reused,
|
||||
@@ -111,6 +117,16 @@ def write_summary_json(
|
||||
tpots = [row.tpot_s for row in rows if row.tpot_s is not None]
|
||||
per_decode_load = Counter(row.assigned_decode_node for row in rows)
|
||||
per_prefill_load = Counter(row.assigned_prefill_node for row in rows)
|
||||
prefill_priorities = Counter(
|
||||
row.prefill_request_priority
|
||||
for row in rows
|
||||
if row.prefill_request_priority is not None
|
||||
)
|
||||
decode_priorities = Counter(
|
||||
row.decode_request_priority
|
||||
for row in rows
|
||||
if row.decode_request_priority is not None
|
||||
)
|
||||
|
||||
summary: dict[str, Any] = {
|
||||
"trace_path": str(trace_path),
|
||||
@@ -135,6 +151,12 @@ def write_summary_json(
|
||||
),
|
||||
"per_decode_load": dict(sorted(per_decode_load.items())),
|
||||
"per_prefill_load": dict(sorted(per_prefill_load.items())),
|
||||
"prefill_request_priorities": {
|
||||
str(key): value for key, value in sorted(prefill_priorities.items())
|
||||
},
|
||||
"decode_request_priorities": {
|
||||
str(key): value for key, value in sorted(decode_priorities.items())
|
||||
},
|
||||
"error_count": sum(1 for row in rows if row.error is not None),
|
||||
}
|
||||
path.parent.mkdir(parents=True, exist_ok=True)
|
||||
|
||||
Reference in New Issue
Block a user