Queue rendszerek bevezetés

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.

Összehasonlítás

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