Kezdőlap › Fórumok › Programozás › parallel script futtatas
- This topic has 17 hozzászólás, 5 résztvevő, and was last updated 12 years, 6 months telt el by
ppdsgame.
-
SzerzőBejegyzés
-
2012-08-04-19:44 #1890392
Hello!Van 100 db. shell scriptem es hatekonyan szeretnem futtatni oket, azaz ha van 4 core-os procim, akkor mindet kihasznalni. Tud valaki egy jo scriptet, ami ilyen cpu core kombinacioban kezeli es futtatja a sub shell scripteket? Koszi elore is!
2012-08-04-19:46 #2205334szerintem a kernelnek pont ez a dolga
2012-08-04-20:18 #2205335Ha elinditok 100 scriptet egyszerre, akkor nyilvan nagyon le lesz terhelve minden… Ha 4 core-om van, akkor erdemes mindig csak 4-et futtatni egyszerre, nem?
2012-08-05-08:09 #2205336Annyira sokáig futnak a szkriptjeid és annyira leterhelik a procit? Milyen szkriptek ezek?Egyébként én valahogy úgy csinálnám (már csak a kihívás kedvéért), hogy egy szkript indítgatja őket, és amikor az egyik lefutott, hívja a következőt.Valami ilyesmi lenne:
Code:function futtasd() {2012-08-05-09:14 #2205337Hello!Igen, en is ugy gondoltam kb, ahogy te... Most jelenleg igy van, de ez megvarja, amig az osszes befejezodott, tehat marhara nem hatekony ( A scriptem ket parametert var, amik kulonbozo eredmenyt adnak. Ezert van a ket for() loop.)
Code:!/bin/bashcore=4;icore=0;for i in `seq 0 6` do2012-08-05-09:27 #2205338Annak a tengernyi szkriptnek állandóan kell futnia, vagy mindegyik lefut egyszer, oszt jóccakát?
2012-08-05-09:35 #2205339Utobbi 🙂 A lenyeg csak az, hogy a leghatekonyabban fussanak…Szerk. a mostani valtozatom azert nem jo, mert ha nem azonos ideig futnak a scriptek, akkor mindig meg kell varni a leglassubat, es addig nem indul ujabb...
2012-08-05-09:58 #2205340A te verziodat meg nem nagyon ertem... Kicsit at tudnad strukturalni ennek megfeleloen!
Te is átstruktúrálhatod. Egyébként pedig baromi egyszerű:
futtasd függvény: futtatja a parancs parancsot (igazából $@ jellegű valami kéne), de előtte megnézi, hogy melyik lockfile nem létezik (mondjuk lockfile3), és ő azt fogja mondani, hogy ő lesz a 3-as processz (lockfile3)
- nemfutegy függvény: ellenőrzi, van-e szabad "proci", azaz nem esett-e ki egy lockfile
- while true ciklus: lényegében fut örökké (bár igazából a true helyett az kéne, hogy van-e még futtatandó cucc), ellenőrzi, van-e szabad mag (lockfile), és ha van, akkor futtatja a következő parancsot. Ezután alszik egy másodpercet, mire a következő iterációt futtatja (hogy ne folyamatosan legyen ellenőrzés, mert az megenne egy magot 🙂 )
A parancsokat nem írtam ki, hogy hogyan hívod, tehát hogy honnan szeded. Azt majd te kitalálod, hogy hogy oldod meg pl. annak eldöntését, hogy van-e még futtatandó.Ha a lényege nem lenne világos: a lockfile-ok alapján tartjuk nyilván, hogy épp hány parancs fut. Amikor a parancs lefut, akkor azután rögtön ki is törli a lockfile-t:
Code:(touch lockfile ; parancs; rm lockfile) &Persze most esik le, hogy $lockfile kell 🙂
2012-08-05-10:00 #2205341Utobbi 🙂 A lenyeg csak az, hogy a leghatekonyabban fussanak...
Megoldja azt a kernel 🙂De ha nagyon perverz akarsz lenni, akkor csinálhatsz egy Makefile-t hozzá, és mondjuk make -j4 módon hívod
2012-08-05-10:01 #2205342100-at nyilván nem jó együtt futtani és nem a CPU lassulás miatt, hanem amiatt, hogy a taskok közötti váltogatás fogja elvinni az erőforrást.Négy magon egy 4-8 viszont egész jó eredménnyel futhat. (Hogy melyik az optimális, csak kísérlettel állapíthatnád meg. Ideális esetben HT-vel szinte veszteség nélkül is futhat a 8 is.)a) Azaz, ha nem szálbiztos az algoritmusod, akkor kell 4-8 lista, amiből egyesével futtatnak a szálak. A veszteséged a legerősebb és legygyengébb lista közötti idő.b) Ha szálbiztos az algoritmusod*, akkor egy listád lesz és abból futat a 4-8 szál. Enneak az az előnye, hogy kb. 3 script lehet a maximális veszteség.*Ez vélhetőleg időkiesés, azaz itt a scriptek száma és működésük hossza határozza meg, hogy mennyire éri meg.Én azt mondanám, hogy simán elég lehet (a) megoldás is (főleg, ha jól válogatod össze a listát és lehet, hogy nem érdemes vele szenvedni) 1) ha nem fut más 8 szálon, 2) ha még más is fut 4 szálon. Azért a (2)-es pont elég valószínű.
-
SzerzőBejegyzés
- Be kell jelentkezni a hozzászóláshoz.
legutóbbi hsz