Anleitung: Bunkern

Hier findest Du alles zur Organisation, Durchführung und den Resultaten unserer Wettkämpfe, Challenges und Races
Nachricht
Autor
Benutzeravatar
Dunuin
Vereinsmitglied
Vereinsmitglied
Beiträge: 1743
Registriert: 23.03.2011 12:59
Wohnort: Hamburg

Anleitung: Bunkern

#1 Ungelesener Beitrag von Dunuin » 21.05.2011 02:28

Da wir beim Pentathlon 2011 nicht so sonderlich gut abgeschritten haben, wollte ich nun mal Erklären, wie man seine WUs bunkert, damit wir bei den nächsten Wettbewerben etwas mehr herausholen können. Die anderen Teams bunkern nämlich auch fleißig.

Was ist Bunkern und wo liegt der Vorteil?
Als Bunkern bezeichnet man das Ansammeln von Workunits (WUs). Um zu verstehen, warum das Bunkern bei einem Wettkampf von Vorteil ist, muss man erst verstehen, wie so ein Wettkampf abläuft.
Wenn ein Wettkampf z.B. bei RNA-World stattfindet und vom 1. Juni 00:00 Uhr bis 7. Juni 23:59 geht, dann müssen wir versuchen, dass uns in dem Projekt, zwischen dem 1. und 7. Juni, möglichst viele Credits gutgeschrieben werden.
Alle Credits vor und nach diesem Zeitraum gehen nicht in die Wertung ein, was man natürlich vermeiden will.

Kein Creditverlust nach dem Zeitraum
Nun gibt es aber das Problem, dass man nicht alleine an einer WU rechnet, sondern mit mehreren Leuten zusammen. D.h., dass man die Credits für das Rechnen erst gutgeschrieben bekommt, wenn alle mit dieser WU fertig sind oder die Abgabefrist (Deadline) erreicht ist.
Wenn die Deadline einer WU also am 9. Juni ist und man die WU schon am 6. Juni fertig hat, dann ist es reines Glücksspiel, ob man noch vor dem 7. Juni die Credits erhält, da die anderen die WU vielleicht erst am 8. Juni hochladen oder gar nicht hochladen, wobei es die Credits dann halt zum Deadline-Termin, also dem 9. Juni, gibt.
Dieses Problem kann man aber dadurch umgehen, dass man sich rechtzeitig so viele WUs wie möglich schicken lässt, wo die Deadline möglichst kurz vor dem Wettbewerbsende liegt. So gehen uns keinerlei Credits verloren, da die Credits noch vor dem Ende des Wettbewerbs gutgeschrieben werden müssen. Möglichst viele WUs brauchen wir aus dem Grund, dass wir uns sonst neue WUs schicken lassen müssen, wenn wir keine mehr auf Lager haben und dann je nach Zeitpunkt die Deadline hinter dem Wettbewerbsende liegen könnte. Was uns dann ja nicht wirklich viel bringt.

Kein Creditverlust vor dem Zeitraum
Dabei müssen wir aber noch auf ein 2. Problem achten, nämlich dass wir die WUs nicht zu früh hochladen.
Nehmen wir einmal an, dass die Deadline der WUs immer bei 2 Wochen nach dem Datum liegt, wo wir uns die WUs haben schicken lassen.
Wie bekannt geht der Wettkampf vom 1. bis 7. Juni und wir wollen nur WUs, die vor dem 7. Juni enden, damit wir keine Credits verlieren. Wir holen uns nun also am 24. Mai, also 2 Wochen vor der Deadline und dem Wettbewerbsende, genug WUs für 2 Wochen und fangen direkt an diese abzuarbeiten. Im Idealfall haben wir nun auch keine unfertigen WUs von anderen Projekten mehr, damit wir dem Wettbewerbsprojekt 100% unserer Rechenzeit geben können.
Jetzt müssen wir es aber vermeiden, dass wir unsere fertigen WUs vor dem 1. Juni hochladen. Denn wenn die anderen Leute das mit der gleichen WU auch tun, dann würden uns die Credits ja noch vor dem Wettbewerbsstart gutgeschrieben werden. Wenn wir die WUs jedoch kurz vor der Fertigstellung pausieren, so haben diese kein Ergebnis und BOINC versucht daher auch keines an die Projektserver zu schicken. Damit können wir also die Creditvergabe blockieren, da alle Leute die Credits für die WU erst bekommen, wenn wir die WU wieder starten und die letzten paar Prozent fertigstellen.
Das pausieren der WUs könnten wir per Hand über den Boinc-Manager machen, wobei uns aber massig WUs durchrutschen würden, da wir schließlich rund um die Uhr, alle paar Minuten auf den BOINC-Manager gucken müssten und das über 1 Woche lang. Daher lassen wir das Pausieren lieber von einem Programm automatisch erledigen, welche später noch vorgestellt werden. Alternativ kann man über eine Firewall oder ähnliche Software auch das Verbinden von BOINC zum Projektserver unterbinden, wodurch BOINC zwar das Hochladen der WUs versucht, dies aber nicht schafft.

Das Vorarbeiten
Das Pausieren der fast fertigen WUs bzw. das Blockieren des Hochladens hat auch noch einen 2. Vorteil. Wir können dies nutzen, um möglichst viele WUs vor dem Wettbewerbsstart vorbereiten zu können, welche wir dann kurz nach dem Wettbewerbsstart schnell fertigstellen und hochladen. Um das Vorarbeiten möglichst gut ausnutzen zu können, lassen wir uns also möglichst viele WUs schicken, bei denen die Deadline möglichst kurz nach dem Wettbewerbsstart liegt. Wenn die Deadline also bei 2 Wochen nach Abholung der WUs liegt, dann können wir uns die WUs schon am 18. Mai holen und haben so ganze 2 Wochen mehr Zeit.
Wir haben also insgesamt 3 Wochen Zeit zum Rechnen der WUs, auch wenn der Wettkampf nur 1 Woche lang läuft.

