Planleggerintegrasjon.

Sykkelveiledninger.

CycleCloud-plattformen har innebygd, forsteklasses stotte for flere ruteplanleggingsprogramvarelosninger som muliggjor forenklet ressurs- og jobbadministrasjon i skyen. CycleCloud kan automatisk opprette, administrere og skala flere kjente og allment vedtatte planleggingsteknologier, inkludert men ikke begrenset til: Open Grid Scheduler (Grid Engine), HTCondor, PBS Pro og Torque, samt Cycle’s own Jupiter scheduler .

Apne Grid Scheduler (Grid Engine)

For informasjon og dokumentasjon pa Grid Engine ,, vennligst besok nettsiden.

Apne Grid Scheduler (Grid Engine) kan enkelt aktiveres pa en CycleCloud-klynge ved a endre & # 8220; run_list & # 8221; i konfigurasjonsdelen av klusterdefinisjonen. De to grunnleggende komponentene i en Grid Engine-klynge er & # 8216; mesteren & # 8217; node som gir et delt filsystem som Grid Engine-programvaren kjorer, og & # 8216; kjore & # 8217; noder som er vertene som monterer det delte filsystemet og utforer de oppgitte jobbene. For eksempel kan en enkel Grid Engine Cluster Template Snippet se ut som:

Rollenavnene inneholder & # 8216; sge & # 8217; Av eldgamle arsaker: Grid Engine var et produkt av Sun Microsystems.

Importerer og starter en klynge med definisjon i CycleCloud gir en enkelt & # 8216; mester & # 8217; node. Utfor noder kan legges til klyngen via & # 8216; cyclecloud add_node & # 8217; kommando. For eksempel, for a legge til 10 flere eksekute noder:

Autoskalering.

CycleCloud stotter autoscaling for Grid Engine, som betyr at programvaren vil overvake statusen til koen din og sla pa og av noder etter behov for a fullfore arbeidet i optimal tid / kostnad. Du kan aktivere autoscaling for Grid Engine ved a legge til Autoscale = true til clusterdefinisjonen din:

For autoscaling til arbeid ma nodene i skyen ha en rute tilbake til CycleCloud-maskinen. Den enkleste maten a oppna dette pa er a installere CycleCloud-forekomsten i skyen sammen med noderne det vil spinne opp. Alternativt, hvis du er i et VPC-miljo, kan du sette opp en rute tilbake til maskinen din, port videresende CycleCloud-porten pa ruteren din til maskinen, eller bruk funksjonen IsReturnProxy.

Som standard vil alle jobber som sendes inn i Grid Engine-koen kjore pa maskiner av typen & # 8216; kjore & # 8217; disse er maskiner som er definert av nodearrangementet heter & # 8220; kjore & # 8221 ;. Du er ikke begrenset til navnet & # 8216; kjore & # 8217;, og du er heller ikke begrenset til en enkelt type maskinkonfigurasjon for a kjore jobber og autoskala pa.

Som et eksempel kan det v re en vanlig sak at du har en klynge med to forskjellige nodedefinisjoner en er for a kjore & # 8216; normal & # 8217; jobber som bruker standard CPU mens en annen type jobb kan bruke GPU-maskiner. I dette tilfellet vil du selvstendig skalere koen din ved bade normale jobber og GPU-jobber for a sikre at du har en passende mengde av hver maskin for a forbruke arbeidsoen. Et eksempel definisjon ville v re noe som:

