HTML

Az élet kódjai

Csináld maga. Senki nem csinálja meg helyetted.

Friss topikok

Slurm telepítés

2020.10.11. 22:49 Travis.CG

Egy feladatütemező előnyeit szerintem nem kell ecsetelni. Ennek ellenére léteznek olyan közösségek, ahol még mindig úgy indítják a szkripteket, hogy előtte toppal, ps-el és egyéb parancsokkal feltérképezik az elérhető erőforrásokat, majd vérmérséklettől függően lefoglalják a nekik szükséges részét.

Miért nem jó ez? Először is, a fenti parancsok nem látnak a jövőbe. Azért, mert egy adott pillanatban valamelyik felhasználó csak egy processzort használ, nem jelenti azt, hogy a szkriptje a következő lépésben nem fog 48-t felzabálni. A másik probléma, hogy aki először indítja a programját, az több erőforrást sajátíthat ki, mint aki a csak most ér vissza a nyaralásból.

A harmadik probléma, hogy ha én tudom, hogy sok erőforrásra lesz szükségem, akkor rendszeresen ellenőriznem kell, mikor szabadul fel az számomra. Ha például ez a hétvége kellős közepén történik, amikor épp egy bárgyú családtag unalmas történetét hallgatjuk végig századszor, akkor egy magányos munkatársunk, aki munkába folytja depresszióját, simán beelőzhet.

Egy feladat ütemező megoldást jelenthet ezekre a problémákra. Nekünk csak annyi a dolgunk, hogy elküldjük a szkriptet a megfelelő erőforrás listával, a többit a feladatütemező megcsinálja helyettünk. Az egyik legelterjedtebb feladatütemező a Slurm. Őszintén szólva, nem tudom, miben jobb ez, mint az LSF, Open Grid Scheduler vagy a többi, ami létezik. Felhasználói szinten minimális a különbség, rendszergazgai szempontból pedig csak a legelsőt ismerem.

Habár a Slurm sok csomagkezelőben előfordul, most mégis a forráskódból való telepítést fogom bemutatni. Ehhez egyetlen függőségre, a Munge-re lesz szükségünk. A dokumentáció szerint a fordítást a configure szkripttel kell kezdeni, de ne higgyünk neki. Azt először elő kell állítani. A teljes fordítás így fok kinézni:

./bootstrap.sh
./configure
make
sudo make install

Elméletileg érdemes létrehozni egy külön munge felhasználót, aminek a nevében fut a program, de a helyzet az, hogy a Slurm utána nem fog boldogulni vele, ha így teszünk. Inkább hagyjuk ki. Nem tűntettem fel, de van egy lépés, amelyik teszteli, mennyire sikeres a fordítás, de nem érdemes lefuttatni. Egy csomó hibát fog generálni, mert a létrehozott teszt könyvtárak jogosultságát problémásnak tartja. A program ugyanis nem szereti, ha a group-nak bármilyen jogosultsága van a munge által kezelt könyvtárak felett. Elméletileg, ha a /tmp-be tesszük át a teszt könyvtárakat (make check root=/tmp paranccsal), akkor nincs ilyen probléma, de nekem nem működött. Ugyan úgy dobálta a hibákat. A végleges könyvtárak viszont megfelelő jogosultsággal fognak létrejönni, ezért ezeket a hibaüzeneteket nem kell komolyan venni.

Ezt egyébként érdemes észben tartani hibakeresés közben. Ha nem megy a program, 90%, hogy jogosultság gond van. Mielőtt elindítanánk a munde démont, hozzuk létre az azonosításhoz szükséges kulcsot.

sudo mungekey

Most már készen állunk a Slurm telepítésre. Ezt is letöltjük, kibontjuk, majd jöhet a ./configure; make; sudo make install hármas. Sok esetben viszont érdemes időt szánni a konfigurálásra. Például ha nincs szükségünk grafikus felületre (márpedig egy távoli szerveren legtöbbször nincs), akkor a nyugodtan használjuk a --disable-x11 opciót.

Telepítés után jöhet a rendszer beállítása. Először létre kell hozni egy slurm felhasználót. Kell készíteni egy konfigurációs fájlt itt. Igen, egy weboldalon. Nekem a memória beállításával volt problémám, mert azt gondoltam megadhatok mértékegységeket. Nos, nem. Ha az aktuális node paramétereire vagyunk kíváncsiak, a slurmd -C paranccsal kiírathatjuk azt. Ez segíthet meghatározni, mekkora erőforrásokkal rendelkezik az adott node.

Miután kitöltöttük a webes konfiguráció szerkesztőt, letöltjük a kész fájlt a beállításokkal, és bemásoljuk a megfelelő helyre slurm.conf néven. Ha nem állítottuk be a --prefix opciót konfigurálásnál, akkor ez a könyvtár az /usr/local/etc lesz. Tegyünk mellé még egy konfigurációs fájlt, aminek a neve cgroup.conf. Ezt elfelejti említeni a dokumentáció, de higgyétek el, hogy kell. Hiányában a Slurm képtelen lesz a jogosultság kezelésre. Tartalma a következő:

CgroupMountpoint=/sys/fs/cgroup
CgroupAutomount=yes

Felvehetünk más opciókat is, amivel a job-ok által felhasznált erőforrásokat tudjuk limitálni. Ez akkor lehet hasznos, ha a gépen más program is fut, aminek szeretnénk állandó erőforrásokat biztosítani.

Ezután létre kell hoznunk különböző könyvtárakat, amelyeket a Slurm arra használ, hogy nyilván tartsa a futó folyamatokat.

sudo touch /var/run/slurmctlf.pid
sudo touch /var/run/slurmd.pid
sudo mkdir /var/spool/slurmd
sudo mkdir /var/spool/slurm.state

Mindegyik legyen a slurm felhasználó birtokában! Némelyik fájl neve ismerős lehet a slurm.conf fájlból, ezért ha ott átírtuk, akkor más névet kell megadnunk a fenti parancsoknál is.

Most már elindíthatjuk a démonokat. Először a slurmctld-t kell, majd a slurmd-t. Ezzel készen is vagyunk. Amennyiben több nodot használunk, úgy a munde és a slurmd-t az összes nodon el kell indítani.

A fenti lépésekkel egy nagyon egyszerű ütemezőnk lesz. A konfigurálást a végtelenségig lehet bonyolítani. Lehet különböző queue-kat létrehozni más-más limitekkel, korlátozhatjuk a felhasználókat, hogy mennyi ideig használják a rendszert (például jó ötlet lehet egy maximális futási időt megadni, mert mohó bioinformatikusok kisajátíthatják a teljes infrastruktúrát).

Hasznos link:

Leo's Notes

Szólj hozzá!

Címkék: rendszergazda

A bejegyzés trackback címe:

https://cybernetic.blog.hu/api/trackback/id/tr5516219550

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

Nincsenek hozzászólások.
süti beállítások módosítása