SGE 자동 구성 소모품 리소스?

SGE 자동 구성 소모품 리소스?

starcluster라는 도구를 사용하고 있습니다.http://star.mit.edu/clusterAmazon 클라우드에서 SGE로 구성된 클러스터를 부팅합니다. 문제는 SLOTS를 제외하고는 미리 설정된 소모성 리소스로 구성되어 있지 않은 것 같은데, qsub -l slots=X. 클러스터를 부팅할 때마다 다른 유형의 EC2 노드를 요청할 수 있으므로 이 슬롯 리소스가 사전 구성되어 있다는 사실은 정말 좋습니다. 사전 구성된 병렬 환경을 사용하여 특정 개수의 슬롯을 요청할 수 있지만 문제는 MPI용으로 설정되었기 때문에 해당 병렬 환경을 사용하여 슬롯을 요청하면 여러 컴퓨팅 노드에 분산된 작업 슬롯이 부여되는 경우가 있습니다.

1) 단일 노드에서 슬롯을 요청할 때 starcluster가 설정하는 기존의 사전 구성된 HOST=X 슬롯 설정을 활용하는 병렬 환경을 만들거나 2) SGE가 제공하는 일종의 리소스를 사용하는 방법이 있습니까? 자동으로 인식되나요? 실행하면 및 가 내가 볼 수 있는 어디에도 정의되어 있지 않더라도 SGE가 어떻게든 해당 리소스를 인식하고 있다고 qhost생각됩니다 . 각각의 사용 가능한 양을 명시적으로 정의하지 않고도 해당 리소스를 요청 가능하게 만들 수 있는 설정이 있습니까?NCPUMEMTOT

시간 내 줘서 고마워!

qhost산출:

HOSTNAME                ARCH         NCPU  LOAD  MEMTOT  MEMUSE  SWAPTO  SWAPUS
-------------------------------------------------------------------------------
global                  -               -     -       -       -       -       -
master                  linux-x64       2  0.01    7.3G  167.4M     0.0     0.0
node001                 linux-x64       2  0.01    7.3G  139.6M     0.0     0.0

qconf -mc산출:

#name               shortcut   type        relop requestable consumable default  urgency 
#----------------------------------------------------------------------------------------
arch                a          RESTRING    ==    YES         NO         NONE     0
calendar            c          RESTRING    ==    YES         NO         NONE     0
cpu                 cpu        DOUBLE      >=    YES         NO         0        0
display_win_gui     dwg        BOOL        ==    YES         NO         0        0
h_core              h_core     MEMORY      <=    YES         NO         0        0
h_cpu               h_cpu      TIME        <=    YES         NO         0:0:0    0
h_data              h_data     MEMORY      <=    YES         NO         0        0
h_fsize             h_fsize    MEMORY      <=    YES         NO         0        0
h_rss               h_rss      MEMORY      <=    YES         NO         0        0
h_rt                h_rt       TIME        <=    YES         NO         0:0:0    0
h_stack             h_stack    MEMORY      <=    YES         NO         0        0
h_vmem              h_vmem     MEMORY      <=    YES         NO         0        0
hostname            h          HOST        ==    YES         NO         NONE     0
load_avg            la         DOUBLE      >=    NO          NO         0        0
load_long           ll         DOUBLE      >=    NO          NO         0        0
load_medium         lm         DOUBLE      >=    NO          NO         0        0
load_short          ls         DOUBLE      >=    NO          NO         0        0
m_core              core       INT         <=    YES         NO         0        0
m_socket            socket     INT         <=    YES         NO         0        0
m_topology          topo       RESTRING    ==    YES         NO         NONE     0
m_topology_inuse    utopo      RESTRING    ==    YES         NO         NONE     0
mem_free            mf         MEMORY      <=    YES         NO         0        0
mem_total           mt         MEMORY      <=    YES         NO         0        0
mem_used            mu         MEMORY      >=    YES         NO         0        0
min_cpu_interval    mci        TIME        <=    NO          NO         0:0:0    0
np_load_avg         nla        DOUBLE      >=    NO          NO         0        0
np_load_long        nll        DOUBLE      >=    NO          NO         0        0
np_load_medium      nlm        DOUBLE      >=    NO          NO         0        0
np_load_short       nls        DOUBLE      >=    NO          NO         0        0
num_proc            p          INT         ==    YES         NO         0        0
qname               q          RESTRING    ==    YES         NO         NONE     0
rerun               re         BOOL        ==    NO          NO         0        0
s_core              s_core     MEMORY      <=    YES         NO         0        0
s_cpu               s_cpu      TIME        <=    YES         NO         0:0:0    0
s_data              s_data     MEMORY      <=    YES         NO         0        0
s_fsize             s_fsize    MEMORY      <=    YES         NO         0        0
s_rss               s_rss      MEMORY      <=    YES         NO         0        0
s_rt                s_rt       TIME        <=    YES         NO         0:0:0    0
s_stack             s_stack    MEMORY      <=    YES         NO         0        0
s_vmem              s_vmem     MEMORY      <=    YES         NO         0        0
seq_no              seq        INT         ==    NO          NO         0        0
slots               s          INT         <=    YES         YES        1        1000
swap_free           sf         MEMORY      <=    YES         NO         0        0
swap_rate           sr         MEMORY      >=    YES         NO         0        0
swap_rsvd           srsv       MEMORY      >=    YES         NO         0        0

