본문으로 건너뛰기

[Ray Serve] 처리량 최적화 설정 로깅 기능 추가

PR 링크: ray-project/ray#62146 상태: Merged | 변경: +24 / -0

들어가며

Ray Serve는 RAY_SERVE_THROUGHPUT_OPTIMIZED 환경 변수를 통해 처리량 최적화 모드를 활성화할 수 있다. 하지만 이 모드가 어떤 설정으로 동작하는지 확인하기 어려워, 디버깅이나 운영 시 불편함이 있었다. 이 PR은 처리량 최적화 모드 활성화 시 관련 설정들을 로그로 출력하는 기능을 추가한다.

핵심 코드 분석

컨트롤러 초기화 시 로그 출력

async def __init__(self, ...):
    if RAY_SERVE_THROUGHPUT_OPTIMIZED:
        self._log_throughput_opt_message()
    # ...

최적화 설정 로그 메서드

def _log_throughput_opt_message(self) -> None:
    msg = "Throughput optimized Ray Serve enabled with the following configurations:\n"
    if RAY_SERVE_ENABLE_DIRECT_INGRESS:
        msg += "  * Direct ingress enabled\n"
    if RAY_SERVE_USE_GRPC_BY_DEFAULT:
        msg += "  * gRPC communication enabled\n"
    if not RAY_SERVE_RUN_USER_CODE_IN_SEPARATE_THREAD:
        msg += "  * User code running in main thread (not separate)\n"
    if not RAY_SERVE_RUN_ROUTER_IN_SEPARATE_LOOP:
        msg += "  * Router running in main thread (not separate)\n"
    if not RAY_SERVE_LOG_TO_STDERR:
        msg += "  * Log to stderr disabled\n"
    msg += f"  * Request path log buffer size: {RAY_SERVE_REQUEST_PATH_LOG_BUFFER_SIZE}\n"
    logger.info(msg)

왜 이게 좋은가

  1. 운영 가시성: 처리량 최적화 모드에서 어떤 설정이 활성화되었는지 한눈에 파악할 수 있다.
  2. 디버깅 편의성: 성능 이슈 발생 시 어떤 최적화가 적용되었는지 로그에서 즉시 확인 가능하다.
  3. 설정 문서화 효과: 로그 메시지 자체가 처리량 최적화에 관련된 주요 설정들의 목록 역할을 한다.
  4. 조건부 출력: RAY_SERVE_THROUGHPUT_OPTIMIZED가 설정된 경우에만 로그를 출력하므로 일반 사용 시 노이즈가 없다.

참고 자료

댓글

관련 포스트

PR Analysis 의 다른글