Handle coredump dirs and cache hit updates (#30897)

Co-authored-by: Yongji Wu <30348494+libertyeagle@users.noreply.github.com>
This commit is contained in:
Lianmin Zheng
2026-07-12 00:37:43 -07:00
committed by GitHub
co-authored by Yongji Wu
parent f1c247edf9
commit 81d273f73b
3 changed files with 66 additions and 11 deletions
+3 -3
View File
@@ -2900,9 +2900,9 @@ class Scheduler(
# skip staging requests that are ongoing prefetch
continue
# Pop the number of tokens loaded from storage (L3 hits)
req.storage_hit_length = self.tree_cache.pop_prefetch_loaded_tokens(
req.rid
)
loaded_tokens = self.tree_cache.pop_prefetch_loaded_tokens(req.rid)
if loaded_tokens > 0:
req.storage_hit_length = loaded_tokens
req.init_next_round_input(self.tree_cache)
res = adder.add_one_req(
+20 -8
View File
@@ -6425,14 +6425,26 @@ class ServerArgs:
os.environ[key] = value
logger.info("Auto-set %s=%s (from --crash-dump-folder)", key, value)
if key == "CUDA_COREDUMP_FILE":
# cuda curedump cannot write to a folder that does not exist,
# so we have to create the folder first.
hostname = socket.gethostname()
os.makedirs(
os.path.join(self.crash_dump_folder, hostname),
exist_ok=True,
)
coredump_dir = os.path.dirname(
os.environ["CUDA_COREDUMP_FILE"].replace("%h", socket.gethostname())
)
if "%" in coredump_dir:
logger.warning(
"Cannot pre-create CUDA coredump directory %s: only %%h is "
"supported in the directory part of CUDA_COREDUMP_FILE; "
"coredumps may fail to write.",
coredump_dir,
)
elif coredump_dir:
try:
os.makedirs(coredump_dir, exist_ok=True)
except OSError as e:
logger.warning(
"Failed to create CUDA coredump directory %s: %s; "
"coredumps may fail to write.",
coredump_dir,
e,
)
def _handle_debug_utils(self):
if is_in_ci() and self.soft_watchdog_timeout is None:
@@ -1,6 +1,7 @@
import importlib
import json
import os
import socket
import tempfile
import unittest
from types import SimpleNamespace
@@ -1294,6 +1295,48 @@ class TestSamplingBackendTokenOracleEnvGate(CustomTestCase):
self.assertEqual(parsed.sampling_backend, "token_oracle")
class TestHandleCrashDumpEnv(CustomTestCase):
_COREDUMP_ENV_KEYS = (
"CUDA_ENABLE_COREDUMP_ON_EXCEPTION",
"CUDA_ENABLE_USER_TRIGGERED_COREDUMP",
"CUDA_COREDUMP_SHOW_PROGRESS",
"CUDA_COREDUMP_GENERATION_FLAGS",
"CUDA_COREDUMP_FILE",
"CUDA_COREDUMP_PIPE",
)
def _run_handler(self, crash_dump_folder, preset_env=None):
server_args = ServerArgs.__new__(ServerArgs)
server_args.crash_dump_folder = crash_dump_folder
with patch.dict(os.environ, preset_env or {}):
for key in self._COREDUMP_ENV_KEYS:
if key not in (preset_env or {}):
os.environ.pop(key, None)
ServerArgs._handle_crash_dump_env(server_args)
def test_creates_coredump_dir_when_auto_set(self):
with tempfile.TemporaryDirectory() as tmp:
self._run_handler(tmp)
self.assertTrue(
os.path.isdir(os.path.join(tmp, socket.gethostname())),
"coredump dir not created for auto-set CUDA_COREDUMP_FILE",
)
def test_creates_coredump_dir_when_env_preset(self):
# Regression test: when CUDA_COREDUMP_FILE is preset, the coredump
# directory must still be created up front.
with tempfile.TemporaryDirectory() as tmp:
preset_dir = os.path.join(tmp, "preset-location")
self._run_handler(
tmp,
preset_env={"CUDA_COREDUMP_FILE": f"{preset_dir}/%h/core.cuda.%t.%p"},
)
self.assertTrue(
os.path.isdir(os.path.join(preset_dir, socket.gethostname())),
"coredump dir not created for preset CUDA_COREDUMP_FILE",
)
class TestGrpcServerArgs(CustomTestCase):
"""Native gRPC is enabled by --grpc-port (or SGLANG_GRPC_PORT) and runs
alongside HTTP; --smg-grpc-mode (and the deprecated --grpc-mode) select the