I eksemplet ovenfor er det na to node-arrayer: En er en & # 8216; standard & # 8217; Kjor nod-array, den andre heter & # 8216; gpu & # 8217; Gir en MachineType som har to Nvidia GPU (Standard_NV12 i Microsoft Azure). V r ogsa oppmerksom pa at det na er to nye elementer i konfigurasjonsseksjonen, i tillegg til csge :: sgeexec oppskrift. Vi legger til grid_engine.slot_type = gpu, som forteller Grid Engine scheduler at disse nodene skal bli kalt & # 8216; gpu & # 8217; noder og dermed burde bare kjore & # 8216; gpu & # 8217; arbeidsplasser. Navnet & # 8216; gpu & # 8217; er vilkarlig, men et navn som beskriver noden er mest nyttig. Vi stiller ogsa grid_engine.slots = 2, som forteller programvaren for a sikre at denne typen knutepunkt kun kan kjore to jobber samtidig (Standard_NV12 har bare 2 GPUer). Som standard vil antall slots per node i Grid Engine v re antall CPUer pa systemet som i dette tilfellet ville forarsake for mange jobber til samtidig a utfore pa noden.

Du kan verifisere antall spor og spor_type maskinene dine har ved a kjore kommandoen:

Legg merke til at det er en av hver & # 8216; slot_type & # 8217; som vi spesifiserte (kjore og gpu) og antall spor for & # 8216; utfore & # 8217; Sporet er 4, hvilket er antall CPUer pa maskinen. Antall spor for & # 8216; gpu & # 8217; Slottstype er 2, som vi spesifiserte i var konfigurasjonsmall for kluster. Den tredje maskinen er hovednoden som ikke kjorer jobber.

Avansert bruk.

Ovennevnte konfigurasjonsinnstillinger tillater avansert tilpasning av noder og node arrays. Hvis jobber for eksempel krever en bestemt mengde minne, si 10 GB hver, kan du definere et utforende nodearray som starter maskiner med 60 GB minne, og legg deretter til i konfigureringsalternativene grid_engine.slots = 6 for a sikre at bare 6 jobber kan kjore samtidig pa denne typen node (slik at hver jobb har minst 10 GB minne for a jobbe med).

Grupperte noder.

Nar en parallell jobb sendes til gridmotor, vil den standard autoskalaadferansen som CycleCloud skal bruke, behandle hver MPI-jobb som en gruppert nodepamelding (se dokumentasjonen for gruppert nodes i autoskala-dokumentasjonen for mer informasjon). Grupperte noder er tettkoblet og ideelt for MPI-arbeidsflyter.

Nar et sett med grupperte noder slar seg sammen med en Grid Engine-klyngen, brukes gruppens ID for hver node som verdien av den komplekse verdien affinity_group. Ved a kreve at en affinity_group skal spesifiseres for jobber, tillater det at Grid Engine scheduler sorger for at jobber bare lander pa maskiner som er i samme gruppe.

CycleClouds automasjon vil automatisk be om grupperte noder og tilordne dem til tilgjengelige affinitetsgrupper nar parallelle jobber oppstar.

Grupperte noder stottes bare i AWS og kan aktiveres ved a sette cyclecloud.cluster.autoscale.use_node_groups = true i konfigurasjonsdelen for Grid Engine-hovedknutepunktet.

Sender jobber.

Den mest generiske maten a sende inn jobber til en Grid Engine scheduler, er kommandoen:

Denne kommandoen vil sende inn en jobb som vil kjore pa en node av typen & # 8216; utfore & # 8217;, det er en node definert av nodearrayen & # 8216; utfore & # 8217 ;. For a gjore en jobb kjort pa et nodearray av en annen type, for eksempel, er & # 8216; gpu & # 8217; node type ovenfor, endrer vi innleveringen var:

Denne kommandoen sikrer at jobben bare kjorer pa en & # 8216; slot_type & # 8217; av & # 8216; gpu & # 8217 ;.

