GUI를 통한 자원 모니터링 및 스케줄링 자동화

주석

목표

  • 연산 세션 생성 후 자원 사용 현황 변화가 GUI 상에서 표시됨을 확인
  • 허용된 자원 이상을 설정하여 연산 세션을 생성하면 요청이 작업 큐에 들어가고 PENDING 상태로 대기함을 확인
  • 가용 자원이 다시 생기는 순간 PENDING 세션이 스케줄링 되어 실행 상태로 바뀜을 확인

GUI를 통한 자원 모니터링

Backend.AI GUI Console은 GUI를 통한 자원 모니터링을 지원합니다. 사용자 계정으로 로그인 한 후 연산 세션을 생성합니다. 자원 할당은 다음 그림과 같이 해보겠습니다.

../_images/session_launch_dialog1.png

LAUNCH 버튼을 클릭하여 연산 세션을 생성하면 상단의 리소스 인디케이터에 CPU, RAM, FGPU의 양이 변화되는 것을 볼 수 있습니다. 현재 할당해서 사용하고 있는 지원의 양과 할당 가능한 총 자원의 양을 볼 수 있습니다. 리소스 인디케이터는 위, 아래 두 부분으로 나누어져 있습니다. 윗 부분은 현재 자원 그룹 내의 지원 할당 상태를 보여주고, 아랫 부분은 접근 가능한 총 자원 상태를 나타냅니다.

  • 위쪽 표시바: 현재 스케일링 그룹 내에서의 할당량과 총 할당 가능량
    • (현재 스케일링 그룹 내에서 사용자가 할당한 자원의 양) / (현재 스케일링 그룹 내에서 사용자 할당 가능한 자원의 총합)
  • 아래쪽 표시바: 전체 할당량과 총 할당 가능량
    • (사용자가 할당한 총 자원 양) / (사용자가 할당한 총 자원 양 + 현재 스케일링 그룹 내에서 사용자가 할당 가능한 자원의 총합)
../_images/resource_indicator_after_creation.png

이번에는 생성한 연산 세션을 삭제해보겠습니다. Control 열의 붉은 전원 버튼을 눌러 세션을 종료 하십시오.

../_images/destroy_kernel.png

연산 세션이 리스트에서 사라지고 곧 이어 자원 인디케이터의 CPU, RAM, FGPU가 해당 자원 만큼 감소하는 것을 확인할 수 있습니다.

../_images/resource_indicator_after_destroy.png

작업 스케줄러

Backend.AI 서버는 자체 개발한 작업 스케줄러를 내장하고 있습니다. 자동으로 모든 워커(worker) 노드의 자원 상태를 확인하여 사용자의 자원 요청에 맞는 워커로 연산 세션 생성 요청을 위임 합니다. 또한, 자원이 부족할 경우에는 일단 작업 큐에 사용자의 연산 세션 생성 요청을 대기(pending) 시키고 나중에 자원이 다시 가용 상태가 되면 대기 요청을 활성화 해서 연산 세션 생성 작업을 수행하게 됩니다.

사용자 GUI 콘솔에서도 간단한 방법으로 작업 스케줄러의 동작을 확인해볼 수 있습니다. 현재 테스트 GPU 호스트에는 최대 2 fGPU 만큼의 자원이 할당 가능합니다. 이제 1 fGPU 만큼의 자원 할당을 요청하는 연산 세션 3개를 동시에 생성해 보겠습니다. 연산 세션 생성 다이얼로그 하단을 보면 GPU와 Sessions 슬라이더가 있습니다. Sessions에 값을 1보다 크게 지정하면 LAUNCH 버튼을 클릭했을 때 해당 갯수만큼의 세션을 동시에 생성 요청하게 됩니다. GPU와 Sessions를 각각 1, 3으로 설정해보겠습니다. 2 fGPU만 존재하는 상황에서 총 3 fGPU 자원를 요청하는 세션이 3개 생성되는 것입니다.

../_images/session_launch_dialog_3_sessions.png

잠시 기다리면 세 개의 연산 세션이 조회되는 것을 알 수 있습니다. 이 때, Status 열을 자세히 보면 세 개 중 두 개 연산 세션의 상태는 RUNNING이지만, 다른 하나의 연산 세션은 PENDING 상태에 머물러 있는 것을 확인할 수 있습니다. 이 PENDING 세션은 작업 큐에 등록만 되어 있고 GPU 자원 부족으로 인해 실제로 컨테이너를 할당 받지는 못한 상태입니다.

../_images/pending_session_list.png

이제 RUNNING 상태의 세션 두 개 중 하나를 삭제 해보겠습니다. 그러면 PENDING 상태의 연산 세션은 곧 작업 스케줄러에 의해 자원을 할당 받고 RUNNING 상태로 변환되는 것을 볼 수 있습니다. 이처럼, 작업 스케줄러는 작업 큐를 활용해 사용자의 연산 세션 요청을 간직하고 있다가 자원이 가용해질 때 자동으로 요청을 처리하게 됩니다.

../_images/pending_to_running.png