13배 느렸다, 원인은 못 밝혔다
영상 생성 대시보드에 진행률 표시를 추가하던 중이었는데, 그러다 작업 하나가 이상하게 굴었다. 원격 GPU 기계에서 640픽셀 너비·161프레임짜리 이미지-투-비디오 작업은 41회 실측 기준 소요 시간의 중앙값이 4.7분으로 잘 알려져 있었다. 그런데 이 작업은 1시간을 넘겼다.
스케줄러가 한 일
스케줄러는 작업마다 약 29.7분의 타임아웃을 준다. 그 시간이 지나자 스케줄러는 이 작업을 실패로 기록하고 다음 작업을 제출했다. 하지만 원격 서버에는 멈추라는 신호가 전혀 가지 않았다 — 첫 번째 작업은 여전히 돌고 있었다. 다음 작업은 그 뒤에 그냥 줄을 섰다. 스케줄러의 타임아웃은 원격에서 벌어지는 일이 아니라 스케줄러 자신의 인내심에 대한 진술일 뿐이었고, 중단 신호가 따라붙지 않으면 이미 힘겨워하는 기계 위에 작업이 계속 쌓인다.
GPU를 들여다보다
원격 GPU의 상태를 보니 사용률은 100%, 전력은 180W 한도 중 43W, 메모리는 16.3GB 중 15.6GB가 차 있었다. 사용률은 높은데 전력은 예산의 4분의 1 수준이고 메모리는 거의 가득 찬 이 조합은, 한 작업이 온전히 전력을 다해 돌아가는 모습과는 달라 보였다. 우리 쪽 큐를 통째로 비웠다 — 대기 중이던 작업을 지우고, 돌고 있던 작업도 중단시켰다. 그런데도 GPU는 여전히 100% 사용률에 13~15GB 메모리를 쥔 채였다. 뭔가 다른 것이 그 GPU를 쓰고 있었다.
같은 기계에 떠 있던 다른 렌더 인스턴스의 클라이언트가 약 35초 간격으로 새 작업을 계속 제출하고 있었고, 그건 우리가 보낸 것이 아니었다.
인과관계는 증명하지 못했다
이 다른 클라이언트가 속도 저하의 원인일 가능성은 높아 보인다 — 하지만 그 클라이언트를 실제로 멈추고 다시 측정해보지는 않았다. 그래서 이건 정황이지 증명이 아니다. 중간에 “정상 소요 시간은 14.4분”이라고 정정했던 것도 특이값 한 건에 근거한 잘못된 판단이었다 — 처음의 4~5분이 맞는 값이었다. 다음에 할 일은 명확하다. 다른 클라이언트를 멈춘 상태에서 같은 작업을 다시 재봐서, 소요 시간이 4.7분 근처로 돌아오는지 확인하는 것이다. 그때까지 이 사건의 제목은 그대로다 — 13배 느렸고, 원인은 아직 증명되지 않았다.