CycleCloud는 스케줄러가 아니라 Azure에 고유한 스케줄러를 배포할 수 있는 플랫폼입니다. 스케줄러는 작업을 관리하고 노드 클러스터에 배포합니다. CycleCloud는 스케줄러용 자동 크기 조정 어댑터를 개발하기 위한 REST API 및 Python 라이브러리를 제공합니다. 이러한 어댑터를 사용하면 관리형 클러스터의 크기가 작업 큐 및 거버넌스 정책의 길이에 따라 위 또는 아래로 조정됩니다.
스케줄러
스케줄러는 작업(또는 작업) 목록을 수락하고 이러한 작업을 사용 가능한 리소스 풀에 배포하는 소프트웨어입니다. 작업, 작업 간 종속성 및 우선 순위의 리소스 요구 사항을 고려합니다. 이 작업 목록들은 일반적으로 큐라고 불립니다.
CycleCloud는 일반적으로 사용되는 많은 스케줄러(PBS Professional OSS, Slurm, IBM LSF, Grid Engine 및 HT Condor)에 대한 기본 제공 지원을 제공합니다. Azure에서 이러한 스케줄러를 배포하기 위한 템플릿을 제공합니다. 이러한 템플릿은 Azure에서 HPC 클러스터를 빌드하기 위한 모범 사례를 나타내는 기본 토폴로지입니다. 대기 시간이 짧은 InfiniBand 네트워킹과 같은 고유한 특수 기능을 사용합니다.
또한 각 스케줄러에 대한 프로젝트가 만들어집니다. 프로젝트를 사용하여 헤드 노드 및 컴퓨팅 노드에 스케줄러 디먼을 설치하고 초기화합니다.
스케줄러 어댑터
각 유형의 스케줄러에 대해 만들어진 어댑터는 두 가지 기본 역할을 수행합니다. 한 역할은 스케줄러 큐의 리소스 요구 사항을 집계합니다. 다른 역할은 리소스 요구 사항을 Azure VM 크기 집합에 대한 할당 요청으로 변환합니다. 특정 제약 조건에 대해 이러한 할당 요청을 생성합니다. 이러한 제약 조건에는 VM 할당량, 클러스터 크기에 대한 제한 및 적절한 VM 크기에 대해 InfiniBand 네트워크 토폴로지에서 적용한 제한이 포함될 수 있습니다. 특정 측면에서 이러한 어댑터는 여러 당사자의 수요와 공급을 협상하는 브로커와 유사합니다.
모니터
모니터는 CycleCloud 애플리케이션 서버에서 실행되는 프로세스로, Azure 구독에서 리소스 가용성을 확인하기 위해 주기적으로 Azure 서비스를 조회합니다. 이 모니터는 수요 조정을 위해 스케줄러 어댑터에 이 정보를 제공합니다.
노드 할당자
노드 할당기는 사이클클라우드 애플리케이션 서버에서 실행됩니다. REST API를 통해 스케줄러 어댑터로부터 할당 요청을 수신하고, 요청을 충족하기 위해 필요한 Azure 자원을 프로비저닝한 후, 프로비저닝된 자원을 노드 집합으로 스케줄러 어댑터에 다시 제시합니다.