OpenPBS

클러스터 정의의 구성 섹션에서 "run_list"을 수정하여 CycleCloud 클러스터에서 OpenPBS를 쉽게 사용하도록 설정할 수 있습니다. PBS Professional 클러스터의 두 가지 기본 구성 요소는 PBS Professional 소프트웨어가 실행되는 공유 파일 시스템을 제공하는 '마스터' 노드와 공유 파일 시스템을 탑재하고 제출된 작업을 실행하는 호스트인 'execute' 노드입니다. 예를 들어 간단한 클러스터 템플릿 코드 조각은 다음과 같습니다.

[cluster my-pbspro]

[[node master]]
    ImageName = cycle.image.centos7
    MachineType = Standard_A4 # 8 cores

    [[[configuration]]]
    run_list = role[pbspro_master_role]

[[nodearray execute]]
    ImageName = cycle.image.centos7
    MachineType = Standard_A1  # 1 core

    [[[configuration]]]
    run_list = role[pbspro_execute_role]

CycleCloud에서 정의를 사용하여 클러스터를 가져오고 시작하면 단일 '마스터' 노드가 생성됩니다. 실행 노드는 명령을 통해 cyclecloud add_node 클러스터에 추가할 수 있습니다. 예를 들어 10개 이상의 실행 노드를 추가하려면 다음을 수행합니다.

cyclecloud add_node my-pbspro -t execute -c 10

PBS 리소스 기반 자동 크기 조정

Cyclecloud는 동적 프로비저닝 기능을 확장하기 위해 두 개의 리소스를 유지 관리합니다. 이러한 리소스는 nodearraymachinetype입니다.

작업을 제출하고 nodearray 리소스 qsub -l nodearray=highmem -- /bin/hostname 를 지정하는 경우 CycleCloud는 'highmem'이라는 nodearray에 노드를 추가합니다. 이러한 nodearray가 없으면 작업이 유휴 상태로 유지됩니다.

마찬가지로 machinetype 리소스가 작업 제출(예: qsub -l machinetype:Standard_L32s_v2 my-job.sh작업 제출)을 지정한 경우 CycleCloud는 'execute'(기본값) nodearray에서 'Standard_L32s_v2'의 크기를 자동으로 조정합니다. 'execute' 노드 배열에서 해당 컴퓨터 유형을 사용할 수 없는 경우 작업은 유휴 상태로 유지됩니다.

이러한 리소스는 다음과 같이 조합하여 사용할 수 있습니다.

qsub -l nodes=8:ppn=16:nodearray=hpc:machinetype=Standard_HB60rs my-simulation.sh

'Standard_HB60rs' 컴퓨터가 'hpc' 노드 배열로 지정된 경우에만 자동 크기 조정됩니다.

nodearrays에 할당된 추가 큐 추가

노드가 여러 대 있는 클러스터에서는 작업을 적절한 VM 유형으로 자동으로 라우팅하는 별도의 큐를 만드는 것이 일반적입니다. 이 예제에서는 클러스터 템플릿에서 다음 "gpu" nodearray가 정의되었다고 가정합니다.

    [[nodearray gpu]]
    Extends = execute
    MachineType = Standard_NC24rs

        [[[configuration]]]
        pbspro.slot_type = gpu

클러스터 템플릿을 가져오고 클러스터를 시작한 후 서버 노드에서 다음 명령을 실행하여 "gpu" 큐를 만들 수 있습니다.

/opt/pbs/bin/qmgr -c "create queue gpu"
/opt/pbs/bin/qmgr -c "set queue gpu queue_type = Execution"
/opt/pbs/bin/qmgr -c "set queue gpu resources_default.ungrouped = false"
/opt/pbs/bin/qmgr -c "set queue gpu resources_default.place = scatter"
/opt/pbs/bin/qmgr -c "set queue gpu resources_default.slot_type = gpu"
/opt/pbs/bin/qmgr -c "set queue gpu default_chunk.ungrouped = false"
/opt/pbs/bin/qmgr -c "set queue gpu default_chunk.slot_type = gpu"
/opt/pbs/bin/qmgr -c "set queue gpu enabled = true"
/opt/pbs/bin/qmgr -c "set queue gpu started = true"

참고

