[Feature] Sglang Tracing: Fine-Grained Tracking for Request Latency - Part 2 (#10804)
Signed-off-by: Feng Su <sufeng@linux.alibaba.com>
This commit is contained in:
@@ -34,13 +34,21 @@ from sglang.srt.managers.io_struct import (
|
||||
TokenizedGenerateReqInput,
|
||||
WatchLoadUpdateReq,
|
||||
)
|
||||
from sglang.srt.managers.schedule_batch import Req
|
||||
from sglang.srt.managers.schedule_batch import Req, RequestStage
|
||||
from sglang.srt.managers.scheduler import run_scheduler_process
|
||||
from sglang.srt.server_args import (
|
||||
DP_ATTENTION_HANDSHAKE_PORT_DELTA,
|
||||
PortArgs,
|
||||
ServerArgs,
|
||||
)
|
||||
from sglang.srt.tracing.trace import (
|
||||
process_tracing_init,
|
||||
trace_get_proc_propagate_context,
|
||||
trace_set_proc_propagate_context,
|
||||
trace_set_thread_info,
|
||||
trace_slice_end,
|
||||
trace_slice_start,
|
||||
)
|
||||
from sglang.srt.utils import (
|
||||
bind_port,
|
||||
configure_logger,
|
||||
@@ -170,11 +178,22 @@ class DataParallelController:
|
||||
def handle_load_update_req(self, obj):
|
||||
self.dp_budget.update_budget(obj)
|
||||
|
||||
def dispatching_with_trace(self, req: Req):
|
||||
if self.server_args.enable_trace:
|
||||
trace_set_proc_propagate_context(req.rid, req.trace_context)
|
||||
trace_slice_start(RequestStage.DC_DISPATCH, req.rid)
|
||||
req.trace_context = trace_get_proc_propagate_context(req.rid)
|
||||
|
||||
self.dispatching(req)
|
||||
|
||||
if self.server_args.enable_trace:
|
||||
trace_slice_end(RequestStage.DC_DISPATCH, req.rid, thread_finish_flag=True)
|
||||
|
||||
def init_dispatcher(self):
|
||||
self._request_dispatcher = TypeBasedDispatcher(
|
||||
[
|
||||
(TokenizedGenerateReqInput, self.dispatching),
|
||||
(TokenizedEmbeddingReqInput, self.dispatching),
|
||||
(TokenizedGenerateReqInput, self.dispatching_with_trace),
|
||||
(TokenizedEmbeddingReqInput, self.dispatching_with_trace),
|
||||
(BlockReqInput, self.send_to_all_workers),
|
||||
(WatchLoadUpdateReq, self.handle_load_update_req),
|
||||
]
|
||||
@@ -487,6 +506,14 @@ def run_data_parallel_controller_process(
|
||||
pipe_writer,
|
||||
):
|
||||
kill_itself_when_parent_died()
|
||||
if server_args.enable_trace:
|
||||
process_tracing_init(server_args.otlp_traces_endpoint, "sglang")
|
||||
thread_label = "DP Controller"
|
||||
if server_args.disaggregation_mode == "prefill":
|
||||
thread_label = "Prefill DP Controller"
|
||||
elif server_args.disaggregation_mode == "decode":
|
||||
thread_label = "Decode DP Controller"
|
||||
trace_set_thread_info(thread_label)
|
||||
setproctitle.setproctitle("sglang::data_parallel_controller")
|
||||
faulthandler.enable()
|
||||
configure_logger(server_args)
|
||||
|
||||
Reference in New Issue
Block a user