Projekty s nedostatkem práce

Sekce pro všeobecné rady a návody z oblasti DC projektů
Zpráva
Autor
Doktor
52.6315789474 %
52.6315789474 %
Příspěvky: 1267
Registrován: pon 22 lis, 2010 17:40
rok narození: 30 črc 1981
ID CNT statistics: 15029
Bydliště: Hřebeč
Kontaktovat uživatele:

Re: Projekty s nedostatkem práce

#21 Příspěvek od Doktor »

Snad nejsem příliš otravný, ale poradí mi někdo z expertů také návod na W7 64bit? Dokázal jsem úlohu dostat do *.exe souboru v 32-bitové verzi a naplánovat spouštění v plánovači, ale vzhledem k rozdílnosti verzí se úloha nespustí...
Použil jsem standardní příkaz update a po sepsání v poznámkovém bloku přejmenoval na exe, neboť baťák se se mnou nechtěl vůbec bavit...
Konkrétně mi jde o zprovoznění udice na projektu milkyway...
C:\Program Files\BOINC\boinccmd.exe --project http://milkyway.cs.rpi.edu/milkyway/ update
Počítadlo: Intel C2D 2.66 GHz, MSI P-35 Platinum,A-Data 2x(1+2)GB Ram (dual channel)5-5-5-15, Gigabyte ATI HD5870 840/900MHz Catalysty 11.12, Boinc 7.4.42, Windows 7 64-bit
Od 1.11.2015 do 27.2.2016 hrdý sponzor GOLEMa
Obrázek

Uživatelský avatar
vkliber
Admin webu a fóra CNT
Admin webu a fóra CNT
Příspěvky: 10306
Registrován: čtv 29 bře, 2007 10:41
ID CNT statistics: 1
Bydliště: Brušperk, 48 let
Kontaktovat uživatele:

Re: Projekty s nedostatkem práce

#22 Příspěvek od vkliber »

Přiznám se, že jsem né zcela úplně pochopil co vlastně chceš. Mám pocit že mícháš 2 různé věci.

:arrow: Udice na nějaký projekt ... lze řešit jednoduchým skriptíkem pomocí boinccmd.exe --project <adresa_projektu> update spouštěným v plánovači
:arrow: Omezení počtu souběžně běžících jednotek (to co řeší můj skript na který odkazuje nenym níže) ... toto lze již mnohem jednodušeji řešit pomocí app_config.xml

Když tak pisni co vlastně chceš 45cc .
Statistiky CNT | Projekty CNT | Distribuované výpočty CNT | SETI CNT | Einstein CNT
.....::::: Proč se mít nejlépe, když se můžu mít čím dál tím stejně :::::.....
Moje skromná statistika tady , tady , tady nebo grafy.
˙ıɔıqɐɹʞ ʌ ǝןɐ 'ıןʇʎd ʌ ǝɔıɾɐz ǝʇɾndnʞǝu ʎpʞıu ˙˙˙

nenym
78.9473684211 %
78.9473684211 %
Příspěvky: 7610
Registrován: úte 13 led, 2009 15:33
rok narození: 0- 0-1956
ID CNT statistics: 10124

Re: Projekty s nedostatkem práce

#23 Příspěvek od nenym »

vkliber píše: :arrow: Omezení počtu souběžně běžících jednotek (to co řeší můj skript na který odkazuje nenym níže) ... toto lze již mnohem jednodušeji řešit pomocí app_config.xml
Není tak úplně pravda, nedomyšlené řešení pomocí app_config.xml může způsobit vytížení pouze části jader. Jednoduchý příklad pro ilustraci:
- 4 jádrový CPU,
- dva aktivní projekty RS>0, jeden bez práce (třeba Pirates), druhý (třeba Asteroids) s dostatkem práce bez omezení počtu jednotek v zásobě = plný buffer,
- jeden záložní projekt s RS=0 (třeba POGS),
- pro Asteroids nastaveno max 2 jednotky souběžně v app_config.xml.
Výsledek: plný buffer=nenatahuje se práce ze záložního projektu, na Pirates žádná práce, Asteroids jednou po 2 jednotkách = vytížení CPU na 50 %