Zusammenfassung
Bei unserem Beispiel (2 Wochen Zeit bis Deadline) würde es im Idealfall wie folgt aussehen:
Bild
Je nach Projekt ist der Zeitraum zwischen Empfang der WU und dessen Deadline unterschiedlich. Da müsst ihr euch dann selbst überlegen, wann ihr etwas startet, pausiert, WUs abholt etc. Aber ich hoffe das Schema hilft euch dabei.
Bitte plant aber genug Zeit für die Fertigstellung der WUs ein. Wenn ihr alle WUs bei 95% Fertigstellung stoppt, dann wäre es schade, wenn ihr die zu spät aktiviert und diese erst nach der Deadline fertig werden, weil ihr zu wenig Zeit eingeplant habt. 5% sind zwar nicht so viel, aber das summiert sich ja, wenn ihr für 2 Wochen im Voraus vorarbeitet.

Subprojekte ausschalten
Bei vielen Wettkämpfen zählen nicht die Credits, die man in einem bestimmten Projekt bekommt, sondern nur die Credits, die man in dem Projekt für das Abarbeiten eines Subprojektes bekommt. Ein Beispiel hier für wäre Primegrid. Dort gibt es etliche Subprojekte, welche alle nach Primzahlen suchen, aber bei deren Wettkämpfen kommt es eben darauf an, wo genau man mitmacht. In einem solchen Fall sollte man alle Subprojekte deaktivieren, die nicht zum Wettkampf gehören, damit einem nur die richtigen WUs zugeschickt werden.
Dazu gehen wir direkt auf die Projektseite, oder klicken im BOINC-Manager auf den Projekte-Tab, dann auf das Projekt und klicken dort auf einen Knopf wie "Your Account", "Ihr Konto" oder ähnliches.
Nach dem Login auf der Projektseite muss man dort nun in die Kontoverwaltung gehen und dort den Link hinter "Einstellungen für dieses Projekt" folgen. Daraufhin ist man auf der Seite für die Projekteinstellung, wo man in einer Tabelle die einzelnen Einstellungen sehen, aber nicht ändern kann. Zum Ändern muss man nach unten Scrollen und auf "Einstellungen ändern" klicken. Danach müsste man über die Checkboxen bei "Subproject" die jeweiligen Subprojekte aktivieren/deaktivieren können. Die jeweiligen Projektseiten unterscheiden sich etwas, aber meistens läuft es etwa so ab.

BOINC zum Horten konfigurieren
Damit euer Rechner auch genug WUs zum Horten anfordert, musst ihr die BOINC-Einstellungen entsprechend anpassen. Öffnet den BOINC-Manager und wechselt in die Erweiterte Ansicht, falls ihr diese nicht eh schon nutzt, indem ihr auf "Ansicht -> Erweiterte Ansicht" klickt. Nun muss das Einstellungs-Fenster geöffnet werden. Klickt dazu oben auf "Assistenten -> Einstellungen".

Im neuen Fenster nun zum Reiter "Nutzung des Netzwerks" wechseln und dort folgendes Einstellen:
  • "Minimum work buffer" -> auf "10,00" Tage setzen
  • "Max zusätzlicher Arbeittspuffer" -> auf "10,00" Tage setzen
Dann zum Reiter "Nutzung von Festplatte und Speicher" wechseln und folgendes einstellen:
  • Unter "Nutzung des Speichers" bei beiden Feldern "99" % eingeben, damit BOINC möglichst viel RAM zur Verfügung steht
  • Die Checkbox für "Lasse Anwendung im Speicher, wenn sie pausiert" ankreuzen (ganz wichtig)
Die Einstellungen danach mit einem Klick auf den OK-Knopf bestätigen.
Nachdem nun alles eingestellt ist muss sich BOINC genug WUs holen. Meist holt sich BOINC immer nur wenige WUs auf einmal, also am besten im Takt von 5 bis 10 Minuten einmal das Projekt aktualisieren lassen, für das ihr bunkern wollt, indem ihr im BOINC-Manager im Reiter "Projekte" das jeweilige Projekt anklickt und dann links oben den "Aktualisieren-Knopf" anklickt.

Besonderheiten bei einigen Projekten
Manche Projekte haben noch Besonderheiten die es zu beachten gilt, damit das Bunkern funktioniert.
So ein Fall wäre z.B. das World Community Grid, wo man von Haus aus nur maximal eine WU pro Subprojekt zugeschickt bekommt, was sich aber über die WCG-Seite ändern lässt. Dazu besucht man die WCG-Seite, loggt sich dort ein und geht dann per "MyGrid -> Device Manager -> Device Profiles" auf die Seite wo man die Rechenprofile für die Computer auswählen kann. Dort klickt man auf das entsprechende Profil (dürfte "Default" sein, falls ihr da keine speziellen Profile eingestellt habt) und kommt dann zu der Seite wo man das Standard-Rechenverhalten einstellen kann.
Dort muss man unter "Number of workunits per host for" im Dropdown den Wert von "1 - Default" auf "Unlimited" stellen, damit man mehr wie 1 WU geschickt bekommt.
Bei der Gelegenheit auch gleich "Connect to network about every X days" auf "10.0" und "Cache X extra days of work" auf "10.0" stellen.

