Nagy számítási kapacitású rendszereknél elkerülhetetlenül szükség van arra hogy az alkalmazások futását valamilyen módon összehangoljuk, és megszervezzük az erőforrások elosztását. Mainframe rendszereken ennek nagy hagyományai vannak. A nagy cluster rendszerek megjelenésével szükségessé vált hasonló szoftverek írása nyílt rendszerek számára is. Korai példái ennek a Condor, az NQS (Network Queuing System) és az LSF (Load Sharing Facility). A modern queue rendszerek ezeknek leszármazottai. Talán a legelterjedtebb a PBS (Parallel Batch System) illetve Torque. Az IBM ehhez hasonló programja a LoadLeveler.
Mivel ezek az eszközök nem voltak problémamentesek, a Lawrence Livermore Laboratóriumban egy teljesen új queue rendszert fejlesztettek ki, ez a SLURM.
A queue rendszer a felhasználó rendelkezésére bocsájtja node-ok egy csoportját arra az időre, amíg a felhasználó programja lefut. Lehetővé teszi hogy a felhasználó programot indíthasson, azt leállíthassa, illetve annak futását megfigyelhesse. A felhasználó megadhatja, hogy milyen erőforrásokra van szüksége (nódusok száma, memória, szükséges processzorok/core-ok száma, esetleges extra feature-ok mint a hálózati interface típusa.) Az erőforrásokra limitet lehet megadni (esetleg maga a queue is betartat valamilyen limitet) melynek túllépése esetén a program abortál. A queue rendszer ütemezője megkeresi a feltételeknek eleget tevő node-okat, elegendő szabad node esetén a programot elindítja, egyébként pedig várakoztatja, ameddig el nem tud indulni.
Az erőforrások csoportokba szervezhetők, melyeket a SLURM partícióknak hív, ezeket rendszerint queue-nak szokták hívni. Ezekben a dokumentumokban mindkét terminológiát használjuk.
Esetünkben, mivel a node-ok száma viszonylag kicsi és az erőforrások homogének, az erőforrások típusa szerint definiáltuk a partíciókat. Egy partíció a fejgép a maga processzoraival, ez a nagy memóriaigényű SMP joboknak. A második partíció az új számoló node-okból áll. A harmadik pedig a régi IBM blade-eket foglalja magába.
A SLURM alapvetően a régi queue rendszerekhez hasonlóan működik. A fontosabb parancsok:
Funkció | PBS | LoadLeveler | SLURM |
---|---|---|---|
Interaktív futtatás | mpirun | poe | srun |
Jobinditás | qsub | llsubmit | sbatch |
Node-ok megadása | -lnodes | -rmpool | -N vagy –nodes= |
Taskok száma node-onként | -I -l mppwidth | - | -n |
Queue/partíció megadása | -q | - | -p |
Futó jobok listázása | qstat | llq | squeue |
Node-ok listázása | qstat -an | llstatus -l | sinfo |
Job leállítása | qkill | llcancel | scancel |
Jobnév | -N | - | -J |
Levél küldése | -m abe | automatikus | –mail-type=ALL |
Userid, amire a levél megy | -M | - | –mail-user |