Client state.xml

Aus Planet 3DNow! Distributed Computing Wiki
Zur Navigation springen Zur Suche springen

Im Abschnitt Boinc Scheduler wird u.a. auf die grundsätzliche Funktion der client_state.xml-Datei eingegangen.

An dieser Stelle greifen wir einige Zeilen dieser Datei auf, um deren Bedeutung zu erklären, und durch gezieltes Ändern der Einträge, Nutzen daraus zu ziehen.

Abgelegt ist die Datei unter Windows im Verzeichnis C:\ProgramData\BOINC\client_state.xml

Unter Linux liegt sie im Verzeichnis /var/lib/boinc-client/client_state.xml

Abhängig bei wievielen Projekten der Boinc-Manager angemeldet ist, ist auch der Umfang des Inhaltes. Das ist Wichtig zu beachten, damit auch im richtigen Abschnitt die gewünschte Änderung vorgenommen wird.

Änderungen an der Datei lassen sich nur bei beendetem Boinc-Manager vornehmen. Änderungen im laufenden Betrieb, lassen sich endweder nicht abspeichern, oder werden vom System wieder überschrieben.

Anfangen wollen wir mit zwei Einträgen, die gleich mal grundsätzlich immer geändert werden können.

<on_frac> und <active_frac>

Über die Einträge <on_frac> und <active_frac> weiß das Projekt, wie lange der Boinc-Client mit ihm bereits verbunden ist. Um so höher dieser Wert ist, um so schneller werden dem Client WUs zugewiesen. Der maximale Wert muß < 1 sein. Die beiden Zeilen befinden sich im Abschnitt <time_stats>. Als Beispiel:

<time_stats>
  <on_frac>0.99</on_frac>
  <active_frac>0.99</active_frac>
</time_stats>

<duration_correction_factor>

Beim nächsten Eintrag den wir verändern wollen, geht es um die vermutete Berechnungsdauer pro Workunit (WU). In Abhängigkeit der Berechnungsdauer pro WU, und dem eingestellten Wert im Boinc-Manger bezüglich der Arbeitszeit, für die wir WUs haben wollen, errechnet der Projektserver die Menge an WUs, die runtergeladen werden können. Auf dem Projektserver ist diese Berechnungszeit abgelegt, und bezieht sich in der Regel auf die Zeit, die der Projektserver benötigt hat. Dieser Wert unterscheidet sich natürlich vom eingenen System. Mit jeder gerechneten und zurück gesendeten WU, wird der Wert angeglichen, und es können bezogen auf die eingestellte Arbeitszeit, mehr WUs auf den eigenen Rechner runtergeladen werden. Um diesen Vorgang abzukürzen, gehen wir in der client_state.xml in den Projektabschnitt, deren Wert wir ändern wollen.

Im Beispielfall soll das der Projektabschnitt von Einstein@home sein:

<project>
   <master_url>http://einstein.phys.uwm.edu/</master_url>
   <project_name>Einstein@Home</project_name>
   ....
   <duration_correction_factor>0.282786</duration_correction_factor>
   ....
</project>

Hier ist bereits der tatsächliche Wert vorhanden. Bei der Neuanmeldung beim Projekt, steht hier eine Zahl < 0.999999. Der Wert oben steht für die Berechnungszeit einer CPU-WU. Der Wert für eine GPU-WU ist in der Regel < 0,010000.

Hochladen ohne Fertigmeldung

Anstatt sperren der IP bzw. des DNS-Namens via hosts-Einträge kann auch nur die Scheduler-URL gesperrt werden. Dies ist auch die einzige Lösung, das hochladen vom melden zu trennen, wenn das Projekt nur einen einzigen Server besitzt, der Scheduler also den gleichen DNS-Namen bzw. IP wie die Webseite des Projekts hat.

So kann das Hochladen ohne Fertigmeldung in der client state.xml eingerichtet werden:

In dieser Reihenfolge zum bunkern und hochladen ohne melden:

  1. mit WUs je Instanz vollladen
  2. BM bzw. Instanz beenden
  3. client_state.xml editieren und Wert von <scheduler_url> ändern auf eine nicht existente URL
  4. BM bzw. Instanz starten und rechnen lassen
1621414547470.png
1621414594879.png

Und in dieser Reihenfolge zum melden:

  1. BM bzw. Instanz beenden
  2. client_state.xml editieren und Wert von <scheduler_url> auf den Originalwert zurückändern
  3. BM bzw. Instanz starten und Projekt aktualisieren
1621427921183.png