클러스터 정의의 구성 섹션에서 수정하여 CycleCloud 클러스터에서 HTCondor 를 run_list 사용하도록 설정할 수 있습니다. HTCondor 클러스터에는 세 가지 기본 구성 요소가 있습니다. 첫 번째는 예약 및 관리 디먼을 제공하는 중앙 관리자입니다. 두 번째 구성 요소는 작업이 시스템에 제출되는 하나 이상의 스케줄러입니다. 최종 구성 요소는 계산을 수행하는 호스트인 하나 이상의 실행 노드입니다. 간단한 HTCondor 템플릿은 다음과 같습니다.
[cluster htcondor]
[[node manager]]
ImageName = cycle.image.centos7
MachineType = Standard_A4 # 8 cores
[[[configuration]]]
run_list = role[central_manager]
[[node scheduler]]
ImageName = cycle.image.centos7
MachineType = Standard_A4 # 8 cores
[[[configuration]]]
run_list = role[condor_scheduler_role],role[filer_role],role[scheduler]
[[nodearray execute]]
ImageName = cycle.image.centos7
MachineType = Standard_A1 # 1 core
Count = 1
[[[configuration]]]
run_list = role[usc_execute]
CycleCloud에서 이 정의를 사용하여 클러스터를 가져오고 시작하면 관리자 및 스케줄러 노드와 하나의 실행 노드가 생성됩니다.
명령을 사용하여 cyclecloud add_node 노드를 클러스터에 추가할 수 있습니다. 10개의 실행 노드를 더 추가하려면 다음 명령을 사용합니다.
cyclecloud add_node htcondor -t execute -c 10
HTCondor 자동 크기 조정
CycleCloud는 HTCondor에 대한 자동 크기 조정을 지원합니다. 소프트웨어는 큐의 상태를 모니터링하고 필요에 따라 노드를 켜고 꺼서 최적의 시간과 비용으로 작업을 완료합니다. HTCondor에 자동 크기 조정을 사용하도록 설정하려면 클러스터 정의에 추가 Autoscale=true 합니다.
[cluster htcondor]
Autoscale = True
HTCondor 고급 사용
작업의 평균 실행 시간을 알고 있다면, 작업에서 average_runtime을(를) 분 단위로 정의하세요. CycleCloud는 이 값을 사용하여 최소 노드 수를 시작합니다. 예를 들어 5개의 10분 작업이 제출되고 average_runtime 10으로 설정된 경우 CycleCloud는 5개가 아닌 하나의 노드만 시작합니다.
Nodearray 자동 크기 조정
기본적으로 HTCondor는 execute라는 nodearray에서 코어를 요청합니다. 작업에 다른 nodearray가 필요한 경우(예: 워크플로 내의 특정 작업에 높은 메모리 요구 사항이 있는 경우) 작업에 대한 특성을 지정 slot_type 합니다. 예를 들어 +slot_type = "highmemory"를 추가하면 HTCondor가 highmemory 대신 execute nodearray에서 노드를 요청합니다(이 설정은 현재 nodearray의 htcondor.slot_type = "highmemory" 섹션에 [[[configuration]]]가 설정되어 있어야 합니다). 이 설정은 HTCondor가 작업을 예약하는 방식에 영향을 주지 않으므로 작업의 slot_type 또는 requirements 식에 rank startd 속성을 포함할 수 있습니다. 예: Requirements = target.slot_type = "highmemory".
HTCondor에 작업 제출
HTCondor 스케줄러에 작업을 제출하는 가장 일반적인 방법은 명령(스케줄러 노드에서 실행)입니다.
condor_submit my_job.submit
샘플 제출 파일은 다음과 같을 수 있습니다.
Universe = vanilla
Executable = do_science
Arguments = -v --win-prize=true
Output = log/$(Cluster).$(Process).out
Error = log/$(Cluster).$(Process).err
Should_transfer_files = if_needed
When_to_transfer_output = On_exit
+average_runtime = 10
+slot_type = "highmemory"
Queue
HTCondor 구성 참조
다음 HTCondor 관련 구성 옵션은 기능을 사용자 지정합니다.
| HTCondor-Specific 구성 옵션 | 설명 |
|---|---|
| htcondor.agent_enabled | true이면 작업 제출 및 폴링에 condor_agent 사용합니다. 기본값: false |
| htcondor.agent_version | 사용할 condor_agent 버전입니다. 기본값: 1.27 |
| htcondor.classad_lifetime | classads의 기본 수명(초)입니다. 기본값: 700 |
| htcondor.condor_owner | HTCondor 스케일 다운 스크립트를 소유하는 Linux 계정입니다. 기본값: root |
| htcondor.condor_group | HTCondor 축소 스크립트를 소유하는 Linux 그룹입니다. 기본값: root |
| htcondor.data_dir | 로그, 스풀 디렉터리, 실행 디렉터리 및 로컬 구성 파일에 대한 디렉터리입니다. 기본값: /mnt/condor_data(Linux), C:\All Services\condor_local(Windows) |
| htcondor.ignore_hyperthreads | (Windows에만 해당) CPU 수를 검색된 CPU의 절반으로 설정하여 하이퍼스레딩을 "사용하지 않도록 설정"합니다. 자동 크기 조정을 사용하는 경우 [[node]] 또는 [[nodearray]] 섹션에서 구성 설정을 사용하여 하이퍼스레드가 아닌 코어 수를 Cores 지정합니다. 기본값: false |
| htcondor 설치 경로 | HTCondor가 설치된 디렉터리입니다. 기본값: /opt/condor(Linux), C:\condor(Windows) |
| htcondor.job_start_count | schedd가 사이클당 시작하는 작업 수입니다. 0은 무제한입니다. 기본값: 20 |
| htcondor.작업_시작_지연 | 각 작업 시작 간격 사이의 시간(초)입니다. 0은 즉시입니다. 기본값: 1 |
| htcondor.max_history_log | 작업 기록 파일의 최대 크기(바이트)입니다. 기본값: 20971520 |
| htcondor.max_history_rotations | 유지할 작업 기록 파일의 최대 수입니다. 기본값: 20 |
| htcondor.negotiator_cycle_delay | 새 협상 주기를 시작할 수 있는 최소 시간(초)입니다. 기본값: 20 |
| htcondor.negotiator_interval | condor_negotiator가 협상 주기를 시작하는 빈도(초)입니다. 기본값: 60 |
| htcondor.negotiator_inform_startd | true인 경우, 협상자는 작업과 일치할 때 startd에 알립니다. 기본값: true |
| htcondor.remove_stopped_nodes | true이면 중지된 실행 노드가 "down"으로 표시되지 않고 CycleServer 보기에서 제거됩니다. |
| htcondor.running | true이면 HTCondor 수집기 및 협상가 디먼이 중앙 관리자에서 실행됩니다. 그렇지 않으면 condor_master만 실행됩니다. 기본값: true |
| htcondor.scheduler_dual | true이면 스케줄러는 두 개의 schedd를 실행합니다. 기본값: true |
| htcondor.single_slot | true이면 머신이 소유하는 코어 수에 관계없이 컴퓨터를 단일 슬롯으로 처리합니다. 기본값: false |
| htcondor.slot_type | 자동 크기 조정을 위한 노드 배열의 slot_type 정의합니다. 기본값: execute |
| htcondor.업데이트_간격 | startd가 수집기에 업데이트를 게시하는 간격(초)입니다. 기본값: 240 |
| htcondor.use_cache_config | true인 경우, cache_config를 사용하여 인스턴스가 구성을 위해 CycleServer를 폴링합니다. 기본값: false |
| htcondor.version | 설치할 HTCondor의 버전입니다. 기본값: 8.2.6 |
HTCondor 자동 생성 구성 파일
HTCondor에는 사용자 정의 특성을 포함하여 많은 수의 구성 설정이 있습니다. CycleCloud는 클러스터에 정의된 특성을 사용하여 사용자 지정 구성 파일을 만드는 기능을 제공합니다.
| 특성 | 설명 |
|---|---|
| htcondor.custom_config.enabled | true이면 지정된 특성을 사용하여 구성 파일이 생성됩니다. 기본값: false |
| htcondor.custom_config.file_name | 쓸 파일의 이름(htcondor.data_dir/config에 배치됨)입니다. 기본값: ZZZ-custom_config.txt |
| HTCondor 사용자 정의 구성 설정 | 사용자 지정 구성 파일에 쓸 특성(예: ) htcondor.custom_config.settings.max_jobs_running = 5000 |
비고
이 메서드를 사용하여 포함하는 . HTCondor 구성 특성을 지정할 수 없습니다. 이러한 특성이 필요한 경우 쿡북 또는 설치된 파일에 cluster-init지정합니다.
CycleCloud는 스케줄러에서 표준 자동 중지 특성 집합을 지원합니다.
| 특성 | 설명 |
|---|---|
| 사이클클라우드 클러스터 자동 확장 중지 활성화 | 이 노드에서 자동 스탑을 사용하도록 설정합니다. [참/거짓] |
| cyclecloud.cluster.autoscale.idle_time_after_jobs | 노드가 작업을 완료한 후 자동으로 멈출 때까지 유휴 상태로 앉을 시간(초)입니다. |
| cyclecloud.cluster.autoscale.idle_time_before_jobs | 노드가 자동 멈출 때까지 작업을 완료하기 전에 유휴 상태로 앉을 시간(초)입니다. |