Chtěl jsem vyzkoušet jak zprovoznit dva klienty verze 6 na jednom PC ... nějak jsem však postrádal vhodnou motivaci. Nyní se objevila, tak jsem se do toho pustil.
Návod jak zprovoznit dva klienty BOINC na jednom PC.
doporučuji nejprve přečíst a porozumět myšlence
vyzkoušeno na WinXP 32-bit
Pokud je nainstalován BOINC, tak odinstalovat (Ovládací panely - Přidat nebo odebrat Programy - BOINC - Odebrat).
Spustit registry (Start - Spustit... - napsat regedit - OK) a smazat celý klíč HKEY_LOCAL_MACHINE\SOFTWARE\Space Sciences Laboratory, U.C. Berkeley včetně podklíčů
Stáhnout BOINC (právě aktuální verze)
Windows 32-bit 2000/XP/Vista/7 ... http://boinc.berkeley.edu/dl/boinc_6.10 ... telx86.exe
Windows 64-bit XP/Vista/7 ... http://boinc.berkeley.edu/dl/boinc_6.10 ... x86_64.exe
Vytvořit adresáře (nebo podobné ... v návodu pak pozměnit)
D:\Vit\BOINC1\
D:\Vit\BOINC2\
Spustit instalaci boinc_6.10.58_windows_intelx86.exe
Změnit default instalaci ... Advanced
- změnit default adresáře :
Program directory : D:\Vit\BOINC1\Boinc_Program\
Data directory : D:\Vit\BOINC1\Boinc_Data\
- nechci Screensaver
- nechci Protected Application
- nechci Allow all users ...
Pokud se jedná o úplně první instalaci na PC tak bude zřejmě požadován Restart ... restartovat.
Jinak před koncem instalace nabídne spustit BOINC (Launch the BOINC Manager) tak souhlasit (zašktnout) a dokončit instalaci.
(Po restartu nebo dokončení instalace)
Spustí se BOINC Core (boinc.exe), BOINC Manager (boincmgr.exe) a BOINC Tray (boinctray.exe) se žádostí o Připojení k projektu ... Zrušit.
Stisknout Advanced View dále v Menu Pokročilé a Předvolby... a nastavit :
- Využití procesoru
+ Používat GPU pro výpočty
+ Pokud je využití procesoru nižší než 0 %
+ Přepnout aplikaci každých 120 min. (možno ponechat 60 min.)
+ Na vícepocesorových systémech použít nejvýše 50 % (chceme aby tato instance BOINC používala jen polovinu jader CPU)
Stisknout OK, zavřít BOINC Manager, kliknout pravým tlačítkem myši na ikonu BOINC v SysTray, zvolit Ukončit, zaškrtnout Přerušit výpočet vědeckých aplikací při ukončení Správce. a stisknout OK.
Skočit do adresáře D:\Vit\BOINC1\Boinc_Data\
a vytvořit soubor remote_hosts.cfg s tímto obsahem :
Kód: Vybrat vše
localhost
Obsah adresáře D:\Vit\BOINC1\ zkopírovat do adresáře D:\Vit\BOINC2\
Spustit registry, skočit do registru
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
a vytvořit novou Řetězcovou hodnotu
Název : boinc2
Data : "D:\Vit\BOINC2\Boinc_Program\boinc.exe" --allow_multiple_clients --gui_rpc_port 31417 --dir "D:\Vit\BOINC2\Boinc_Data"
Zavřít registry.
Provést Restart (tím ověříme správnost instalace a nastavení)
Po restartu se spustí DOS okno ve kterém je spuštěna druhá instance BOINC na portu 31417 (nezavírat).
První instance je spuštěna normálně a zřejmě nabídne připojení k projektu (prozatím dáme Zrušit a křížkem ukončíme BOINCManager).
Ve Správci úloh jsou vidět procesy :
boinc.exe
boinc.exe
boincmgr.exe
boinctray.exe
Ani v jedné instanci není BOINC připojený k žádnému projektu (jede naprázdno).
Pro přihlášení do první i druhé instance budeme používat BOINCManager z první instance (chod dvou BOINCManagerů nedoporučuji)
Vyzkoušíme připojení do obou instancí.
Spustíme BOINC Manager (poklepání na ikonu BOINC v SysTray) a jsme připojeni k první instanci BOINC (asi znovu nabídne připojení k projektu, tak prozatím Zrušit).
Z menu spustíme Pokročilé - Volba počítače ...
do Jméno počítače napíšeme localhost, tím se automaticky vyplní i heslo.
Využijeme toho, že obě dvě instance jsou identické (jsou stejné i hesla).
Jméno počítače změníme na localhost:31417 (heslo již je vyplněné) a stiskneme OK.
Tím jsme se připojili k druhé instance BOINC, dojde k nabídce připojení k projektu ... dáme Zrušit.
Přepneme se do záložky Zprávy a na začátku vidíme Data directory: D:\Vit\BOINC2\Boinc_Data.
Nyní se přepneme zpátky do první instance BOINC :
Z menu spustíme Pokročilé - Volba počítače ...
do Jméno počítače napíšeme localhost, tím se automaticky vyplní i heslo a stiskneme OK.
Tím jsme se zpátky připojili k první instance BOINC, dojde k nabídce připojení k projektu ... dáme Zrušit.
Přepneme se do záložky Zprávy a na začátku vidíme Data directory: D:\Vit\BOINC1\Boinc_Data.
Vypínání jednotlivých instancí BOINC se provádí následovně :
Druhá instance se vypíná stiskem Ctrl+C v DOS okně, nebo z BOINC Managera (první instance) připojením k druhé instanci BOINC a z menu Pokročilé - Vypnutí připojeného klienta ....
První instance se vypíná z BOINC Managera (první instance) připojením k první instanci BOINC a z menu Pokročilé - Vypnutí připojeného klienta ..., nebo pravým klikem na ikonu BOINC v SysTray, kliknutím na Ukončit a zaškrtnout Přerušit výpočet vědeckých aplikací při ukončení Správce., tím se ukončí i BOINC Manager.
____________
Potud tedy jak nainstalovat dvě instance BOINC na jeden počítač, obě dvě mají nastaveno, že mají použít 50% jader CPU. U 4-jádra to tedy bude 2 + 2. Dá se samozřejmě nastavit i 3 + 1, nebo jiný poměr.
Zatím jsem úmyslně nepřipojoval projekty, protože je třeba se o možných problémech zmínit.
Obě dvě instance jsou identické a proto BOINC vygeneroval stejné host_cpid (6. řádek v client_state.xml). Toto host_cpid se generuje jako MD5 z řetězce skládajícího se z MAC addresses + Hostname + IP addr + OS name.
Toto host_cpid se nedá ručně v client_state.xml změnit.
Pokud na oba BOINC připojíme jiné projekty není v tom žádný problém. Pokud ovšem budeme chtít připojit oba BOINC klienty na jeden projekt, dojde k chaosu.
Vysvětlím :
- první BOINC připojíme poprvé na projekt, na základě host_cpid se na serveru projektu vygeneruje hostid (unikátní číslo PC na projektu) a stáhnou se jednotky.
- druhý BOINC připojíme na stejný projekt a na základě host_cpid si projekt bude myslet že se jedná o stejné PC, proto již nebude na serveru vytvářet nové hostid (nevytvoří se nový počítač, ale dojde k napojení na již vytvořený počítač první instancí), stažené jednotky první instancí BOINC zruší (označené jako "Client detached") a stáhne nové jednotky na BOINC2 a už je z toho chaos a není možné rozumným způsobem dopočítat a odevzdat jednotky na obou instancích BOINC.
Je třeba to ošidit a donutit server projektu, aby si myslel že se připojuje nový počítač a vytvořil nové hostid. Toho docílíme tak, že serveru podstrčíme nové host_cpid. Jak jsem se zmínil, host_cpid vytváří klient BOINCu sám ze 4 údajů : MAC addresses + Hostname + IP addr + OS name
- OS name ... Název (typ) operačního systému nezměníme
- MAC addresses ... taky nezměníme (pokud nemáme někde k dispozici další síťovou kartu)
- IP addr ... tady je možnost změny, ovšem budu předpokládat pravděpodobnější variantu, že IP adresa je přidělována automaticky DHCP serverem a nejsme schopni ji změnit
- Hostname ... poslední možnost kterou využijeme (předpokládám že se jedná o osobní PC a mám nad ním plnou kontrolu)
Změna Hostname si vyžádá restart PC, proto se na to připravíme. Scénař bude následující :
- první instanci BOINC připojíme k nějakému projektu, počkáme až se stáhne práce a pak první instanci BOINC vypneme
- znemožníme spuštění první instance BOINC
- změníme Hostname
- provedeme restart (automaticky se spustí druhá instance BOINC a dojde k vygenerování nového host_cpid)
- připojíme se ke druhé instanci BOINC
- připojíme se ke stejnému projektu (jako předtím na první instanci BOINC), tím se na serveru vygeneruje nové hostid (nový počítač)
- stáhneme práci a ukončíme BOINC
- znovu zpřístupníme první instanci BOINC
- zpátky změníme Hostname
- restartujeme
A jdeme na to :
První instanci BOINC připojíme k nějakému projektu, počkáme až se stáhne práce
Vypneme první i druhou instanci BOINC, vypneme BOINC Manager.
Přepneme se do adresáře D:\Vit\BOINC1\Boinc_Program\ a přejmenujeme boinc.exe na neboinc.exe.
Změníme název Hostname (postup pro WinXP) Klikneme pravým tlačítkem myši na Tento počítač a klikneme na Vlastnosti, přejdeme na záložku Název počítače a stiskneme Změnit a změníme Název počítače (třeba na konec přidáme 2).
Provedeme restart.
Po restartu se v DOS okně spustí druhá instance BOINC a v SysTray nám ikonka BOINCu oznámí, že se nepodařilo spustit BOINC (první instance).
Můžeme si ověřit, že v souboru D:\Vit\BOINC2\Boinc_Data\client_state.xml se změnilo host_cpid oproti D:\Vit\BOINC2\Boinc_Data\client_state.xml, ale můžete mi věřit.
Připojíme se ke druhé instanci BOINC ... spustíme BOINC Manager poklepáním v SysTray na ikonu BOINC - Pokročilé - Volba počítače - do Jméno počítače vybereme localhost (tím se vyplní heslo), vybereme localhost:31417 (heslo zůstane) a stiskneme OK.
Zobrazí se nabídka k připojení k projektu ... připojíme se ke stejnému projektu jako v první instanci, necháme stáhnout práci a počítáme na druhé instanci BOINC pod stejným účtem, ale jiným hostid počítače.
Můžeme ověřit na serveru projektu.
Ukončíme druhou instanci BOINC.
Přepneme se do adresáře D:\Vit\BOINC1\Boinc_Program\ a přejmenujeme neboinc.exe na boinc.exe
Změníme zpátky název Hostname na původní název.
Provedeme restart.
Po restartu se v DOS okně spustí druhá instance BOINC a v ní se rozběhnou jednotky. Zároveň se v SysTray spustí první instance BOINC s v ní se rovněž rozběhnou jednotky stejného projektu.
________
No a to je celé ... teda částečně ... asi si řeknete k čemu to je vlastně dobré?
Původně jsem tento návod připravoval pro CIMRMANA a to následně rozepíšu. Využít se to dá i jinak, například pro :
- testování
- neustálé chytání jednotek skoro mrtvých projektů ... dokonce lze po odchytnutí jednotek na druhé instanci BOINC je přenést na první instanci BOINC, tam dopočítat a odevzdat
- provozování non-CPU projektů ... ... pokud někoho napadlo takto povozovat projekt FreeHAL, tak ho od tohoto postupu důrazně odrazuji, jedná se o zakázánou aktivitu, která je serverem kontrolována (má k tomu informace které BOINC posílá z klientu na server) a je přísně trestána nekompromisním zrušením účtu
- separátní počítání na vícero GPU ... případ pro CIMRMANA
Důležité je si uvědomit, že nelze provozovat tentýž projekt na obou instancích BOINC současně (bez vygenerování nového hostid), lze ovšem projekt mezi oběma instancemi přepínat - na první odpojit na druhé připojit (bez nutnosti generovat nové hostid).
A teď scénář pro CIMRMANA (který snad nebude nutné použít).
Je to pouze návrh psaný z hlavy, nemám možnost si ověřit správnou funkčnost ani správnost své úvahy.
Jsou k dispozici 3 grafické karty 2x5870 (2x1 jádro) + 1x5970 (1x2 jádra). Jestliže na všechny 3 GPU (4 jádra) pustím jednotku projektu DNETC, tak se jednotka rozloží na všechny 4 jádra a výsledkem je to, že 2 jádra 5970 čekají na pomalejší 2 jádra 5870.
Toto se dá řešit spuštěním dvou instancí BOINC (s vygenerováním nového hostid pro druhou instanci).
Na první instanci povolíme počítání na 2x5870 a druhé instanci počítání na 5970.
Nejprve je třeba zjistit pod jakým device jsou karty v OS registrovány, v našem případě to bude device 0,1,2 a 3. Dejme tomu že 2x5870 je device 0 a 1 a 1x5970 je device 2 a 3.
Stačí vytvořit soubory cc_config.xml pro obě instance BOINC.
Nyní zakážeme Device 2 a 3 (kartu 5970) pro první instanci BOINC.
Skočit do adresáře D:\Vit\BOINC1\Boinc_Data\
a vytvořit soubor cc_config.xml s tímto obsahem
Kód: Vybrat vše
<cc_config>
<options>
<ignore_ati_dev>2</ignore_ati_dev>
<ignore_ati_dev>3</ignore_ati_dev>
</options>
</cc_config>
Skočit do adresáře D:\Vit\BOINC2\Boinc_Data\
a vytvořit soubor cc_config.xml s tímto obsahem
Kód: Vybrat vše
<cc_config>
<options>
<ignore_ati_dev>0</ignore_ati_dev>
<ignore_ati_dev>1</ignore_ati_dev>
</options>
</cc_config>
Určitě ale doporučuji provést restart celého PC a poté ve zprávách BOINC zkontrolovat jak nastavení zafungovalo.