qconf -me master출력(예: 노드 중 하나):

hostname              master
load_scaling          NONE
complex_values        NONE
user_lists            NONE
xuser_lists           NONE
projects              NONE
xprojects             NONE
usage_scaling         NONE
report_variables      NONE

qconf -msconf산출:

algorithm                         default
schedule_interval                 0:0:15
maxujobs                          0
queue_sort_method                 load
job_load_adjustments              np_load_avg=0.50
load_adjustment_decay_time        0:7:30
load_formula                      np_load_avg
schedd_job_info                   false
flush_submit_sec                  0
flush_finish_sec                  0
params                            none
reprioritize_interval             0:0:0
halftime                          168
usage_weight_list                 cpu=1.000000,mem=0.000000,io=0.000000
compensation_factor               5.000000
weight_user                       0.250000
weight_project                    0.250000
weight_department                 0.250000
weight_job                        0.250000
weight_tickets_functional         0
weight_tickets_share              0
share_override_tickets            TRUE
share_functional_shares           TRUE
max_functional_jobs_to_schedule   200
report_pjob_tickets               TRUE
max_pending_tasks_per_job         50
halflife_decay_list               none
policy_hierarchy                  OFS
weight_ticket                     0.010000
weight_waiting_time               0.000000
weight_deadline                   3600000.000000
weight_urgency                    0.100000
weight_priority                   1.000000
max_reservation                   0
default_duration                  INFINITY

qconf -mq all.q산출:

qname                 all.q
hostlist              @allhosts
seq_no                0
load_thresholds       np_load_avg=1.75
suspend_thresholds    NONE
nsuspend              1
suspend_interval      00:05:00
priority              0
min_cpu_interval      00:05:00
processors            UNDEFINED
qtype                 BATCH INTERACTIVE
ckpt_list             NONE
pe_list               make orte
rerun                 FALSE
slots                 1,[master=2],[node001=2]
tmpdir                /tmp
shell                 /bin/bash
prolog                NONE
epilog                NONE
shell_start_mode      posix_compliant
starter_method        NONE
suspend_method        NONE
resume_method         NONE
terminate_method      NONE
notify                00:00:60
owner_list            NONE
user_lists            NONE
xuser_lists           NONE
subordinate_list      NONE
complex_values        NONE
projects              NONE
xprojects             NONE
calendar              NONE
initial_state         default
s_rt                  INFINITY
h_rt                  INFINITY
s_cpu                 INFINITY
h_cpu                 INFINITY
s_fsize               INFINITY
h_fsize               INFINITY
s_data                INFINITY
h_data                INFINITY
s_stack               INFINITY
h_stack               INFINITY
s_core                INFINITY
h_core                INFINITY
s_rss                 INFINITY

답변1

제가 찾은 해결책은 $pe_slots할당 규칙이 있는 새로운 병렬 환경을 만드는 것입니다(참고자료 참조 man sge_pe). $pe_slots슬롯 사용량을 노드별로 제한하므로 해당 병렬 환경에서 사용할 수 있는 슬롯 수를 최대값과 동일하게 설정했습니다 . starcluster는 클러스터 부팅 시 슬롯을 설정하므로 이 방법이 훌륭하게 작동하는 것 같습니다. 또한 새 병렬 환경을 대기열에 추가해야 합니다. 그래서 이것을 간단하게 만들려면 다음과 같이 하십시오.

qconf -ap by_node

파일을 편집한 후의 내용은 다음과 같습니다.

pe_name            by_node
slots              9999999
user_lists         NONE
xuser_lists        NONE
start_proc_args    /bin/true
stop_proc_args     /bin/true
allocation_rule    $pe_slots
control_slaves     TRUE
job_is_first_task  TRUE
urgency_slots      min
accounting_summary FALSE

all.q또한 이 새로운 병렬 환경을 목록에 추가하려면 대기열(starcluster에 의해 호출됨)을 수정하십시오 .

qconf -mq all.q

다음 줄을 변경하세요.

pe_list               make orte

이에:

pe_list               make orte by_node

특정 작업에서 생성된 작업이 단일 노드로 제한될까 봐 걱정했는데, 그렇지 않은 것 같습니다. 두 개의 노드와 각각 두 개의 슬롯이 있는 클러스터가 있습니다.

다음과 같은 테스트 파일을 만들었습니다.

#!/bin/bash

qsub -b y -pe by_node 2 -cwd sleep 100

sleep 100

다음과 같이 실행했습니다.

qsub -V -pe by_node 2 test.sh

잠시 후 qstat서로 다른 노드에서 실행 중인 두 작업이 모두 표시됩니다.

job-ID  prior   name       user         state submit/start at     queue                          slots ja-task-ID
-----------------------------------------------------------------------------------------------------------------
     25 0.55500 test       root         r     10/17/2012 21:42:57 all.q@master                       2      
     26 0.55500 sleep      root         r     10/17/2012 21:43:12 all.q@node001                      2  

또한 단일 노드에서 동일한 수의 슬롯을 요청하는 동시에 3개의 작업을 제출하고 노드당 하나씩, 한 번에 2개만 실행하는 것을 테스트했습니다. 그럼 제대로 설정이 된 것 같네요!

관련 정보