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는 동적 프로비저닝 기능을 확장하기 위해 두 개의 리소스를 유지 관리합니다. 이러한 리소스는 nodearray 및 machinetype입니다.
작업을 제출하고 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_default
에 default_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 실행을 지원하지 않습니다.