Methoden zu Bunkern
Generell gibt es 3 Wege wie man WUs bunkern kann:
  1. Die WUs pausieren bevor sie fertig berechnet sind, damit kein Ergebnis vorliegt welches hochgeladen werden könnte. Erst wenn der Wettkampf gestartet ist setzt man das Abarbeiten der WUs fort und rechnet diese zu ende, wo sie dann von BOINC hochgeladen werden. Diesen Ansatz verfolgen Methode 1 und 2.
    Pro:
    • es können während des Bunkern neue WUs heruntergeladen werden, was besonders praktisch ist, wenn das Projekt z.B. Engpässe bei der WU-Versorgung hat
    Kontra:
    • jede pausierte WU bleibt im RAM, weshalb der RAM immer voller und voller wird. Eignet sich also nicht bei langen Deadlines oder wenn die Anwendungen sehr Speicherhungrig sind.
    • das Projekt kann die maximale Anzahl der WUs für einen Computer begrenzen, wodurch man nicht genügend WUs zum Bunkern bekommt
    • man muss genug Zeit einplanen, um während des Wettkampfes die WUs fertig rechnen zu können
  2. BOINC verbieten mit dem Projektserver zu kommunizieren, wodurch weder neue WUs heruntergeladen, noch die fertig berechneten WUs hochgeladen werden können. Diesen Ansatz verfolgen Methode 3 und 4.
    Pro:
    • kein wachsender RAM-Verbrauch
    Kontra:
    • man kann während des Bunkerns keine neuen WUs herunterladen
    • das Projekt kann die maximale Anzahl der WUs für einen Computer begrenzen, wodurch man nicht genügend WUs zum Bunkern bekommt
  3. Man lässt mehrere BOINC-Instanzen auf dem selben Rechner laufen, was in Methode 5 und 6 erklärt wird. Dazu erstellt man im PC z.B. eine so genannte "Virtuelle Maschinen" (kurz VMs). Eine VM ist ein virtueller Computer im echten Computer mit eigenem Betriebssystem und Programmen..
    Pro:
    • kein wachsender RAM-Verbrauch
    • man kann während des Bunkerns neue WUs holen
    • keine WU-Beschränkungen vom Projektserver = unbegrenzt viele WUs bunkerbar
    • Checkpointing auch für Anwendungen die eigentlich keine Checkpoints nutzen, also viel sicherer (nur Methode 5 mit VM)
    Kontra:
    • mit viel Vorarbeit verbunden
    • Geschwindigkeitsverlust beim Crunchen durch die VM (nur Methode 5)

Methode 1 - Mein Batchscript
Wer Windows 7 nutzt, der kann mein Batch-Script benutzen, was ich mir für den Pentathlon 2011 schnell zusammengeschustert habe. Ihr findet es hier und müsst den Inhalt der Zip-Datei nur in euer BOINC-Hauptverzeichnis kopieren und die "bunkerer.bat" starten.
Darauf hin wird das Script automatisch alle 3 Minuten die WUs auslesen und sämtliche WUs pausieren, welche zu mehr als 95% fertiggestellt sind und/oder nur noch weniger als 10 Minuten bis zur Fertigstellung verbleibend haben. Es kann auch mit anderen Windowsversionen gehen, aber da scheint es teilweise Probleme zu geben.

Wer noch etwas Feintuning vornehmen möchte, der kann die "bunkerer_config.txt" öffnen und dort die Werte bearbeiten.
Es gibt gesamt 4 Einstellungsoptionen pro Projekt, welche alle durch ein "|"-Zeichen getrennt sind und jedes Projekt hat eine eigene Zeile. Hier nun die 4 Optionen und deren Bedeutung von Links nach Rechts:
  1. Projekt-URL: Dies ist die URL des Projektes. Sie funktioniert als eine Art Projekt-ID. Wenn diese nicht genau mit der übereinstimmt, die BOINC für das Projekt kennt, dann kann das Batchscript die WUs keinem Projekt zuordnen
  2. geschätzte Zeit bis Fertigstellung: Hier muss man eine Zahl eingeben, welche dann für die Sekunden steht. Ist bei einer WU die geschätzte Zeit in Sekunden bis zur Fertigstellung kleiner als diese Zahl, dann wir die jeweilige WU pausiert. Bitte bedenkt, dass das Script die WUs nur alle 3 Minuten abcheckt. Wenn dort "600" steht, werden die WUs also zwischen 7 und 10 Minuten vor Fertigstellung gestoppt.
  3. Fertigstellung in Prozent: Diese Zahl gibt die Fertigstellung in Prozent an. Wenn dort z.B. "95" steht, dann heißt dies, dass eine WU gestoppt wird, wenn dessen Fertigstellung größer oder gleich 95% ist.
  4. Bunkerung aktiviert/deaktiviert: Wenn dort ein "y" steht, dann ist die Bunkerung für das zugehörige Projekt aktiviert. Wenn man also für ein Projekt nicht möchte, dass dessen WUs vor der Fertigstellung pausiert werden, dann sollte man ein "n" eingeben.
Nach dem Speichern der Textdatei sollten die Einstellungen sofort übernommen werden. Wenn man die Zeilen der Projekte löscht, bei denen man eh nicht mitrechnet, dann dürfte das Script etwas schneller arbeiten.
Wenn ein Projekt nicht in der "bunkerer_config.txt" steht, dann kann man es in einer neuen Zeile hinzufügen. Das schwierigste dabei ist wohl die richtige Projekt-URL zu finden. Diese kann man aber in der "bunkerer_results.txt" finden, welche automatisch erstellt und aktualisiert wird, solange die "bunkerer.bat" läuft.

Methode 2 - BoincTasks
BoincTasks ist ein alternativer Boinc-Manager, welcher etliche neuen Funktionen mitbringt. Eine davon ist unter Anderem das Bunkern, was man über den Regeleditor umsetzen kann. Das praktische dabei: BoincTasks kann alle Rechner im Netzwerk fernsteuern und so auch bei allen Rechnern das Bunkern ausführen. Herunterladen könnt ihr das Programm hier und dort habe ich noch ein paar Hilfen zu dem Programm aufgeschrieben.