Pokud by se použil script na pozastavení jednotek Asteroids, k popsané situaci nedojde a budou se natahovat a počítat jednotky POGS. Já používám kombinaci obojího (script + app_config).
Blíží se konsolidační balíček pětikolky; šetřím trojbojem - piji staré víno, jím plesnivé sýry a jezdím v autě bez střechy.
UotD 767x Obrázek
1xObrázek 3xObrázek 9xObrázek 12xObrázek Obrázek
Obrázek

Doktor
52.6315789474 %
52.6315789474 %
Příspěvky: 1267
Registrován: pon 22 lis, 2010 17:40
rok narození: 30 črc 1981
ID CNT statistics: 15029
Bydliště: Hřebeč
Kontaktovat uživatele:

Re: Projekty s nedostatkem práce

#24 Příspěvek od Doktor »

Vítku a nenyme promiňte.
Popíšu současný stav a snad to pomůže, nebo mě vykopnete do správného vlákna...

Vzhledem k současné grafice mohu počítat pouze milkyway verzi modified fit. A věc se má tak, že pokud počítám, tak dostanu práci třeba na 7 minut, ale po spočítání a odevzdání si scheduler nepožádá o další práci, ale nějakou dobu se grafika fláká a když dostane práci, tak jí zase spočítá rychleji, než si opět požádá o další příděl.
Pokud jsem u pc a manuálně aktualizuji, tak není problém, pokud jsem pryč, tak chvíli pracuje, pak se fláká a pořád dokola...

Jak píše obvykle nenym, chci ho otravovat, což na xp nebyl absolutně problém, teď jsem v pytli...

I když přiznávám, že jsem neměl tu trpělivost čekat, jestli si to BM srovná časem sám, obvykle jsem si dal koláče, nebo i další projekty na RS 0, aby grafika jela nonstop...
Stačí tak?

Jinak v odpověď: Nechci míchat více věcí dohromady, chci zprovoznit radu číslo jedna, ale v plánovači se mi to nedaří nastavit jako úlohu, debilní plánovač ve W7 chce po mě skript (externí), který jen "tupě" spouští...
Počítadlo: Intel C2D 2.66 GHz, MSI P-35 Platinum,A-Data 2x(1+2)GB Ram (dual channel)5-5-5-15, Gigabyte ATI HD5870 840/900MHz Catalysty 11.12, Boinc 7.4.42, Windows 7 64-bit
Od 1.11.2015 do 27.2.2016 hrdý sponzor GOLEMa
Obrázek

eisler jiri
73.6842105263 %
73.6842105263 %
Příspěvky: 4528
Registrován: sob 15 kvě, 2010 17:27
rok narození: 14 zář 1947
ID CNT statistics: 13496
Bydliště: praha 8
Kontaktovat uživatele:

Re: Projekty s nedostatkem práce

#25 Příspěvek od eisler jiri »

doktore správně si to napsal :smt023 já už ze sebe radši dělám Kašpárka (což jistě jsem) a bojím se cokoli napsat abych nevypadal jako vůl (což jsem taky jistě) ale ty hovadiny ve výpočetní technice SW, HW ??? nejsou mi blízké. to je snad pro mladého psa a ne pro starého psa. dle mého názoru je to zhovadilost a tahání si trička. nic to nenese jen větší ego pro takzvané :smt017 co jsem gdysy dělal mělo smysl. a mám taký dojmek, že by to smysl mělo i dnes. ale veškeré inovace mě připadají (koukej jak to zmrším a poraď si sstím). ale jsem už starý mrzutý pes 45kk 45kk 45kk 45nn
EDIT: neberte mě vážně, jen sem dostal křeče do břicha a pak kolem sebe koušu. možná to bude ráno lepšejší 45hh
Obrázek
Obrázek

nenym
78.9473684211 %
78.9473684211 %
Příspěvky: 7610
Registrován: úte 13 led, 2009 15:33
rok narození: 0- 0-1956
ID CNT statistics: 10124

Re: Projekty s nedostatkem práce

#26 Příspěvek od nenym »