위의 큐 정의는 MPI 작업을 지원하기 위해 큐의 모든 VM을 단일 VM 확장 집합으로 압축합니다. 직렬 작업에 대한 큐를 정의하고 여러 VM 확장 집합을 허용하려면 둘 다 resources_defaultdefault_chunk대해 설정합니다ungrouped = true. 또한 스케줄러가 작업의 라운드 로빈 할당 대신 VM에 작업을 압축하도록 설정할 수도 resources_default.place = pack 있습니다. PBS 작업 압축에 대한 자세한 내용은 공식 PBS 전문 OSS 설명서를 참조하세요.

PBS Professional 구성 참조

다음은 기능을 사용자 지정하기 위해 전환할 수 있는 PBS Professional 특정 구성 옵션입니다.

PBS Pro 옵션 설명
pbspro.slots PBS Pro에 보고할 지정된 노드의 슬롯 수입니다. 슬롯 수는 노드에서 실행할 수 있는 동시 작업 수이며, 이 값은 기본적으로 지정된 컴퓨터의 CPU 수로 설정됩니다. CPU를 기반으로 작업을 실행하지 않고 메모리, GPU 등에서 작업을 실행하는 경우 이 값을 재정의할 수 있습니다.
pbspro.slot_type 노드가 제공하는 '슬롯' 형식의 이름입니다. 기본값은 'execute'입니다. 작업이 하드 리소스 slot_type=<type>로 태그가 지정되면 해당 작업은 동일한 슬롯 유형의 컴퓨터에서 실행됩니다. 이렇게 하면 노드당 서로 다른 소프트웨어 및 하드웨어 구성을 만들고 올바른 유형의 노드에서 적절한 작업이 항상 예약되도록 할 수 있습니다.
pbspro.version 기본값: '18.1.3-0'. 설치하고 실행할 PBS Professional 버전입니다. 이 옵션은 현재 기본 및 유일한 옵션입니다. 향후 PBS Professional 소프트웨어의 추가 버전이 지원될 수 있습니다.

CycleCloud와 PBS 연결

CycleCloud는 설치 azpbs가능한 에이전트를 통해 OpenPBS 클러스터를 관리합니다. 이 에이전트는 CycleCloud에 연결하여 클러스터 및 VM 구성을 읽고 OpenPBS와 통합되어 작업 및 호스트 정보를 효과적으로 처리합니다. 모든 azpbs 구성은 일반적으로 파일에서 autoscale.json 찾을 수 있습니다 /opt/cycle/pbspro/autoscale.json.

  "password": "260D39rWX13X",
  "url": "https://cyclecloud1.contoso.com",
  "username": "cyclecloud_api_user",
  "logging": {
    "config_file": "/opt/cycle/pbspro/logging.conf"
  },
  "cluster_name": "mechanical_grid",

중요한 파일

에이전트는 azpbs 작업, 큐, 리소스 등 호출할 때마다 PBS 구성을 구문 분석합니다. 정보는 구성 가능한 수준에서 모두 로그 파일뿐만 아니라 명령의 stderr 및 stdout에 제공됩니다. 인수가 있는 모든 PBS 관리 명령(qcmd)도 파일에 기록됩니다.

이러한 모든 파일은 에이전트가 설치된 /opt/cycle/pbspro/ 디렉터리에서 찾을 수 있습니다.

파일 위치 Description
자동 크기 조정 구성 autoscale.json 자동 크기 조정, 리소스 맵, CycleCloud 액세스 정보에 대한 구성
자동 크기 조정 로그 autoscale.log CycleCloud 호스트 관리를 포함한 에이전트 주 스레드 로깅
수요 로그 demand.log 리소스 일치에 대한 자세한 로그
qcmd 추적 로그 qcmd.log 에이전트 qcmd 호출 로깅
로깅 구성 logging.conf 마스크 및 파일 위치 로깅을 위한 구성

OpenPBS 리소스 정의

이 프로젝트를 사용하면 일반적으로 cyclecloud-pbspro(azpbs) 프로젝트를 통해 OpenPBS 리소스를 Azure VM 리소스와 연결합니다. 에 정의된 autoscale.json이 리소스 관계입니다.

함께 제공되는 클러스터 템플릿으로 정의된 기본 리소스는 다음과 같습니다.