Das Holen von genug WUs
Mit BoincTasks habt ihr 2 Optionen zum Anfordern der WUs. Zum Einen könnt ihr sagen, für wie viele Tage ihr WUs haben wollt und zum Anderen kann man eine feste Anzahl von WUs eingeben, die man auf Vorrat haben möchte.
Für beides müsst ihr als Erstes in BoincTasks in das "Computer"-Tab wechseln, wo ihr eure Computer aufgelistet seht.
Dort könnt ihr dann für jeden Rechner über die Spalten "Tage Arbeit" und "angeforderte Aufgaben" festlegen, wie viele WUs ihr anfordern wollt. Auch hier sollte man wieder vorher bei den Projekten, die nicht beim Wettkampf mitmachen, "Keine Arbeit anfordern" einstellen.

Das Erstellen von Regeln
Bei BoincTasks kann man Regeln erstellen und dort einstellen, wann und was passieren soll.
Dazu gehen wir als Erstes in das "Aufgaben"-Tab, wo all unsere WUs der verschiedenen Rechner aufgelistet sind.
Nun suchen wir uns eine WU aus dem richtigen Projekt und Subprojekt aus, welche wir für den Wettkampf berechnen wollen und klicken diese mit der rechten Maustaste an.
Daraufhin erscheint ein Menü, wo wir auf "Regel hinzufügen" klicken. Nun sollte das vorausgefüllte Fenster des Regeleditors erscheinen.

Bei Regelname geben wir einen Namen ein wie "Bunkern nach Fertigstellung RNAWorld", damit wir die Regeln später gut wiederfinden können. Die Felder "Computer", "Projekt" und "Anwendung" (Anwendung = Subprojekt) sollten bereits für die WU, die ihr vorhin angeklickt habt, vorausgefüllt sein. Wenn eines dieser 3 Felder leer ist, dann steht dies für alle Rechner, alle Projekte etc. Wollen wir also nicht nur die WUs eines bestimmen Subprojektes anhalten, sondern die WUs von allen Subprojekten, dann löschen wir den Text aus dem "Anwendung"-Feld. Wenn man mehrere Rechner mit BoincTasks fernsteuert und die WUs von allen Rechnern pausiert werden sollen, dann löschen wir auch noch den Text aus dem Feld "Computer".

Nun haben wir 2 Optionen, um die WUs kurz vor der Fertigstellung zu pausieren.

1.) Stoppen nach Fertigstellung:
Wenn wir bei "Typ" das "Fortschritt %" anklicken, danach bei "Operator" das ">" anklicken, danach bei "Wert" die Zahl "95" eingeben und bei "Ereignis" auf "Pausiere Aufgabe" klicken, dann werden die WUs des Projekts, was oben bei "Projekt" steht, immer pausiert, sobald es mehr als 95% fertiggestellt ist.

2.) Stoppen nach Zeit bis Fertigstellung:
Wenn wir bei "Typ" das "Verbleibende Zeit" anklicken, danach bei "Operator" das "<" anklicken, danach bei "Wert" den Text "00:10:00" eingeben und bei "Ereignis" auf "Pausiere Aufgabe" klicken, dann werden die WUs immer pausiert, sobald die Zeit bis zur Fertigstellung kleiner als 0 Stunden, 10 Minuten und 0 Sekunden ist.

Anscheinend kann man pro Regel nur eine der beiden Optionen verwenden, denn wenn man beide auswählt, dann werden die WUs nur gestoppt, wenn sowohl Zeit als auch Fertigstellung stimmen, was natürlich auch gewünscht sein kann.

Nun bestätigen wir die Regel mit einem Klick auf den "OK"-Knopf (oder alternativ vorher auf "Prüfen"-Knopf klicken, damit Kontrolliert wird, ob kein Fehler in der Regel ist), worauf sich der Regeleditor schließt und unsere Regel nun im Fenster "BoincTasks Einstellungen" unter dem "Regeln"-Tab zu finden ist. Dort ist die Checkbox für unsere Regel deaktiviert. Wir klicken nun also noch auf die Checkbox, damit unsere Regel aktiviert wird und in Kraft tritt.

Methode 3 - Netzwerkzugriff abschalten
Der simpelste Weg um BOINC daran zu hindern die Ergebnisse abzuschicken ist BOINC einfach die Netzwerknutzung zu untersagen. Das geht bequem vom BOINC-Manager aus. Wenn man im BOINC Manager die erweiterte Ansicht gewählt hat muss man dazu nur oben im Menü auf "Steuerung" klicken und dann "Netzwerkzugriff abgeschaltet" auswählen. Nun darf BOINC nicht mehr mit dem Internet kommunizieren, also keinerlei WUs herunter- oder hochladen, bis man dort wieder "Netzwerkzugriff immer erlaubt" auswählt. Da BOINC dann wie gesagt überhaupt nichts mehr online machen darf sollte man sich vorher ausreichend mit WUs bis zum Wettbewerbsstart eindecken.
Problematisch wird diese Methode wenn man z.B. bei einem reinen CPU-Wettbewerb mitmacht und trotzdem noch an GPU-WUs oder Projekten mit wenig CPU-Verbrauch (QCN, Radioactive, WUProp etc) rechnen möchte, da diese Projekte dann auch keine neuen WUs mehr laden können.

Methode 4 - Internetzugriff für bestimmte Anwendungen verbieten
Wer im Gegensatz zu Methode 3 nur bestimmten Anwendungen den Internetzugriff verbieten will, damit andere BOINC-Projekte weiterhin WUs hochladen/runterladen können, der kann dies über 2 Wege tun. Wie auch bei Methode 3 muss man dafür aber vorher für genug WUs sorgen, da danach keine neuen WUs mehr geladen werden können.

1.) Die Software-Firewall
Mit einer Software-Firewall wie dem kostenlosen Zonealarm kann man Regeln für alle Anwendungen erstellen und so diesen den Internetzugriff untersagen. Wie das genau geht hängt von der jeweiligen Firewall ab. Einfach mal schlau dazu machen. Auch die neuen Windowsversionen haben eine Firewall integriert die dazu benutzt werden kann.