Doktor píše:Nechci míchat více věcí dohromady, chci zprovoznit radu číslo jedna, ale v plánovači se mi to nedaří nastavit jako úlohu, debilní plánovač ve W7 chce po mě skript (externí), který jen "tupě" spouští...
Step by step
MW_1.JPG
MW_1.JPG (51.61 KiB) Zobrazeno 13817 x
MW_2.JPG
MW_2.JPG (49.85 KiB) Zobrazeno 13817 x
MW_3.JPG
MW_3.JPG (46.6 KiB) Zobrazeno 13817 x
MW_4.JPG
MW_4.JPG (53.54 KiB) Zobrazeno 13817 x
MW_5.JPG
MW_5.JPG (51.35 KiB) Zobrazeno 13817 x
Blíží se konsolidační balíček pětikolky; šetřím trojbojem - piji staré víno, jím plesnivé sýry a jezdím v autě bez střechy.
UotD 767x Obrázek
1xObrázek 3xObrázek 9xObrázek 12xObrázek Obrázek
Obrázek

loner
26.3157894737 %
26.3157894737 %
Příspěvky: 252
Registrován: stř 16 črc, 2014 03:29
rok narození: 03 led 1959
ID CNT statistics: 21641
Kontaktovat uživatele:

Re: Projekty s nedostatkem práce

#27 Příspěvek od loner »

jaký máme zadat volitelný argument pro CSG?

jo, asi je to tady, na konci prvního příspěvku v tomto vlákně:

<<URL projektů lze jednoduše vygenerovat z Vítkova nástroje na mazání dluhů, dále jsou dostupné na stránkách projektů, v seznamu projektů či v souboru client_state.xml.>>

edit: tak už to tu máme .. díky! 22rrr
Naposledy upravil(a) loner dne pát 03 čer, 2016 14:06, celkem upraveno 2 x.
O beata solitudo,
o sola beatitudo!

nenym
78.9473684211 %
78.9473684211 %
Příspěvky: 7610
Registrován: úte 13 led, 2009 15:33
rok narození: 0- 0-1956
ID CNT statistics: 10124

Re: Projekty s nedostatkem práce

#28 Příspěvek od nenym »

adresa projektu, tj. bude to vypadat
Přidat argumenty (volitelné):

Kód: Vybrat vše

--project http://csgrid.org/csg update
Spustiv v (volitelné):

Kód: Vybrat vše

C:\Program Files\BOINC\
- případně jiný folder, kde je programová část boincu
Přílohy
udice_CSG.PNG
udice_CSG.PNG (8.12 KiB) Zobrazeno 13621 x
Blíží se konsolidační balíček pětikolky; šetřím trojbojem - piji staré víno, jím plesnivé sýry a jezdím v autě bez střechy.
UotD 767x Obrázek
1xObrázek 3xObrázek 9xObrázek 12xObrázek Obrázek
Obrázek

Doktor
52.6315789474 %
52.6315789474 %
Příspěvky: 1267
Registrován: pon 22 lis, 2010 17:40
rok narození: 30 črc 1981
ID CNT statistics: 15029
Bydliště: Hřebeč
Kontaktovat uživatele:

Re: Projekty s nedostatkem práce

#29 Příspěvek od Doktor »

je nutné vyplnit i položku "spustit v"?
Mě to asi funguje i bez tohoto parametru...
Počítadlo: Intel C2D 2.66 GHz, MSI P-35 Platinum,A-Data 2x(1+2)GB Ram (dual channel)5-5-5-15, Gigabyte ATI HD5870 840/900MHz Catalysty 11.12, Boinc 7.4.42, Windows 7 64-bit
Od 1.11.2015 do 27.2.2016 hrdý sponzor GOLEMa
Obrázek

nenym
78.9473684211 %
78.9473684211 %
Příspěvky: 7610
Registrován: úte 13 led, 2009 15:33
rok narození: 0- 0-1956
ID CNT statistics: 10124

Re: Projekty s nedostatkem práce

#30 Příspěvek od nenym »

Při manuálním spouštění to není nutné, při spuštění z plánovače mi to nefungovalo, po doplnění toho parametru začalo fungovat.
Blíží se konsolidační balíček pětikolky; šetřím trojbojem - piji staré víno, jím plesnivé sýry a jezdím v autě bez střechy.
UotD 767x Obrázek
1xObrázek 3xObrázek 9xObrázek 12xObrázek Obrázek
Obrázek

