debug.py 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. import logging
  2. import tracemalloc
  3. from fastapi import APIRouter, Request
  4. from gpustack.api.exceptions import (
  5. BadRequestException,
  6. InvalidException,
  7. )
  8. router = APIRouter()
  9. logger = logging.getLogger(__name__)
  10. @router.get("/log_level")
  11. async def get_log_level():
  12. current_level = logging.getLogger().level
  13. return logging.getLevelName(current_level)
  14. @router.put("/log_level")
  15. async def set_log_level(request: Request):
  16. level = await request.body()
  17. level_str = level.decode("utf-8").upper().strip()
  18. numeric_level = logging._nameToLevel.get(level_str)
  19. if not isinstance(numeric_level, int):
  20. raise InvalidException(message="Invalid log level")
  21. logging.getLogger().setLevel(numeric_level)
  22. logger.info(f"Set log level to {level_str}")
  23. return "ok"
  24. @router.get("/memory")
  25. def get_memory_profile():
  26. if not tracemalloc.is_tracing():
  27. raise BadRequestException(
  28. message="tracemalloc is not enabled. Please run GPUStack server in debug mode."
  29. )
  30. snapshot = tracemalloc.take_snapshot()
  31. top_stats = snapshot.statistics('lineno')
  32. result = [str(stat) for stat in top_stats[:20]]
  33. return {"top_memory_lines": result}