{"default_resources": [
   {
      "select": {},
      "name": "ncpus",
      "value": "node.vcpu_count"
   },
   {
      "select": {},
      "name": "group_id",
      "value": "node.placement_group"
   },
   {
      "select": {},
      "name": "host",
      "value": "node.hostname"
   },
   {
      "select": {},
      "name": "mem",
      "value": "node.memory"
   },
   {
      "select": {},
      "name": "vm_size",
      "value": "node.vm_size"
   },
   {
      "select": {},
      "name": "disk",
      "value": "size::20g"
   }]
}

명명된 mem OpenPBS 리소스는 모든 가상 머신의 총 메모리인 노드 특성 node.memory과 동일시됩니다. 이 구성을 azpbs 사용하면 작업 리소스 요구 사항의 값을 노드 리소스와 비교하여 리소스 -l mem=4gb 요청을 처리할 수 있습니다.

디스크는 현재 하드 코딩되어 있습니다 size::20g. 다음은 VM 크기 특정 디스크 크기를 처리하는 예제입니다.

   {
      "select": {"node.vm_size": "Standard_F2"},
      "name": "disk",
      "value": "size::20g"
   },
   {
      "select": {"node.vm_size": "Standard_H44rs"},
      "name": "disk",
      "value": "size::2t"
   }

자동 크기 조정 및 크기 조정

CycleCloud는 OpenPBS 클러스터에서 스패닝 및 직렬 작업을 다르게 처리합니다. 스패닝 작업은 동일한 배치 그룹의 일부인 노드에 배치됩니다. 배치 그룹에는 특정 플랫폼 의미가 있으며(SinglePlacementGroup=true를 사용하는 VirtualMachineScaleSet) CC는 스패닝된 각 노드 집합에 대해 명명된 배치 그룹을 관리합니다. 이 배치 그룹 이름에 대한 PBS 리소스 group_id 를 사용합니다.

큐는 네이 hpc 티브 큐 기본값을 사용하여 동일한 -l place=scatter:group=group_id 값을 추가합니다.

CycleCloud OpenPBS 에이전트 설치 azpbs

OpenPBS CycleCloud 클러스터는 서버 노드에서 에이전트의 설치 및 구성을 관리합니다. 준비에는 PBS 리소스, 큐 및 후크 설정이 포함됩니다. 스크립터된 설치는 CycleCloud 외부에서도 수행할 수 있습니다.

# Prerequisite: python3, 3.6 or newer, must be installed and in the PATH
wget https://github.com/Azure/cyclecloud-pbspro/releases/download/2.0.5/cyclecloud-pbspro-pkg-2.0.5.tar.gz
tar xzf cyclecloud-pbspro-pkg-2.0.5.tar.gz
cd cyclecloud-pbspro

# Optional, but recommended. Adds relevant resources and enables strict placement
./initialize_pbs.sh

# Optional. Sets up workq as a colocated, MPI focused queue and creates htcq for non-MPI workloads.
./initialize_default_queues.sh

# Creates the azpbs autoscaler
./install.sh  --venv /opt/cycle/pbspro/venv

# Otherwise insert your username, password, url, and cluster name here.
./generate_autoscale_json.sh --install-dir /opt/cycle/pbspro \
                             --username user \
                             --password password \
                             --url https://fqdn:port \
                             --cluster-name cluster_name

azpbs validate

CycleCloud는 스케줄러에서 표준 자동 중지 특성 집합을 지원합니다.

attribute 설명
cyclecloud.cluster.autoscale.stop_enabled 이 노드에서 autostop을 사용할 수 있나요? [true/false]
cyclecloud.cluster.autoscale.idle_time_after_jobs 노드가 축소되기 전에 작업을 완료한 후 유휴 상태로 앉을 시간(초)입니다.
cyclecloud.cluster.autoscale.idle_time_before_jobs 노드가 축소되기 전에 작업을 완료하기 전에 유휴 상태로 앉을 시간(초)입니다.

참고

CycleCloud는 Open PBS를 사용하여 버스팅 구성을 지원하지 않습니다.

참고

Windows는 공식적으로 지원되는 Open PBS 플랫폼이지만 CycleCloud는 현재 Windows에서 Open PBS 실행을 지원하지 않습니다.