loner
26.3157894737 %
26.3157894737 %
Příspěvky: 252
Registrován: stř 16 črc, 2014 03:29
rok narození: 03 led 1959
ID CNT statistics: 21641
Kontaktovat uživatele:

Re: Projekty s nedostatkem práce

#31 Příspěvek od loner »

při zadání parametrů:

Program či script: "C:\Program Files\BOINC\boincmgr.exe"
Přidat argumenty (volitelné): --project http://csgrid.org/csg update

odpověděl BM: unknown option 'project'
O beata solitudo,
o sola beatitudo!

Uživatelský avatar
vkliber
Admin webu a fóra CNT
Admin webu a fóra CNT
Příspěvky: 10306
Registrován: čtv 29 bře, 2007 10:41
ID CNT statistics: 1
Bydliště: Brušperk, 48 let
Kontaktovat uživatele:

Re: Projekty s nedostatkem práce

#32 Příspěvek od vkliber »

loner píše:při zadání parametrů:

Program či script: "C:\Program Files\BOINC\boincmgr.exe"
Přidat argumenty (volitelné): --project http://csgrid.org/csg update

odpověděl BM: unknown option 'project'
Program či script: "C:\Program Files\BOINC\boinccmd.exe"

Čti správně 45cc .
Statistiky CNT | Projekty CNT | Distribuované výpočty CNT | SETI CNT | Einstein CNT
.....::::: Proč se mít nejlépe, když se můžu mít čím dál tím stejně :::::.....
Moje skromná statistika tady , tady , tady nebo grafy.
˙ıɔıqɐɹʞ ʌ ǝןɐ 'ıןʇʎd ʌ ǝɔıɾɐz ǝʇɾndnʞǝu ʎpʞıu ˙˙˙

loner
26.3157894737 %
26.3157894737 %
Příspěvky: 252
Registrován: stř 16 črc, 2014 03:29
rok narození: 03 led 1959
ID CNT statistics: 21641
Kontaktovat uživatele:

Re: Projekty s nedostatkem práce

#33 Příspěvek od loner »

vkliber píše: Čti správně 45cc .
díky Viki, už to funguje, ještě prověřím ty repetice ..
O beata solitudo,
o sola beatitudo!

nenym
78.9473684211 %
78.9473684211 %
Příspěvky: 7610
Registrován: úte 13 led, 2009 15:33
rok narození: 0- 0-1956
ID CNT statistics: 10124

Re: Projekty s nedostatkem práce

#34 Příspěvek od nenym »