2.) Änderung der Hosts-Datei
Auf einem Computer wird die Hosts-Datei dazu genutzt um eine Domain zu einer IP-Adresse zu übersetzen. Will man nun erreichen, dass eine eine Domain nicht mehr auf dem PC aufrufbar ist, so kann man in diese Hosts-Datei einen Eintrag machen, welcher die Domain auf den eigenen PC rückleitet. Dazu muss man Administratorrechte besitzen und sollte kurz den Virenscanner deaktivieren. In Linux findet man die Hostsdatei unter "/etc/hosts" und in Windows unter "c:\system32\drivers\etc\hosts". Die Datei kann z.B. mit Notepad geöffnet werden.

In Windows sieht die Datei so aus:

Code: Alles auswählen

# Copyright (c) 1993-2009 Microsoft Corp.

#
# This is a sample HOSTS file used by Microsoft TCP/IP for Windows.
#
# This file contains the mappings of IP addresses to host names. Each
# entry should be kept on an individual line. The IP address should
# be placed in the first column followed by the corresponding host name.
# The IP address and the host name should be separated by at least one
# space.
#
# Additionally, comments (such as these) may be inserted on individual
# lines or following the machine name denoted by a '#' symbol.
#
# For example:
#
# 102.54.94.97 rhino.acme.com # source server
# 38.25.63.10 x.acme.com # x client host

# localhost name resolution is handled within DNS itself.
# 127.0.0.1 localhost
# ::1 localhost
Will man einem Projekt den Internetzugriff sperren, so muss man erst alle Domains von dem Projekt kennen, wo BOINC versucht die fertige WU hochzuladen. Das ist nicht gerade einfach herauszufinden. Ein weiteres Problem taucht dabei auch auf. Will man BOINC z.B. das Hochladen von Yoyo@Home-WUs untersagen, so muss man "www.rechenkraft.net" auf sich selbst umleiten, da BOINC die WUs auf rechenkraft.net hochläd. Sperrt man aber nun rechenkraft.net indem man folgende Zeilen an das Ende der Hosts-Datei einfügt...

Code: Alles auswählen

# yoyo@home aussperren
127.0.0.1	www.rechenkraft.net
...so kann man auch im Browser nicht mehr auf unsere Webseite zugreifen und dann natürlich auch nichts mehr im Forum nachlesen.

Methode 5 - Mehrere virtuelle Rechner über Virtualbox
Virtualbox ist ein kostenloses Programm, womit man mehrere virtuelle Rechner mit eigenem Betriebssystem auf dem PC laufen lassen kann. Ihr habt damit praktisch einen PC in einem PC. Diese virtuellen Rechner (VMs) könnt ihr nach belieben starten, stoppen und parallel oder einzeln laufen lassen.
Warum ist das praktisch? Projekte begrenzen oft die Zahl der WUs die man pro Rechner geschickt gekommen kann. Für das Projekt ist aber jede eurer VMs ein eigenständiger Rechner. Ihr könnt euch also z.B. 10 VMs auf eurem PC erstellen und das Projekt denkt ihr hättet 10 Rechner und schickt jeder VM die maximale Anzahl an WUs, weshalb ihr 10 mal so viel Bunkern könnt. In jeder der 10 VMs läuft ein eigenes Betriebssystem (meist Linux da kostenlos) mit eigener virtueller Festplatte und eigenem BOINC. Ihr könnt also auch wie in Schritt 3 beschrieben in jeder VM BOINC individuell den Internetzugriff erlauben oder verbieten.
So eine VM simuliert aber eben einen virtuellen Rechner und das kostet leider Rechenleistung die dann BOINC fehlt. Gerade bei langen Deadlines lohnt das aber trotzdem, da der PC eben die ganze Zeit über rechnen kann und einem nie die WUs ausgehen.

So läuft das mit der VM ab:

1.) VB Instalation
Als erstes muss man Virtualbox selbst und die Gasterweiterungen herunterladen und installieren.
Hat man das getan startet man den PC neu und öffnet Virtualbox (VB).

2.) VT-x / AMD-V freischalten
Beim Neustarten des Rechners öffnet man das BIOS (guckt was für eine Tastenkombination der PC beim booten dafür vorgibt. Meist die "ENTF"-Taste oder eine der F1- bis F12-Tasten) und sucht dort nach einer Option um die Unterstützung für Virtuelle Maschinen hardwareseitig freizuschalten. Bei Intel-CPUs heißt das Feature "VT-x" und bei AMD-CPUs "AMD-V".

3.) Einrichten einer VM
Die VMs muss man sich selbst erstellen. Also entweder man läd sich ein fertiges VM-Image herunter (da erstelle ich uns noch eines) oder man setzt sich selbst eine VM auf, wo man sein Betriebssystem der Wahl und BOINC installiert.

4.) WUs holen
Hat man seine Blanko-VM erstellt, wo alles fertig eingerichtet ist, so klont man sich genügend viele davon, um für die Bunkerzeit durchcrunchen zu können. Sagen wir mal wir klonen uns 5 VMs mit je 4 virtuellen CPU-Kernen auf unserem echten Quadcore-PC. Wenn die Deadlines bei beispielsweise 10 Tagen liegen, so starten wir 10 Tage vor dem Wettkampfstart unsere 5 VMs und erlauben BOINC in diesen VMs den Netzwerkzugriff. Diese 5 BOINCs holen sich nun jeweils die maximale Anzahl an WUs ab und fangen an diese zu berechnen. Bei allen 5 VMs verbieten wir nun wie in Methode 3 beschrieben den Netzwerkzugriff, damit die VMs keine WUs mehr hochladen können.

