HTCondor
클러스터 정의의 구성 섹션에서 "run_list"을 수정하여 CycleCloud 클러스터에서 HTCondor를 쉽게 사용하도록 설정할 수 있습니다. HTCondor 클러스터에는 세 가지 기본 구성 요소가 있습니다. 첫 번째는 일정 및 관리 디먼을 제공하는 "중앙 관리자"입니다. 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에 대한 자동 크기 조정을 지원합니다. 즉, 소프트웨어는 최적의 시간/비용으로 작업을 완료하기 위해 필요에 따라 큐 상태를 모니터링하고 노드를 켜고 끕니다. 클러스터 정의에 추가하여 Autoscale=true
HTCondor에 대해 자동 크기 조정을 사용하도록 설정할 수 있습니다.
[cluster htcondor]
Autoscale = True
HTCondor 고급 사용
작업의 평균 런타임을 알고 있는 경우 작업에서(분) 정의 average_runtime
할 수 있습니다. CycleCloud는 최소 노드 수를 시작하는 데 사용합니다(예: 10분 작업 5개는 10으로 설정된 경우 average_runtime
5개가 아닌 단일 노드만 시작함).
Nodearray 자동 크기 조정
기본적으로 HTCondor는 'execute'라는 nodearray에서 코어를 요청합니다. 작업에 다른 nodearray가 필요한 경우(예를 들어 워크플로 내의 특정 작업에 높은 메모리 요구 사항이 있는 경우) 작업에 대한 특성을 지정할 slot_type
수 있습니다. 예를 들어 추가 +slot_type = "highmemory"
하면 HTCondor가 "실행" 대신 "highmemory" nodearray에서 노드를 요청합니다(현재 nodearray의 [[[configuration]]]
섹션에서 설정해야 함htcondor.slot_type = "highmemory"
). 이는 HTCondor가 작업을 예약하는 방식에 영향을 미치지 않으므로 작업 또는 rank
식에 requirements
시작 특성을 포함 slot_type
할 수 있습니다. 예: 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.install_dir | HTCondor가 설치된 디렉터리입니다. 기본값: /opt/condor(Linux), C:\condor(Windows) |
htcondor.job_start_count | schedd가 주기별로 시작하는 작업 수입니다. 0은 무제한입니다. 기본값: 20 |
htcondor.job_start_delay | 각 작업 시작 간격 사이의 초 수입니다. 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이면 협상가가 작업과 일치할 때 시작되었음을 알릴 수 있습니다. 기본값: 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.update_interval | 수집기 업데이트를 게시하기 시작한 간격(초)입니다. 기본값: 240 |
htcondor.use_cache_config | true이면 cache_config 사용하여 구성을 위해 인스턴스 폴링 CycleServer를 갖습니다. 기본값: false |
htcondor.version | 설치할 HTCondor의 버전입니다. 기본값: 8.2.6 |
HTCondor 자동 생성 구성 파일
HTCondor에는 사용자 정의 특성을 포함하여 많은 수의 구성 설정이 있습니다. CycleCloud는 클러스터에 정의된 특성을 사용하여 사용자 지정 구성 파일을 만드는 기능을 제공합니다.
attribute | 설명 |
---|---|
htcondor.custom_config.enabled | true이면 지정된 특성을 사용하여 구성 파일이 생성됩니다. 기본값: false |
htcondor.custom_config.file_name | 쓸 파일의 이름(/config에 htcondor.data_dir 배치됨)입니다. 기본값: ZZZ-custom_config.txt |
htcondor.custom_config.settings | 사용자 지정 구성 파일에 쓸 특성(예: ) htcondor.custom_config.settings.max_jobs_running = 5000 |
참고
를 포함하는 HTCondor 구성 특성 이 메서드를 사용하여 지정할 수 없습니다. 이러한 특성이 필요한 경우 cookbook 또는 cluster-init와 함께 설치된 파일에 지정해야 합니다.
CycleCloud는 스케줄러에서 표준 자동 중지 특성 집합을 지원합니다.
attribute | 설명 |
---|---|
cyclecloud.cluster.autoscale.stop_enabled | 이 노드에서 autostop을 사용할 수 있나요? [true/false] |
cyclecloud.cluster.autoscale.idle_time_after_jobs | 노드가 축소되기 전에 작업을 완료한 후 유휴 상태로 앉을 시간(초)입니다. |
cyclecloud.cluster.autoscale.idle_time_before_jobs | 노드가 축소되기 전에 작업을 완료하기 전에 유휴 상태로 앉을 시간(초)입니다. |