Beskriva begrepp för klusterschemaläggare
I slutet av den här lektionen bör du kunna beskriva de grundläggande funktionerna för jobbschemaläggare, resurshanterare, databehandling med höga prestanda och databehandling med högt dataflöde.
Jobbschemaläggare
En jobbschemaläggare för klusterberäkning är en programvarukomponent som hanterar och tilldelar databehandlingsresurser (till exempel processorer, minne och diskar) till jobben som skickas till klustret. Jobbschemaläggare bestämmer de lämpligaste noderna i klustret för att köra ett visst jobb baserat på tillgängligheten för resurser, jobbets prioritet och andra faktorer. Jobbschemaläggare ser till att flera jobb som körs parallellt inte stör varandra. Jobbschemaläggare innehåller köer för att lagra väntande jobb och en princip för att schemalägga dem.
En jobbschemaläggares huvudmål är att:
- Minimera tiden mellan jobbets slutförande av jobbet.
- Optimera processoranvändningen.
- Maximera jobbets dataflöde.
Användare skickar icke-interaktiva batchjobb till schemaläggaren. Schemaläggaren lagrar batchjobben, utvärderar deras resurskrav och prioriteringar och distribuerar jobben till lämpliga beräkningsnoder.
Jobbskriptet som skickas via schemaläggaren lägger till jobbet i en jobbkö. Beroende på de tillgängliga resurser som jobbet behöver bestämmer schemaläggaren när jobbet lämnar kön och på vilka serverdelsnoder det körs.
Det finns flera grundläggande strategier som schemaläggare kan använda för att avgöra vilket jobb som ska köras härnäst:
First Come, First Serve: Jobb körs i samma ordning som de först anger kön. Fördelen är att varje jobb definitivt kommer att köras; En liten uppsättning jobb kan dock vänta under en otillräckligt lång tid jämfört med deras faktiska körningstid.
Kortast jobb först: Baserat på körningstiden som deklarerats i jobbskriptet beräknar schemaläggaren jobbets körningstid. Jobben rangordnas i stigande ordning efter körningstiden. Korta jobb startar efter en kort väntetid, men långvariga jobb (eller åtminstone jobb som deklareras som sådana) kanske aldrig startar.
Återfyllnad: Schemaläggaren underhåller begreppet First Come, First Serve utan att hindra långvariga jobb från att köras. Schemaläggaren kör bara jobbet när det första jobbet i kön kan köras. Annars går schemaläggaren igenom resten av kön för att kontrollera om ett annat jobb kan köras utan att utöka det första jobbet i köns väntetid. Om den hittar ett sådant jobb kör schemaläggaren jobbet. Små jobb stöter vanligtvis på korta kötider.
Resurshanterare
En resurshanterare för klusterberäkning allokerar resurser i ett datorkluster. Resursansvariga ansvarar för att allokera minne, CPU, lagring och nätverksbandbredd till jobben som körs i klustret. Den här komponenten övervakar resursanvändningen i klustret, identifierar inaktiva eller underutnyttjade resurser och omallokerar dem till andra jobb eller uppgifter som kräver dem.
Översikt över Slurm
Slurm är en jobbschemaläggare med öppen källkod och resurshanterare för att köra arbetsbelastningar i Linux-kluster. Slurm tillhandahåller ett utökningsbart ramverk för att hantera resurser och schemalägga jobb i en Linux-klustermiljö. Den stöder en mängd olika jobbtyper, inklusive parallella jobb, batchjobb och interaktiva jobb. Slurm gör det möjligt för användare att skicka jobb via en mängd olika gränssnitt, inklusive ett kommandoradsgränssnitt, ett webbaserat gränssnitt och ETT API. Slurm är en populär lösning som många av de mest kraftfulla superdatorerna och beräkningskluster använder, och det är tillgängligt som ett alternativ när du använder HPC (High Performance Computing) på Microsoft Azure.
Med Slurm kan du matcha lämplig beräkningsresurs baserat på resurskriterier som processorer, GPU:er och minne.
Slurm-jobbschemaläggaren har följande viktiga funktioner:
- Allokerar åtkomst till beräkningsnoder i HPC-kluster till användare så att deras uppgifter kan köras
- Tillhandahåller ett ramverk för att starta, köra och övervaka arbete på en uppsättning allokerade noder
- Arbitrates konkurrens för resurser genom att hantera en kö med väntande jobb
Slurm-jobb
När du använder Slurm för att köra ett jobb i ett Linux HPC-kluster utförs följande övergripande steg:
- Jobböverföring: Det första steget är att en användare skickar ett jobb till Slurm-schemaläggaren genom att skapa ett jobbskript som innehåller resurskrav och den uppsättning kommandon som jobbet kräver.
- Jobballokering: Nästa steg omfattar Slurm-schemaläggaren som undersöker jobbets resurskrav, till exempel antalet noder, processorer och minne som behövs, samt andra begränsningar som partitioner och tidsgränser. Baserat på dessa krav fastställer schemaläggaren de bästa tillgängliga resurserna som ska allokeras för jobbet, med tanke på den aktuella klusteranvändningen och andra väntande jobb.
- Jobbköer: Schemaläggaren avgör om de begärda resurserna är tillgängliga. Om resurserna är omedelbart tillgängliga körs jobbet. Om de begärda resurserna inte är tillgängliga omedelbart placeras jobbet i en kö. Schemaläggaren utvärderar kontinuerligt de köade jobben och deras prioriteringar för att allokera resurser när de blir tillgängliga.
- Jobbkörning: När de nödvändiga resurserna har allokerats till jobbet börjar Slurm-jobbet köras på de tilldelade noderna. Uppgifter som anges i skriptet körs på noder.
- Slutfört jobb: Det sista steget är slutförande av jobbet, där beräkningsresurser släpps tillbaka till klustret och schemaläggaren uppdaterar jobbets status till slutfört. Jobbutdata och eventuella felmeddelanden som kan ha genererats under jobbkörningen sparas i avsedda utdatafiler.
- Jobbredovisning och rapportering: Slurm genererar redovisningsdata om slutförda jobb, inklusive resursanvändning och körningstid.
Slurm-kommandon
Du använder en uppsättning kommandoradsverktyg för att utföra åtgärder på ett beräkningskluster som hanteras via Slurm. Här följer några vanliga Slurm-användarkommandon:
Command | Funktion |
---|---|
sacct |
Det här kommandot rapporterar jobb- och jobbstegsredovisningsinformation om jobb som är aktiva eller slutförda. |
salloc |
Använd det här kommandot för att allokera resurser för ett jobb i realtid. Gör att du kan skapa ett gränssnitt och anta srun kommandon som ett sätt att initiera parallella uppgifter. |
sattach |
Det här kommandot kopplar standardfunktionerna för indata, utdata och felsignaler till ett jobb- eller jobbsteg som körs. |
sbatch |
Använd det här kommandot för att skicka ett jobbskript för senare körning. Dessa skript innehåller vanligtvis ett eller flera srun kommandon för att initiera parallella uppgifter. |
scancel |
Använd det här kommandot för att överföra en fil på de noder som behövs. |
scontrol |
Det här är ett administrativt Slurm-verktyg som gör att du kan visa och ändra Slurm-tillståndet. De flesta scontrol kommandon kräver rotprivilegier. |
sinfo |
Det här kommandot visar information om partitioner och noder som Slurm hanterar. |
sprio |
Använd det här kommandot om du vill visa information om de komponenter som påverkar ett jobbs prioritet. |
squeue |
Använd det här kommandot för att visa tillståndet för jobb eller jobbsteg. |
srun |
Använd det här kommandot för att skicka ett jobb för körning eller för att utlösa jobbsteg i realtid. Du kan använda srun för att ange resurskrav som minsta och högsta antal noder, antal processorer och nodegenskaper. |
sstat |
Använd det här kommandot om du vill visa information om resurser som används genom att köra jobb eller jobbsteg. |
strigger |
Använd det här kommandot för att konfigurera eller visa händelseutlösare, till exempel vad du ska göra när en nod misslyckas eller ett jobb närmar sig en tidsgräns. |
sview |
Använd det här kommandot för att visa tillståndsinformation om jobb, partitioner och noder som Slurm hanterar. |
Du kan lära dig mer om Slurm-kommandon i användarhandboken för Slurm Snabbstart.