5.) Eine VM nach der anderen fertig rechnen lassen
Wenn wir 5 VMs mit je 4 virtuellen Kernen haben aber unser echter PC nur eine Quadcore-CPU hat, so würde es keinen Sinn machen mehr wie eine VM zur Zeit laufen zu lassen, da das BOINC in den VMs nur sehr langsam rechnen würde. Wir wollen da also immer nur eine VM zur Zeit am crunchen und die anderen VMs gestoppt haben.
Wir stoppen also VM Nr. 2-5 sodass nur noch noch VM Nr. 1 am crunchen ist. VM Nr. 1 rechnet jetzt solange bis alle WUs abgearbeitet sind. Ist VM Nr. 1 fertig stoppen wir diese und starten dafür VM Nr. 2. Das wird beliebig weiter gemacht bis entweder der Wettbewerbstart erreicht ist oder uns die VMs ausgehen.
Sollten uns die VMs ausgehen, so klonen wir einfach eine weitere unserer Blanko-VMs und lassen diese neue WUs holen, was ja geht, da wir dem BOINC in der neuen VM den Netzwerkzugriff erlauben können, während dieser den BOINCs in den anderen VMs weiterhin untersagt ist. Besser ist es aber gleich von Anfang an genug VMs zu erstellen, damit die Deadlines nicht nach dem Wettbewerbsende liegen.

6.) WUs hochladen
Ist der Wettbewerbsstart erreicht, so starten wir alle VMs und erlauben den BOINCs in diesen VMs wieder den Netzwerkzugriff, worauf hin alle VMs ihre fertigen WUs hochladen.

Methode 6 - Mehrere BOINCs ohne VMs
BOINC kann auch ohne VMs mehrfach auf einem PC gestartet werden. Dazu bietet BOINC per Komandozeile die Option "-allow_multiple_clients", wobei dann ein weiteres BOINC mit eigenem Projektordner gestartet wird.

1.) Vorbereitung
Zuerst muss man den Ordner herausfinden wo BOINC installiert ist. Bei mir ist das "c:\Program Files (x86)\boinc\". Dort liegt meine "boinc.exe" die ich per Commandokonsole ansprechen will.
Dann brauche ich je einen neuen Ordner für jede BOINC-Instanz. Dazu habe ich mir folgenden Ordner erstellt "c:\boinc\". In diesen Ordner erstelle ich mir 10 Unterordner die ich "01", "02" usw. bis "10" nenne, wenn ich 10 weitere Instanzen haben.

2.) Batch-Dateien erstellen
Um nun die BOINC-Instanzen zu starten erstelle ich mir ein Batch-Script. Dazu öffne ich Notepad und trage folgendes ein:

Code: Alles auswählen

cd "c:\Program Files (x86)\boinc"
boinc.exe -allow_multiple_clients -dir "c:\boinc\01" -gui_rpc_port 9001 -allow_remote_gui_rpc
pause
Den Ordner in der 1. Zeile müsst ihr an euren BOINC-Installationspfad anpassen.
Die Datei speichert man dann als "boinc01.bat" auf den Desktop oder in "c:\boinc\" und braucht sie nur noch nach dem PC-Neustart aufzurufen, um die jeweilige BOINC-Instanz zu starten. Wichtig beim Speichern mit Notepad ist "Alle Dateien" als Dateityp zu wählen, damit auch wirklich eine BAT-Datei und keine TXT-Datei gespeichert wird.
So eine BAT-Datei erstellt man sich nun für jede BOINC-Instanz, wobei man da immer den Ordnernamen und die Ports anpasst. Also Ordner "01" und Port "9001", Ordner "02" Port "9002", Ordner "03" und Port "9003" usw.

3.) Instanzen starten und anpassen
Wenn die leeren Ordner und die BAT-Dateien erstellt sind, dann ruft man alle BAT-Datein nacheinander einzeln auf und schließt sie mit der Tastenkombination STRG + C.
Nun in die jeweiligen Ordner wechseln wo BOINC neue Dateien angelegt haben sollte. Dort sollte auch eine "gui_rpc_auth.cfg" zu finden sein, wo das Passwort für den Fernzugriff drin steht. Falls nicht dann erstellt euch selbst eine solche Datei mit Notepad und schreibt dort euer gewünschtes Passwort hinein.
Wenn das getan ist wieder alle BOINC-Instanzen über Aufrufen der jeweiligen BAT-Dateien starten.

4.) BOINC-Instanzen konfigurieren
Nun gibt es 3 Wege wie man seine BOINC-Instanzen verwalten kann.

1.) Per Commandokonsole mit der boinccmd.exe
Die boinccmd.exe findet man im BOINC-Hauptverzeichnis. Ist aber ziemlich umständlich. Und eher für Leute die wissen was sie tun.

2.) Per BOINC-Manager
Den BOINC-Manager starten falls noch nicht offen, in die Erweiterte Ansicht wechseln und dort über "Extras -> Weiteren BOINC Manager starten" einen weiteres Managerfenster öffnen. Dort wird man nach dem Rechnernamen und dem Passwort gefragt. Als Rechnername trägt man "localhost:9001", "localhost:9002", "localhost:9003" usw. ein, je nachdem welche Instanz man verwalten möchte. Das Passwort ist das jeweilige Passwort was man in der "gui_rpc_auth.cfg" gespeichert hat. Nun sollte man die neue BOINC-Instanz ganz normal über den Manager verwalten können.

3.) Per BoincTasks
Anstatt für jede Instanz einen neuen BOINC Manager zu starten kann man auch einfach BoincTasks für alle Instanzen benutzen. BoincTasks kann man hier runterladen. Wenn man BoincTasks gestartet hat muss man in den Reiter "Computer" wechseln und dann oben auf "Computer -> Hinzufügen" klicken. Dort dann für die IP-Adresse "127.0.0.1" wählen, das Passwort aus der "gui_rpc_auth.cfg" eintragen und den jeweiligen Port der BOINC-Instanz (also 9001 im oberen Beispiel). Das dann für jede BOINC-Instanz machen.
Wer sich mit seinem Router auskennt, der kann sich auch eine DynDNS holen und per Portforwarding die Ports der Instanzen freigeben, damit man z.B. aus BoincTasks heraus die Boinc-Instanzen von entfernten Rechnern per Netzwerk oder Internet verwalten kann.