Hvis slot_type utelates, utforer & # 8216; & # 8217; vil automatisk bli tildelt jobben. Mekanismen som automatisk tilordner slot_type & # 8217; s til jobber, kan endres av brukeren. Et pythonskript plassert pa /opt/cycle/jetpack/config/autoscale.py kan opprettes som skal definere en enkelt funksjon & # 8220; sge_job_handler & # 8221 ;. Denne funksjonen mottar en ordbokspresentasjon av jobben, ligner utgangen av en & # 8216; qstat -j & lt; jobID & gt; & # 8217; kommandoen og skal returnere en ordbok med harde ressurser som ma oppdateres for jobben. Som et eksempel nedenfor er et skript som vil tilordne en jobb til & # 8216; gpu & # 8217; slot_type hvis jobbenavnet inneholder bokstavene & # 8216; gpu & # 8217 ;. Dette vil tillate en bruker a sende inn jobber fra et automatisert system uten a matte endre jobbparametrene og fortsatt ha jobbene kjort pa og autoskala de riktige noder:

#! / usr / env python # # Fil: /opt/cycle/jetpack/config/autoscale.py # def sge_job_handler (jobb):

# Ikke endre noe hvis jobben allerede har en spaltype # Du kan endre spiltypen ved kjoretid ved ikke a sjekke dette hvis & # 8216; hard_resources & # 8217; i jobb og & # 8216; slot_type & # 8217; i jobb [& # 8216; hard_resources & # 8217;]:

# Hvis jobbens skriptnavn inneholder strengen & # 8216; gpu & # 8217; da antas det a v re en GPU-jobb. # Returner en ordbok som inneholder det nye job_slot-kravet som skal oppdateres. # For eksempel: & # 8216; big_data_gpu.sh & # 8217; ville bli kjort pa en & # 8216; gpu & # 8217; node. hvis jobb [& # 8216; job_name & # 8217;] finner (& # 8216; gpu & # 8217;)! = -1:

Parameteren & # 8216; jobb & # 8217; passet inn er en ordbok som inneholder dataene i en & # 8216; qstat -j & lt; jobID & gt; & # 8217; anrop:

Du kan bruke denne skriptfunksjonaliteten til a automatisk tilordne & # 8216; slot_type & # 8217; s basert pa hvilken som helst parameter som er definert i jobben, for eksempel argumenter, andre ressursbehov som minne, sende bruker osv.

Fortsetter eksempelet hvis vi skulle sende inn 5 jobber av hver & # 8216; slot_type & # 8217 ;:

Det ville na v re 10 jobber i koen. Pa grunn av skriptet som er definert ovenfor, har de fem jobbene med & # 8216; gpu & # 8217; i navnet ville bli automatisk konfigurert til bare a kjore pa noder av & # 8216; slot_type = gpu & # 8217 ;. CycleCloud autoscale mekanismen vil oppdage at det er 5 & # 8216; gpu & # 8217; jobber og 5 & # 8216; utfor & # 8217; arbeidsplasser. Siden & # 8216; gpu & # 8217; nodearray er definert som a ha 2 spor per node, CycleCloud ville starte 3 av disse noder (5/2 = 2,5 avrundet opp til 3). Det er 5 normale jobber, siden maskinstype for & # 8216; kjore & # 8217; nodearray har 4 CPU’er hver, CycleCloud ville starte 2 av disse noder for a handtere jobbene (5/4 = 1,25 avrundet opptil 2). Etter en kort periode for de nystartede noder a starte opp og konfigurere, vil alle 10 jobber lope til slutt, og deretter vil de 5 noder automatisk stenge for du blir fakturert igjen av Cloud Provider.

Jobber antas a ha en varighet pa en time. Hvis arbeidstiden er kjent, kan autoskalaalgoritmen ha nytte av denne informasjonen. Informer autoskala om forventet jobbtid ved a legge den til jobbkonteksten. Folgende eksempel forteller autoskala at arbeidstiden er i gjennomsnitt 10 minutter:

Konfigurasjonsreferanse.

Folgende er Grid Engine-spesifikke konfigurasjonsalternativer du kan bytte for a tilpasse funksjonalitet:

