fix: change performance log directory to cache path (#13482)
Co-authored-by: Mick <mickjagger19@icloud.com>
This commit is contained in:
@@ -10,13 +10,28 @@ from typing import Any
|
||||
|
||||
from dateutil.tz import UTC
|
||||
|
||||
LOG_DIR = os.environ.get("SGLANG_PERF_LOG_DIR")
|
||||
if LOG_DIR:
|
||||
LOG_DIR = os.path.abspath(LOG_DIR)
|
||||
elif LOG_DIR is None: # Not set
|
||||
project_root = os.path.abspath(os.path.join(os.path.dirname(__file__), "../../../"))
|
||||
LOG_DIR = os.path.join(project_root, "logs")
|
||||
# if LOG_DIR is "", it will remain "", disabling file logging.
|
||||
|
||||
def get_diffusion_perf_log_dir() -> str:
|
||||
"""
|
||||
Determines the directory for performance logs, centralizing the logic.
|
||||
|
||||
Resolution order:
|
||||
1. SGLANG_PERF_LOG_DIR environment variable, if set and not empty.
|
||||
2. Default to ~/.cache/sglang/logs if the environment variable is not set.
|
||||
3. Returns an empty string if SGLANG_PERF_LOG_DIR is set to an empty string,
|
||||
which effectively disables file logging.
|
||||
"""
|
||||
log_dir = os.environ.get("SGLANG_PERF_LOG_DIR")
|
||||
if log_dir:
|
||||
return os.path.abspath(log_dir)
|
||||
if log_dir is None:
|
||||
# Not set, use default
|
||||
return os.path.join(os.path.expanduser("~/.cache/sglang"), "logs")
|
||||
# Is set, but is an empty string
|
||||
return ""
|
||||
|
||||
|
||||
LOG_DIR = get_diffusion_perf_log_dir()
|
||||
|
||||
# Configure a specific logger for performance metrics
|
||||
perf_logger = logging.getLogger("performance")
|
||||
|
||||
@@ -105,7 +105,7 @@ class ServerManager:
|
||||
|
||||
def start(self) -> ServerContext:
|
||||
"""Start the diffusion server and wait for readiness."""
|
||||
log_dir, perf_log_path = prepare_perf_log(Path(__file__))
|
||||
log_dir, perf_log_path = prepare_perf_log()
|
||||
|
||||
safe_model_name = self.model.replace("/", "_")
|
||||
stdout_path = (
|
||||
|
||||
@@ -17,6 +17,9 @@ from PIL import Image
|
||||
from sglang.multimodal_gen.configs.sample.base import DataType
|
||||
from sglang.multimodal_gen.runtime.utils.common import get_bool_env_var
|
||||
from sglang.multimodal_gen.runtime.utils.logging_utils import init_logger
|
||||
from sglang.multimodal_gen.runtime.utils.performance_logger import (
|
||||
get_diffusion_perf_log_dir,
|
||||
)
|
||||
|
||||
logger = init_logger(__name__)
|
||||
|
||||
@@ -107,12 +110,15 @@ def check_image_size(ut, image, width, height):
|
||||
ut.assertEqual(image.size, (width, height))
|
||||
|
||||
|
||||
def get_perf_log_dir(start_file: Path) -> Path:
|
||||
"""Mirror runtime/utils/performance_logger.py behaviour for locating logs."""
|
||||
this_file = start_file.resolve()
|
||||
root_logs = this_file.parents[3] / "logs"
|
||||
fallback = this_file.parents[2] / "logs"
|
||||
return root_logs if root_logs.exists() or not fallback.exists() else fallback
|
||||
def get_perf_log_dir() -> Path:
|
||||
"""Gets the performance log directory from the centralized sglang utility."""
|
||||
log_dir_str = get_diffusion_perf_log_dir()
|
||||
if not log_dir_str:
|
||||
raise RuntimeError(
|
||||
"Performance logging is disabled (SGLANG_PERF_LOG_DIR is empty), "
|
||||
"but a test tried to access the log directory."
|
||||
)
|
||||
return Path(log_dir_str)
|
||||
|
||||
|
||||
def _ensure_log_path(log_dir: Path) -> Path:
|
||||
@@ -129,9 +135,9 @@ def clear_perf_log(log_dir: Path) -> Path:
|
||||
return log_path
|
||||
|
||||
|
||||
def prepare_perf_log(start_file: Path) -> tuple[Path, Path]:
|
||||
def prepare_perf_log() -> tuple[Path, Path]:
|
||||
"""Convenience helper to resolve and clear the perf log in one call."""
|
||||
log_dir = get_perf_log_dir(start_file)
|
||||
log_dir = get_perf_log_dir()
|
||||
log_path = clear_perf_log(log_dir)
|
||||
return log_dir, log_path
|
||||
|
||||
|
||||
Reference in New Issue
Block a user