5.) Bunkern
Das Bunkern läuft jetzt eigentlich wie in Methode 5 beschrieben ab. Also alle Instanzen starten und den Netzwerkzugriff erlauben. Jede Instanz genug WUs holen lassen und dann für alle Instanzen den Netzwerkzugriff verbieten. Laufen lassen tut man dann immer nur eine Instanz zur Zeit bis diese keine WUs mehr hat, wo man dann die nächste Instanz startet und diese die WUs abarbeiten lässt.
Bild

Torbjörn Klatt
Vereinsmitglied
Vereinsmitglied
Beiträge: 1333
Registriert: 23.04.2007 21:18
Wohnort: Bad Homburg, HR, D, Earth, Sol, Milkyway
Kontaktdaten:

Re: Anleitung: Bunkern

#2 Ungelesener Beitrag von Torbjörn Klatt » 21.05.2011 09:26

Kurze Anmerkung: Bei vielen Projekten lässt sich der Fortschritt beim Pausieren nur speichern, wenn die Option "WU bei Pausieren in Speicher lassen" aktiviert ist. Bei einer größeren Masse an WUs, die pausiert sind, stoßen viele private Rechner dann jedoch an ihre RAM-Grenze und werden für die alltägliche Arbeit dann schnell unbenutzbar. Nur so als Anmerkung.
alias Bohne2k7
bevorzugte Projekte: WCG, RNA World, Yoyo
Profil (RKN-Wiki) | www: torbjoern-klatt.de | Twitter: @torbjoernklatt | Diaspora*: torbjoernk@diasp.de
Bild

Benutzeravatar
Norman
Klimawolke
Klimawolke
Beiträge: 2188
Registriert: 20.03.2003 14:34
Wohnort: Saarland
Kontaktdaten:

Re: Anleitung: Bunkern

#3 Ungelesener Beitrag von Norman » 21.05.2011 10:36

danke für den wertvollen beitrag ! :good:
der sollte angepinnt werden.

Dennis Kautz
Vereinsmitglied
Vereinsmitglied
Beiträge: 4742
Registriert: 22.02.2003 02:12
Kontaktdaten:

Re: Anleitung: Bunkern

#4 Ungelesener Beitrag von Dennis Kautz » 21.05.2011 11:13

Norman hat geschrieben:danke für den wertvollen beitrag ! :good:
der sollte angepinnt werden.
Erledigt. Würde sich auch gut im Wiki machen... ;)

BigBubi

Re: Anleitung: Bunkern

#5 Ungelesener Beitrag von BigBubi » 21.05.2011 11:28

Sehr schöne Anleitung!!! *verbeug*

Mit deinem Bunkerer-Sricpt werden die WU's bei mir nicht angehalten. Ich hab die zip noch mal geloadet und die Dateien ersetzt. Will bei mir nicht funzen.

Aber: BoincTask macht seine Arbeit mit der 10-Minuten-Regel. Nun werden die WU's angehalten.

Bisher hatte ich immer "manuell" gebunkert. Hab den Bunker mit 10 Tagen voll gemacht und einfach den Netzwerkzugriff abgeschaltet. So werden die WU's fertig gerechnet und warten mit dem Hochladen, dass ich den Netzwerkzugriff wieder erlaube.

BigBubi

Benutzeravatar
Michael H.W. Weber
Vereinsvorstand
Vereinsvorstand
Beiträge: 22414
Registriert: 07.01.2002 01:00
Wohnort: Marpurk
Kontaktdaten:

Re: Anleitung: Bunkern

#6 Ungelesener Beitrag von Michael H.W. Weber » 25.05.2011 15:44

Dennis, kannst Du den Beitrag bei Gelegenheit mal ins Wiki packen?

Michael.
Fördern, kooperieren und konstruieren statt fordern, konkurrieren und konsumieren.

http://signature.statseb.fr I: Kaputte Seite A
http://signature.statseb.fr II: Kaputte Seite B

Bild Bild Bild

duftkerze
Vereinsmitglied
Vereinsmitglied
Beiträge: 953
Registriert: 19.05.2002 15:45
Wohnort: Weiße Elster rechtes Ufer

Re: Anleitung: Bunkern

#7 Ungelesener Beitrag von duftkerze » 20.11.2011 16:10

funktioniert aber scheinbar nicht bei wcg..... will bunkern für christmas race...

kann mir nicht erklären warum es mal volle punkte dann mal nur die hälfte gibt.....
Man kann nicht alles auf einmal tun.Aber man kann alles auf einmal lassen.
Bild

Benutzeravatar
Grubix
Prozessor-Polier
Prozessor-Polier
Beiträge: 103
Registriert: 27.08.2008 09:03

Re: Anleitung: Bunkern

#8 Ungelesener Beitrag von Grubix » 14.05.2012 10:29

Vielen Dank für die Batch-Datei. :good:

In der "bunkerer_main.bat" müssen allerdings drei Zeilen geändert werden, damit das Skript funktioniert. Getestet mit dem aktuellen Client. Es haben sich Parameter geändert:

Zeile 3: @boinccmd.exe --get_results > bunkerer_results.txt
Änder in: @boinccmd.exe --get_tasks > bunkerer_results.txt

Zeile 45: @boinccmd.exe --result !project! !wuid! suspend
Ändern in: @boinccmd.exe --task !project! !wuid! suspend

Zeile 49: @boinccmd.exe --result !project! !wuid! suspend
Ändern in: @boinccmd.exe --task !project! !wuid! suspend

Viel Spaß, Grubix. :wave:

Benutzeravatar
Dunuin
Vereinsmitglied
Vereinsmitglied
Beiträge: 1743
Registriert: 23.03.2011 12:59
Wohnort: Hamburg

Re: Anleitung: Bunkern