Znovu posílám updatovaný vliberův script pro novější core 7+, na Pentathlonu se bude hodit. Edituje se pouze řádek 14 (URL adresa projektu - nutno opsat/zkopírovat z client_state.xml) a řádek 17 (počet aktivních jednotek). Pokud je záměrem udržovat konstantní počet aktivních jednotek, tak se script spouští správcem úloh v přiměřeném intervalu podle délky výpočtu (doporučuji maximálně 1/3 či kratší). Uvedený příklad je pro Einsteina (4 aktivní tasky) a to zcela záměrně, protože na webu vidíte jinou adresu (https://einsteinathome.org/), než je v client_state.xml (http://einstein.phys.uwm.edu/).

Kód: Vybrat vše

/*!
    Autor : Vit Kliber, Czech National Team o.s.
Vytvoreno : 11.01.2012
    Nazev : boinc_manage_nfs_tasks.js
    Zdroj : boinc_framework.js
    Popis : Skript vychazi z Kostry skriptu pro budouci skripy pro manipulaci s jednotkami
            ( url=http://forum.czechnationalteam.cz/viewtopic.php?p=53537#p53537 )
            Tento provadi manipulaci s jednotkami projektu NFS ( http://escatter11.fullerton.edu/nfs/ )
            Pozadavek je nasledujici : nechat pocitat maximalne 2 <pocet_aktivnich_jednotek> jednotky
            a ostatni pozastavit
*/

// adresa projektu (nejpravdepodobneji bude skript manipulovat s jednotkami jednoho projektu)
var projekt = "http://einstein.phys.uwm.edu/";

// pocet maximalne aktivnich jednotek
var pocet_aktivnich_jednotek = 4;

// verze boinc, je zjistena funkci verze(), pokud je prazdne nepodarilo se zjistit a skript se ukonci
var boinc_verze = "";

// prikaz pro zjisteni aktualnich jednotek v BOINC
var boinc_jednotky = "";

// prikaz pro manipulaci s jednotkou
var boinc_jednotka = "";

// 1 = Debug ON, 0 = Debug OFF ... jestli se maji vypisovat pri behu hlaseni
var debug_code = 1;

// pro vypsani ladiciho textu pri behu skriptu
function alert(text)
{
  if (debug_code != 1)
  {
    return (new ActiveXObject("WScript.Shell")).Popup(text, 0, WScript.ScriptName, 64);
  }
}

// zjisti verzi BOINC
function verze()
{
  // definice noveho objektu WScript.Shell (umozni mi spoustet externi prikazy)
  var objekt_shell = new ActiveXObject("WScript.Shell");
  // definice metody Exec, spusti prikaz a pointer uchova v promene <objekt_exec>
  var objekt_exec  = objekt_shell.Exec("boinccmd.exe --version");
  // textova promena do ktere se ulozi cely obsah standardniho vystupu predchazejiciho prikazu
  var verze_text   = objekt_exec.StdOut.ReadAll();
  alert(verze_text);
  // promena <verze_text> by mela nyni obsahovat jeden radek s timto obsahem (podle verze) : "boinccmd,  built from BOINC 6.12.33"
  // uchovam pozici textu BOINC z promene <verze_text>
  var pozice = verze_text.indexOf("BOINC");
  // jestlize je ruzne od -1 tak v obsahu <verze_text> je na pozici <pozice> text BOINC (podarilo se spustit prikaz "boinccmd.exe --version")
  if (pozice != -1)
  {
    // z <verze_text> vyriznu text od pozice <pozice> (prictu 6 ... delka textu BOINC a mezera)
    boinc_verze = verze_text.substr(6+pozice);
    // nyni je v <boinc_verze> hodnota 6.12.33
    alert(boinc_verze);
    return true;
  }
  else // verzi BOINC se nepodarilo zjistit, vracim FALSE
  {
    return false;
  }
}

// funkce pro porovnani dvou verzi ve tvaru X.X.X, ocekava promene ve tvaru pole
function porovnani_verzi(verze1, verze2)
{
  // promenne <verze1> a <verze2> jsou pole textovych retezcu, tak je prevedu na cisla
  verze1[0] = (parseInt(verze1[0]) || 0);
  verze1[1] = (parseInt(verze1[1]) || 0);
  verze1[2] = (parseInt(verze1[2]) || 0);
  verze2[0] = (parseInt(verze2[0]) || 0);
  verze2[1] = (parseInt(verze2[1]) || 0);
  verze2[2] = (parseInt(verze2[2]) || 0);
  if (verze2[0] != verze1[0])
    return (verze2[0] > verze1[0]);
  else
  {
    if (verze2[1] != verze1[1])
      return (verze2[1] > verze1[1]);
    else
    {
      if (verze2[2] != verze1[2])
        return (verze2[2] > verze1[2]);
      else
        return true;
    }
  }
}

// odstrani z retezce koncove mezery a znak konce radku
function trim(text)
{
  return text.replace(new RegExp("[" + "\\n\\s" + "]+$", "g"), "");
}

// provede nastaveni promenych podle verze BOINC
function init()
{
  // od verze BOINC 6.12 vcetne je jina syntaxe programu boinccmd
  var verze_pro_porovnani = "6.12.0";
  // zavolam funkci ktera zjisti verzi BOINC a pokud se to podari nastavim zakladni promenne
  if (verze())
  {
    alert("Porovnavam verzi " + boinc_verze + " s referencni verzi " + verze_pro_porovnani);
    if (porovnani_verzi(verze_pro_porovnani.split('.'),boinc_verze.split('.')))
    {
      // Verze BOINC >= 6.12
      boinc_jednotky = "boinccmd.exe --get_tasks";
      boinc_jednotka = "boinccmd.exe --task";
    }
    else
    {
      // Verze BOINC <  6.12
      boinc_jednotky = "boinccmd.exe --get_results";
      boinc_jednotka = "boinccmd.exe --result";
    }
    return true;
  }
  else // funkce pro zjisteni verze se nepodarila, vracim FALSE
  {
    return false;
  }
}

/* MAIN */
// zavolam funkci ktera nastavi zakladni promenne
if (init())
{
  // v tuto chvili je uspesne zjistena verze a
  // uspesne nastavene zakladni promenne <boinc_jednotky> a <boinc_jednotka>
  // definuji novy objekt WScript.Shell (umozni mi spoustet externi prikazy)
  var objekt_shell = new ActiveXObject("WScript.Shell");
  // definuji metodu Exec, spusti prikaz <boinc_jednotky> a pointer uchova v promene <objekt_exec>
  var objekt_exec  = objekt_shell.Exec(boinc_jednotky);
  // textova promena do ktere se ulozi cely obsah standardniho vystupu predchazejiciho prikazu
  var text_vystup  = objekt_exec.StdOut.ReadAll();
  // na konec <text_vystup> jeste pridam jednu prazdnou sekci abych pak nemusel resit konec 
  text_vystup = text_vystup + '\n' + "X) -----------" + '\n';
  // promena <text_vystup> by mela nyni obsahovat cely standardni vystup ktery vraci prikaz "boinccmd.exe --get_tasks"
  // definuji pole do ktereho prevedu obsah <text_vystup>
  var pole_vystup  = new Array();
  // oddelovacem bude znak EOL (EndOfLine) neboli \n
  // pole <pole_vystup> se naplni tak, ze kazdy dalsi radek bude v dalsim prvku
  // 1. radek v  pole_vystup[0], 2. radek v  pole_vystup[1], ...
  pole_vystup = text_vystup.split('\n');
  // nyni musime v cyklu projit vsechny radky (vyzaduje znalost vystupu "boinccmd.exe --get_tasks")
  // jednotlive jednotky jsou oddeleny v sekcich a o kterou jednotku se jedna zjistime az uvnitr sekce
  // takze si do nejakych promenych musime ukladat co budeme dale potrebovat a az sekce skonci
  // (zacne nova ... proto jsme si na konec pridali jednu prazdnou sekci pro ukonceni posledni sekce)
  // tak se rozhodneme podle obsahu ulozenych promenych co dal podnikneme
  // pripravim si promenne
  var b_name              = ""; // nazev jednotky (name)
  var b_state             = ""; // stav jednotky (state) 2 ... Pocita nebo Pripraven nebo Cekam na zpracovani, 4 ... Odesilam, 5 ... Odeslan. Pripraven k ohlaseni
  var b_scheduler_state   = ""; // stav scheduleru jednotky (scheduler state) 0 ... Pripraven, 1 ... Cekam na zpracovani, 2 ... Pocita
  var b_suspended_via_GUI = ""; // pozastaveno (suspended via GUI) no, yes
  var b_active_task_state = ""; // stav jednotky (active_task_state) 0 ... Pripraven, 1 ... Pocitam, 9 ... Cekam na zpracovani
  var ano                 = 0;  // 1 = ANO, 0 = NE ... jestli se jedna o projekt ktery nas zajima
  var ind                 = 0;  // index pro pole do ktereho budu ukladat hodnoty
  var jednotka = new Array();   // pole do ktereho se budou ukladat radky
                                // kazdy radek bude zase pole ve tvaru ([0] = name, [1] = state, [2] = scheduler_state, [3] = suspended_via_GUI, [4] = active_task_state)

  // a ted cyklus pres cele pole
  for(var i = 0; i < pole_vystup.length; i++)
  {
    // jestlize radek obsahuje text ") -----------" tak se jedna o zacatek nove sekce
    if (pole_vystup[i].indexOf(") -----------") != -1)
    {
      // jestlize je <ano> nastaveno (jedna se o projekt ktery nas zajima) je treba provest pozadovanou akci
      if (ano == 1) {
        alert("NACITANI JEDNOTEK (" + ind + ") :\nProjekt:" + projekt + "\nJednotka:" + b_name + "\nStav:" + b_state + "\nStav scheduleru:" + b_scheduler_state + "\nsuspended_via_GUI:" + b_suspended_via_GUI + "\nactive_task_state:" + b_active_task_state);
        // dale me budou zajimat pouze jednotky ktere maji stav jednotky = 2 (state), ty ktere jsou ve stavu Odesilam nebo Odeslany uz resit nebudu
        if (b_state == 2 || b_state == "downloaded") {
          // ulozim hodnoty do pole
          jednotka[ind] = new Array(b_name, b_state, b_scheduler_state, b_suspended_via_GUI, b_active_task_state);
          // a zvednu index o 1
          ind = ind + 1;
        }
      }
      // a po akci si opet vynulujeme promenne
      b_name              = "";
      b_state             = "";
      b_scheduler_state   = "";
      b_suspended_via_GUI = "";
      b_active_task_state = "";
      ano                 = 0;
    }
    // jestlize radek obsahuje text "   name: " tak se jedna o radek kde je nazev jednotky
    else if (pole_vystup[i].indexOf("   name: ") != -1)
    {
      // a nazev jednotky si uchovam do <b_name>
      b_name = trim(pole_vystup[i].substr(9));
    }
    // jestlize radek obsahuje text "   state: " tak se jedna o radek kde je stav jednotky
    else if (pole_vystup[i].indexOf("   state: ") != -1)
    {
      // a stav jednotky si uchovam do <b_state>
      b_state = trim(pole_vystup[i].substr(10));
    }
    // jestlize radek obsahuje text "   scheduler state: " tak se jedna o radek kde je stav scheduleru jednotky
    else if (pole_vystup[i].indexOf("   scheduler state: ") != -1)
    {
      // a stav scheduleru jednotky si uchovam do <b_scheduler_state>
      b_scheduler_state = trim(pole_vystup[i].substr(20));
    }
    // jestlize radek obsahuje text "   suspended via GUI: " tak se jedna o radek kde je informace o pozastaveni jednotky
    else if (pole_vystup[i].indexOf("   suspended via GUI: ") != -1)
    {
      // a informaci o pozastaveni jednotky si uchovam do <b_suspended_via_GUI>
      b_suspended_via_GUI = trim(pole_vystup[i].substr(22));
    }
    // jestlize radek obsahuje text "   active_task_state: " tak se jedna o radek kde je informace o active_task_state
    else if (pole_vystup[i].indexOf("   active_task_state: ") != -1)
    {
      // a informaci o active_task_state si uchovam do <active_task_state>
      b_active_task_state = trim(pole_vystup[i].substr(22));
    }
    // jestlize radek obsahuje text "   project URL: " tak se jedna o radek kde je adresa projektu
    else if (pole_vystup[i].indexOf("   project URL: ") != -1)
    {
      // a jestli radek obsahuje i adresu projektu ktery me zajima, tak si nastavim <ano>
      if (pole_vystup[i].indexOf("   project URL: " + projekt) != -1)
      {
        ano = 1;
      }
      else
      {
        ano = 0;
      }
    }
  }
  // jestlize je pole naplnene, tak <ind> bude vetsi nez 0
  if (ind > 0)
  {
/*
    // cele pole projdeme radek po radku a vypiseme
    for(var i = 0; i < ind; i++)
    {
      alert("VYPIS JEDNOTEK (" + i + ") :\nProjekt:" + projekt + "\nJednotka:" + jednotka[i][0] + "\nStav:" + jednotka[i][1] + "\nStav scheduleru:" + jednotka[i][2] + "\nsuspended_via_GUI:" + jednotka[i][3] + "\nactive_task_state:" + jednotka[i][4]);
    }
*/
    // pro nas pozadavek je ale vhodne prochazet pole od konce, a jednotky postupne pozastavit (nebo nechat pozastavene)
    // a teprve az se dostaneme na zacatek pole, tak prvnich nekolik jednotek pustit (nebo nechat pustenych)
    for(var i = ind-1; i >= 0; i--)
    {
      alert("VYPIS JEDNOTEK OD KONCE (" + i + ") :\nProjekt:" + projekt + "\nJednotka:" + jednotka[i][0] + "\nStav:" + jednotka[i][1] + "\nStav scheduleru:" + jednotka[i][2] + "\nsuspended_via_GUI:" + jednotka[i][3] + "\nactive_task_state:" + jednotka[i][4]);
      // v promenne <pocet_aktivnich_jednotek> je pocet jednotek ktere se maji pocitat
      if (i < pocet_aktivnich_jednotek)
      // vsechny jednotky ktere maji index <i> mensi nez <pocet_aktivnich_jednotek> pustime
      {
        // zjistime jestli je jednotka pozastavena
        if (jednotka[i][3] == "yes")
        {
          // a jestli ano tak ji pustime
          alert("Spoustim jednotku " + jednotka[i][0]);
          var resume_exec = objekt_shell.Exec(boinc_jednotka + " " + projekt + " " + jednotka[i][0] + " resume");
        }
      }
      else
      // vsechny ostatni pozastavime
      {
        // zjistime jestli neni jednotka pozastavena
        if (jednotka[i][3] == "no" || jednotka[i][3] == "")
        {
          // a jestli neni tak ji pozastavime
          alert("Zastavuji jednotku " + jednotka[i][0]);
          var suspend_exec = objekt_shell.Exec(boinc_jednotka + " " + projekt + " " + jednotka[i][0] + " suspend");
        }
      }
    }
  }
}
alert("Konec.");
Návod k použití
vkliber píše:Soubor uložit do stejného adresáře, kde je boinccmd.exe. Po uložení souboru Einstein_manage.js na něj kliknout pravým tlačítkem myši a kliknout na "Vlastnosti". Ve vlastnostech se přepnout na kartu "Skript", zaškrtnout "Zastavit skript po:" a nastavit 10 sekund a odškrtnout "Zobrazit logo ...". Dále vytvořit zástupce ve stejném adresáři (chytnout soubor Einstein_manage.js pravým tlačítkem myši, posunout a pustit a stisknout "Vytvořit zde zástupce". Vytvořeného zástupce přejmenovat na Einstein_manage.js, dále na něj kliknout pravým tlačítkem a a kliknout na "Vlastnosti". Ve vlastnostech se přepnout na kartu "Zástupce", zkontrolovat jestli hodnota "Spustit v:" odpovídá adresáři ve kterém se nachází skript Einstein_manage.js a nastavit "Spustit:" na hodnotu "V minimalizovaném okně".
Tím je připravený skript ke spuštění. Je možno odzkoušet tak, že spustíte BOINC Manager aktivujte "přebytečné" jednotky, a pak poklepete na Einstein_manage.js. Jednotky by se měly označit jako pozastavené.

Dále je nutné zařadit skript Einstein_manage.js do naplánovaných úloh ve Windows, tady se postup pro WinXP už výrazně liší od Vista a 7, proto ho nebudu podrobně popisovat. Každý ať si taky zvolí svůj časový plán.
Pro vklibera: upravený je řádek 176, přihodil jsem - už hodně dávno

Kód: Vybrat vše

|| b_state == "downloaded"
Blíží se konsolidační balíček pětikolky; šetřím trojbojem - piji staré víno, jím plesnivé sýry a jezdím v autě bez střechy.
UotD 767x Obrázek
1xObrázek 3xObrázek 9xObrázek 12xObrázek Obrázek
Obrázek

nenym
78.9473684211 %
78.9473684211 %
Příspěvky: 7610
Registrován: úte 13 led, 2009 15:33
rok narození: 0- 0-1956
ID CNT statistics: 10124

Re: Projekty s nedostatkem práce

#35 Příspěvek od nenym »

Upravil jsem script v předchozím příspěvku pro verzi 7.14.2.

Pro vklibera: upravený je řádek 266, přihodil jsem

Kód: Vybrat vše

 || jednotka[i][3] == ""
důvod: pokud není jednotka suspended, get_tasks řádek suspended via GUI vůbec nevypisuje
Blíží se konsolidační balíček pětikolky; šetřím trojbojem - piji staré víno, jím plesnivé sýry a jezdím v autě bez střechy.
UotD 767x Obrázek
1xObrázek 3xObrázek 9xObrázek 12xObrázek Obrázek
Obrázek

Odpovědět

Zpět na „Rady a návody“