gridengine.slots Antall spor for en gitt node a rapportere til Grid Engine. Antall spor er antall samtidige jobber en knutepunkt kan utfore, denne verdien er standard pa antall CPUer pa en gitt maskin. Du kan overstyre denne verdien i tilfeller der du ikke kjorer jobber basert pa CPU, men pa minne, GPUer, etc. gridengine.slot_type Navnet pa typen av & # 8216; slot & # 8217; en node gir. Standard er & # 8216; utfor & # 8217 ;. Nar en jobb er merket med den harde ressursen & # 8216; slot_type = & lt; type & gt; & # 8217;, vil denne jobben bare kjore pa en maskin med samme spaltype. Dette gjor at du kan opprette forskjellige programvare og maskinvarekonfigurasjoner per knutepunkt og sorge for at en passende jobb alltid er planlagt pa riktig type knutepunkt. gridengine.ignore_fqdn Standard: true. Sett til false hvis alle noder i klyngen din ikke er en del av et enkelt DNS-domene. gridengine.version Standard: & # 8216; 2011.11 & # 8217 ;. Dette er Grid Engine-versjonen for a installere og kjore. Dette er for oyeblikket standard og eneste alternativet. I fremtiden kan flere versjoner av Grid Engine-programvaren stottes. gridengine.root Standard: & # 8216; /sched/sge/sge-2011.11′ Dette er hvor Grid Engine vil bli installert og montert pa hver knutepunkt i systemet. Det anbefales at denne verdien ikke endres, men hvis den er, bor den settes til samme verdi pa hver knutepunkt i klyngen.

CycleCloud stotter et standard sett med autostopattributter for Grid Engine.

For informasjon og dokumentasjon pa PBS Pro planleggeren, besok det offisielle prosjektets nettsted.

PBS Pro Scheduler (PBS Pro) kan enkelt aktiveres pa en CycleCloud-klynge ved a modifisere & # 8220; run_list & # 8221; i konfigurasjonsdelen av klusterdefinisjonen. De to grunnleggende komponentene i en PBS Pro-klynge er & # 8216; mesteren & # 8217; node som gir et delt filsystem der PBS Pro-programvaren kjorer, og & # 8216; kjore & # 8217; noder som er vertene som monterer det delte filsystemet og utforer de oppgitte jobbene. For eksempel kan en enkel klyngemalmutskrift se ut som:

Importerer og starter en klynge med definisjon i CycleCloud gir en enkelt & # 8216; mester & # 8217; node. Utfor noder kan legges til klyngen via & # 8216; cyclecloud add_node & # 8217; kommando. For eksempel, for a legge til 10 flere eksekute noder:

Konfigurasjonsreferanse.

Folgende er de PBS Pro-spesifikke konfigurasjonsalternativene du kan bytte for a tilpasse funksjonalitet:

pbspro.slots Antall spor for en gitt node a rapportere til PBS Pro. Antall spor er antall samtidige jobber en knutepunkt kan utfore, denne verdien er standard pa antall CPUer pa en gitt maskin. Du kan overstyre denne verdien i tilfeller der du ikke kjorer jobber basert pa CPU, men pa minne, GPUer etc. pbspro.slot_type Navnet pa typen av & # 8216; spor & # 8217; en node gir. Standard er & # 8216; utfor & # 8217 ;. Nar en jobb er merket med den harde ressursen & # 8216; slot_type = & lt; type & gt; & # 8217;, vil jobben bare kjore pa en maskin med samme spaltype. Dette gjor at du kan opprette forskjellige programvare og maskinvarekonfigurasjoner per knutepunkt og sorge for at en passende jobb alltid er planlagt pa riktig type knutepunkt. pbspro.version Standard: & # 8216; 14.2.1-0 & # 8217 ;. Dette er PBS Pro-versjonen for a installere og kjore. Dette er for oyeblikket standard og eneste alternativet. I fremtiden kan flere versjoner av PBS Pro-programvaren stottes.