#9 Ungelesener Beitrag von Dunuin » 06.11.2013 23:18

Methode 6 klappt übrigens wunderbar. Habe gerade 1705 WCG-WUs auf einem Quadcore, auf dem 6 Clients laufen. Client 1 darf immer online gehen und rechnen und ist nur bei GPU-Projekten angemeldet. So kann trotz Bunkern die GPU normal weiter arbeiten und sich ständig neuen WU-Nachschub holen.
Client 2 ist bei WCG angemeldet, hat Internetverbot und darf gerade rechnen.
Client 3 bis 6 sind bei WCG angemeldet, dürfen sich aktuell neue WUs holen aber nicht rechnen.

Sobald alles von Client 2 abgearbeitet ist bekommt Client 3 Internetverbot und erhält die Erlaubnis zum Rechnen usw.

Lässt sich alles bequem von BoincTasks (sogar über das Internet) aus überwachen und steuern.
Bild

Ich muss nur noch eine komfortable Lösung wegen WUProp finden. Man kann zwar bequem per BoincTasks den gesamten Internetverkehr für einen der Clients deaktivieren, damit keine Ergebnisse vorzeitig versendet werden, aber dann kann WUProp ja auch keine Berichte mehr liefern und die Rechenzeit während des Bunkerns wird einem für den Badge/SigPic nicht angerechnet.
Firewall und Hostsdatei für gezieltes aussperren von WCG lässt sich nicht gut per Remote lösen.
Bild

Benutzeravatar
maxamd400
Vereinsmitglied
Vereinsmitglied
Beiträge: 407
Registriert: 07.05.2003 21:48
Wohnort: Magdeburg

Re: Anleitung: Bunkern

#10 Ungelesener Beitrag von maxamd400 » 08.11.2013 18:32

Hi R-Team,

ich bin mal wieder der einzige, der Probleme hat um Bunkers zu erstellen.
Oder ist hier noch einer der sich nur nicht traut, sich zu melden ?

So, kommen wir zu der batch Datei
Allein daran hab ich mal wieder Stunden dran gesessen, den so wie es oben steht,
geht es nicht.
Ich kenn mich zwar ein wenig aus mit batch schreiben, aber eben nur wenig.

Das so zu schreiben
cd "c:\Program Files (x86)\boinc"
boinc.exe -allow_multiple_clients -dir "c:\boinc\01" -gui_rpc_port 9001 -allow_remote_gui_rpc
pause
funktioniet nicht.

Wenn dann sollte man es so schreiben

Code: Alles auswählen

"c:\Program Files\boinc\boinc.exe" -allow_multiple_clients -dir c:\boinc\01 -gui_rpc_port 9001 -allow_remote_gui_rpc
pause
Das ist für die 64bit Version.

mit "cd" direkt in den Ordner springen, geht bei mir nicht.
Ich hatte die ganze Zeit, Syntax Fehler, oder die Datei wurde nicht gefunden.
Durch das rumtesten, hatte zuvor einen Ordner erstellt der "Program" sich nannte
und dort BOINC hin kopiert. Und dort probierte ich es erstmal mit

Code: Alles auswählen

C:\Program\boinc\boinc.exe" -help
pause
Nu...
mit meiner umgeschriebenen batch hat er folgene Dateien in den Ordner C:\boinc\01
geschrieben

Code: Alles auswählen

Ordner "notices"
all_projects_list.xml
client_state.xml
client_state_prev.xml
daily_xfer_history.xml
gui_rpc_auth.cfg
time_stats_log
Die gui_rpc_auth.cfg hab ich angepasst und ein anderes Passwort eingetragen.

Nun starte ich Boinc und starte unter Extras einen Weiteren BOINC Manager.
Rechnername: localhost:9001
Passwort: das aus der cfg

Frage: woran seh ich nun, das er auch zu diesem Ordner verbunden hat ?
Trage ich ein falsches Passwort ein, hab ich dennoch eine Verbindung, wohin ?,
kein Ahnung.
Leider muss in beiden Fällen was nicht hinhauen, den ich kann in dem neuen
BOINC Manager kein Projekt hinzufügen und WUs holen, dieser meldet nur
"Wiederherstellung der Verbindung zu einem Client"

Und wo ist nun mein Fehler ?

MFG Thorsten
Bild

duftkerze
Vereinsmitglied
Vereinsmitglied
Beiträge: 953
Registriert: 19.05.2002 15:45
Wohnort: Weiße Elster rechtes Ufer

Re: Anleitung: Bunkern

#11 Ungelesener Beitrag von duftkerze » 08.11.2013 18:51

also bei mir funktioniert die anleitung wunderbar....

wenn die batch datei richtig geschrieben ist und gestartet wird sollte sich ein schwarzes kommandozeilen -fenster öffnen. dann startest du den boincmanger gibst die in der batch eingetragenen daten ein und verbindes dich...voila du hast verbindung zu dem 2. boinc ordner.hier geht dann wie gehabt weiter.

ne verbindung zur boinc.exe mit boincmgr bekomme ich allerdings nur mit der vollständigen ip-adresse

z.BSP. "192.168.x.x:9001" die version "localhost:9001" funktioniert bei mir allerdings nicht.
Man kann nicht alles auf einmal tun.Aber man kann alles auf einmal lassen.
Bild

Benutzeravatar
Dunuin
Vereinsmitglied
Vereinsmitglied
Beiträge: 1743
Registriert: 23.03.2011 12:59
Wohnort: Hamburg

Re: Anleitung: Bunkern

#12 Ungelesener Beitrag von Dunuin » 09.11.2013 15:05

Was sagt denn das schwarze CMD-Fenster? Eigentlich sollte man da sehen wie BOINC startet und dann rummeckert, dass da noch keine Projekte hinzugefügt wurden (weil es eben ein frisches neues BOINC ist).
Bild

Antworten

Zurück zu „Challenge / Race / Wettkampf“