CycleCloud stotter et standard sett med autostopattributter for PBS Pro.

Autostop Attributter.

For informasjon og dokumentasjon pa HTCondor, se HTCondor-handboken.

HTCondor kan enkelt aktiveres pa CycleCloud-klyngen ved a endre & # 8220; run_list & # 8221; i konfigurasjonsdelen av klusterdefinisjonen. Det er tre grunnleggende komponenter i en HTCondor-klynge. Den forste er & # 8220; senterleder & # 8221; som gir planlegging og ledelse daemons. Den andre komponenten i en HTCondor-klynge er en eller flere planleggere som jobber inn i systemet. Den endelige komponenten er en eller flere utforende noder som er vertene utforer beregningen. En enkel HTCondor-mal kan se ut som:

Importerer og starter en klynge med definisjon i CycleCloud vil gi en & # 8220; manager & # 8221; og en & # 8220; scheduler & # 8221; node, sa vel som en & # 8220; utfore & # 8221; node. Utfor noder kan legges til klyngen via kommandoen add_node cyclecloud. For a legge til 10 flere eksekute noder:

Autoskalering.

CycleCloud stotter autoscaling for HTCondor, noe som betyr at programvaren vil overvake statusen til koen din og sla pa og av noder etter behov for a fullfore arbeidet i optimal tid / kostnad. Du kan aktivere autoscaling for HTCondor ved a legge til Autoscale = true til clusterdefinisjonen din:

For autoscaling til arbeid ma nodene i skyen fa en rute tilbake til CycleCloud Server-maskinen. Den enkleste maten a oppna dette pa er a installere CycleCloud-forekomsten i skyen sammen med noderne det vil spinne opp. Alternativt, hvis du er i et VPC-miljo, kan du sette opp en rute tilbake til maskinen eller porten sende CycleCloud-porten pa ruteren din til maskinen.

Avansert bruk Hvis du kjenner gjennomsnittlig kjoretid for jobber, kan du definere gjennomsnittlig tid (i minutter) i jobben. CycleCloud vil bruke det til a starte det minste antall noder (for eksempel vil fem 10-minuttersjobber bare starte en enkelt knute i stedet for fem nar average_runtime er satt til 10).

Autoscale nodearray Som standard vil HTCondor be om kjerner fra nodearrayet som heter & # 8216; utfore & # 8217 ;. Hvis en jobb krever et annet nodearray (for eksempel hvis bestemte jobber i en arbeidsflyt har et hoyt minne), kan du angi et slot_type-attributt for jobben. For eksempel legger du til + slot_type = & # 8220; highmemory & # 8221; vil fa HTCondor til a be om en node fra & # 8220; highmemory & # 8221; nodearray i stedet for & # 8220; utfore & # 8221; (Merk at dette for oyeblikket krever htcondor.slot_type = & # 8220; highmemory a bli satt inn i nodearrayets [[[konfigurasjon]]] -seksjon). Dette pavirker ikke hvordan HTCondor planlegger jobbene, sa du vil kanskje inkludere slot_type startd attributtet i jobbens krav eller ranguttrykk. For eksempel: Krav = target.slot_type = & # 8220; highmemory & # 8221; .

Sender jobber.

Den mest generiske maten a sende inn jobber til en HTCondor planlegger er kommandoen (kjor fra en planleggerknute):

En eksempeldokumentfil kan se slik ut:

Konfigurasjonsreferanse.

CycleCloud stotter et standard sett med autostopattributter for HTCondor.

Folgende er de HTCondor-spesifikke konfigurasjonsalternativene du kan angi for a tilpasse funksjonalitet:

htcondor.agent_enabled Hvis sant, bruk condor_agent for jobbsending og polling. Standard: false htcondor.agent_version Versjonen av condor_agent a bruke. Standard: 1,27 htcondor.classad_lifetime Standard levetid for classads (i sekunder). Standard: 700 htcondor.condor_owner Linux-kontoen som eier HTCondor scaledown-skript. Standard: root htcondor.condor_group Linux-gruppen som eier HTCondor scaledown-skriptene. Standard: root htcondor.data_dir Kataloget for logger, spool kataloger, kjor kataloger og lokal config fil. Standard: / mnt / condor_data (Linux), C: condor_local (Windows) htcondor.ignore_hyperthreads (kun Windows) Angi antall CPUer som skal v re halvparten av de oppdagede CPUene som en mate a deaktivere & # 8200; hyperthreading. Hvis du bruker autoskala, spesifiser du ikke-hyperthread-kjerntellingen med Cores-konfigurasjonsinnstillingen i delen [[node]] eller [[nodearray]]. Standard: false htcondor.install_dir Den katalogen som HTCondor er installert til. Standard: / opt / condor (Linux), C: condor (Windows) htcondor.job_start_count Antall jobber en skjema vil starte per syklus. 0 er ubegrenset. Standard: 20 htcondor.job_start_delay Antall sekunder mellom hver jobb starter intervall. 0 er umiddelbar. Standard: 1 htcondor.max_history_log Maksimal storrelse pa jobbhistorikkfilen i byte. Standard: 20971520 htcondor.max_history_rotations Maksimalt antall jobbhistorikkfiler som skal holdes. Standard: 20 htcondor.negotiator_cycle_delay Minimum antall sekunder for en ny forhandler syklus kan starte. Standard: 20 htcondor.negotiator_interval Hvor ofte (i sekunder) starter condor_negotiator en forhandlingssyklus. Standard: 60 htcondor.negotiator_inform_startd Hvis sant informerer forhandleren startd nar den passer til en jobb. Standard: true htcondor.remove_stopped_nodes Hvis det er sant, stoppes utfor nodene fjernes fra CycleServer-visningen i stedet for a bli merket som & # 8220; ned & # 8221 ;. Standard: true htcondor.running Hvis sant, kjorer HTCondor samler og forhandler daemoner pa sentral manager. Ellers kjorer bare condor_master. Standard: true htcondor.scheduler_dual Hvis sant, planleggere kjorer to planer. Standard: true htcondor.single_slot Hvis det er sant, behandler maskinen som et enkelt spor (uansett antall kjerner maskinen har). Standard: false htcondor.slot_type Definerer slot_type av en node array for autoscaling. Standard: Utfor htcondor.update_interval Intervallet (i sekunder) for startd for a publisere en oppdatering til samleren. Standard: 240 htcondor.use_cache_config Hvis det er sant, bruk cache_config for a fa forekomstundersokelsen CycleServer for konfigurasjon. Standard: false htcondor.version Versjonen av HTCondor a installere. Standard: 8.2.6.

Automatisk generert konfigurasjonsfil.

HTCondor tilbyr et stort antall konfigurasjonsinnstillinger, inkludert brukerdefinerte attributter. CycleCloud tilbyr muligheten til a opprette en egendefinert konfigurasjonsfil ved hjelp av attributter definert i klyngen:

htcondor.custom_config.enabled Hvis det er satt, genereres en konfigurasjonsfil ved hjelp av de angitte attributter. Standard: false htcondor.custom_config.file_name Navnet pa filen (plassert i htcondor.data_dir / config) for a skrive. Standard: ZZZ-custom_config.txt htcondor.custom_config.settings. Attributtene til a skrive til den egendefinerte konfigurasjonsfilen (for eksempel htcondor.custom_config.settings.max_jobs_running = 5000)

HTCondor konfigurasjonsattributter som inneholder a. kan ikke spesifiseres ved hjelp av denne metoden. Hvis slike attributter er nodvendige, bor de angis i en kokebok eller en fil som er installert med cluster-init.


Hilsener! Vil du spille i det mest ærlige kasinoet? Vi samlet det for deg. Spill her nå!