BOINC Client-Konfiguration: Nur 1 Job pro Kern laden

Grid-Computing, technische Entwicklung von Distributed Computing...
Nachricht
Autor
Benutzeravatar
Michael H.W. Weber
Vereinsvorstand
Vereinsvorstand
Beiträge: 20222
Registriert: 07.01.2002 01:00
Wohnort: Marpurk
Kontaktdaten:

BOINC Client-Konfiguration: Nur 1 Job pro Kern laden

#1 Ungelesener Beitrag von Michael H.W. Weber » 02.01.2017 12:06

Ich würde gern immer nur dann einen neuen Job nachladen, wenn die gerade bearbeiteten abgearbeitet sind.

Stellt man im BOINC Manager den Puffer bei beiden Einstellungen auf Null, so gibt es Projekte, die dennoch WUs auf Halde ziehen. Dazu gehört beispielsweise Milkyway (GPU).

Hinzu kommt ein Problem, dass mit den individuellen Einstellungen und der Zahl an GPUs zu tun hat:
Wenn ich 2 GPUs in einem i5-Quadcore betreibe und Einstein@home NUR auf den GPUs und Primegrid (PPS MEGA) NUR auf den CPUs laufen lassen möchte, passiert folgendes: Je eine Einstein WU benötigt neben einer GPU noch einen zusätzlichen CPU Kern. Lässt man die CPU "usage" auf 100% kann man noch zwei CPU WUs neben den Einstein-GPUs rechnen. Primegrid zieht nun aber 4 WUs, also entsprechend für die auf 100% stehende CPU "Usage".
Das hat zur Folge, dass die Primegrid WUs eigentlich immer zu spät abgeliefert werden, da sie doppelt so lange auf der Maschine abgammeln, als sie müßten (1x Laufzeit der eigenen Berechnung plus Laufzeit der Berechung der Vorgänger-WU, während die WU warten muss).

Ich habe keine Möglichkeit gefunden, dies so zu konfigurieren, dass Primegrid nur WUs zieht, wenn auch Kerne frei sind.
Hat da jemand eine Lösung?

Man kann <fetch_minimal_work>0</fetch_minimal_work> auf 1 setzen, dann rechnet aber nur noch eine Primegrid WU anstelle der möglichen zwei und man verschwendet Rechenressourcen.

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

JagDoc
Vereinsmitglied
Vereinsmitglied
Beiträge: 226
Registriert: 03.12.2011 12:05

Re: BOINC Client-Konfiguration: Nur 1 Job pro Kern laden

#2 Ungelesener Beitrag von JagDoc » 02.01.2017 14:17

Versuch mal im Projektordner eine app_config.xml mit:

<app_config>
<project_max_concurrent>2</project_max_concurrent>
</app_config>

Evtl. behebt das das Problem?
Bild

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

Re: BOINC Client-Konfiguration: Nur 1 Job pro Kern laden

#3 Ungelesener Beitrag von Michael H.W. Weber » 03.01.2017 10:39

JagDoc hat geschrieben:Versuch mal im Projektordner eine app_config.xml mit:

<app_config>
<project_max_concurrent>2</project_max_concurrent>
</app_config>

Evtl. behebt das das Problem?
Habe ich erstellt.
Wird erkannt:

Code: Alles auswählen

03.01.2017 10:32:06 | PrimeGrid | Found app_config.xml
Primegrid lädt dennoch mehr als nur 2 WUs. :roll:

Michael.

[edit]: Was aber passiert ist, dass der Rechner nur noch zwei gleichzeitig berechnet - auch dann, wenn mehr als 2 Kerne frei sind. Mir geht es aber um das Unterbinden des übermäßigen Nachladens von WUs.
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

ChristianB
Vereinsvorstand
Vereinsvorstand
Beiträge: 1914
Registriert: 23.02.2010 22:12

Re: BOINC Client-Konfiguration: Nur 1 Job pro Kern laden

#4 Ungelesener Beitrag von ChristianB » 03.01.2017 11:15

Das hat letztens auch jemand im BOINC dev Forum gefragt. Die Antwort ist aber: es geht nicht. "fetch_minimal_work" bedeutet: lade einmalig Arbeit für alle Ressourcen herunter und dann nichts mehr. Die Einstellung ist nur mit der Option "exit_when_idle" sinnvoll und bewirkt das der Client sich beendet wenn die Arbeit erledigt ist. Beim nächsten start wird dann wieder nur die minimale Arbeit geladen und so weiter. Gedacht ist das für HPC Systeme wo BOINC als Lückenfüller eingesetzt wird. Da will man immer nur ein Arbeitspaket rechnen und dann den Kern wieder für andere Arbeit frei geben. Du könntest das mit einem cronjob verbinden der alle paar Minuten prüft ob der Client noch läuft und den sofort neu startet wenn nicht. Das hätte auch den Effekt das du immer nur genau die Anzahl Aufgaben hast wie CPU Kerne vorausgesetzt das Projekt kann dir so viele zur Verfügung stellen. Wenn nicht läuft ein Teil idle bis zum nächsten Neustart.

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

Re: BOINC Client-Konfiguration: Nur 1 Job pro Kern laden

#5 Ungelesener Beitrag von Michael H.W. Weber » 03.01.2017 13:59

Na, dann mal her mit einem neuen Optionsschalter:

<no_queue>1</no_queue>

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

ChristianB
Vereinsvorstand
Vereinsvorstand
Beiträge: 1914
Registriert: 23.02.2010 22:12

Re: BOINC Client-Konfiguration: Nur 1 Job pro Kern laden

#6 Ungelesener Beitrag von ChristianB » 03.01.2017 15:17

Wäre schön aber du willst das ja sicherlich auch nur pro Projekt einstellen können oder? Wo soll denn diese Einstellung dann hingepackt werden? Wo sollte das in der GUI auftauchen? Ich habe mir schon vor langer Zeit geschworen keine Option in einem Textfile hinzuzufügen ohne auch eine GUI Möglichkeit dafür vorzusehen.

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

Re: BOINC Client-Konfiguration: Nur 1 Job pro Kern laden

#7 Ungelesener Beitrag von Michael H.W. Weber » 04.01.2017 09:22

Das muss nicht pro Projekt separat einstellbar sein.
Ich wundere mich sowieso, wieso es diese essentielle Option nicht gibt: Man möchte doch gern Dinge neu finden und erst in zweiter Linie reproduzieren.
Und natürlich könnte man in der GUI bei den Berechnungseinstellungen eine entsprechende Checkbox einbauen, wenn man es nicht in die cc_config.xml integrieren möchte.

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

ChristianB
Vereinsvorstand
Vereinsvorstand
Beiträge: 1914
Registriert: 23.02.2010 22:12

Re: BOINC Client-Konfiguration: Nur 1 Job pro Kern laden

#8 Ungelesener Beitrag von ChristianB » 04.01.2017 14:26

Die Option ist schön. Bisher hat dies aber tatsächlich noch niemand gewollt. Die Option ist auch für HPC Nutzer sehr interessant. Ob das so einfach geht ist aber fraglich weil der Client ja nicht sagt "Projekt gib mir N Aufgaben" sondern die Anfrage lautet: "Projekt gib mir so viele Aufgaben das ich X sekunden beschäftigt bin". Wenn du nur 1 Aufgabe pro Kern haben willst muss das extra ausgehandelt werden, also eine Client und eine Serveränderung. Ich werde das aber mal als feature request eintragen.

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

Re: BOINC Client-Konfiguration: Nur 1 Job pro Kern laden

#9 Ungelesener Beitrag von Michael H.W. Weber » 04.01.2017 18:05

ChristianB hat geschrieben:Ich werde das aber mal als feature request eintragen.
:good:

Was auf Clientseite zu ermitteln ist, um das umzusetzen:

1. Feststellung der für BOINC nutzbaren Devices (schon implementiert: jede GPU ist eine Device und jede CPU ist eine Device)
2. Feststellung der pro CPU Device vorhandenen Kerne.
3. Feststellung des Anteils der für BOLINC zu nutzenden CPU-Kerne von den physikalisch insgesamt vorhandenen CPU-Kernen (ist in den Berechnungseinstellungen als Prozentanteil direkt entnehmbar).
4. Feststelung der Anzahl der für GPU-Tasks reservierten CPU-Kerne,
5. Laden von GPU WUs (1 WU pro GPU-Device).
6. Zahl der zu ladenden CPU-WUs = (Zahl der physikalischen CPU-Kerne) - (Zahl der von GPU WUs reservierten CPU-Kerne) - (Zahl der nicht für BOINC erlaubten CPU-Kerne).

Eine zu bedenkende Anpassung wäre noch der Fall, dass Leute mehr als eine WU pro GPU-Device berechnen wollen. Da wäre dann der pro WU zu reservierende CPU-Kernanteil hochzurechnen. Diese Spezailanpassung kann man aber auch erstmal weglassen.

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

Benutzeravatar
Yeti
WU-Schieber
WU-Schieber
Beiträge: 1191
Registriert: 01.04.2008 21:15
Kontaktdaten:

Re: BOINC Client-Konfiguration: Nur 1 Job pro Kern laden

#10 Ungelesener Beitrag von Yeti » 21.02.2019 18:07

Michael H.W. Weber hat geschrieben:Na, dann mal her mit einem neuen Optionsschalter:

<no_queue>1</no_queue>

Michael.
Gibt es doch schon ganz lange, heißt nur ganz anders.

Setze den Resource-Share des Projektes auf 0 und schon werden nur für freie Cores WUs geladen.

Wenn du alle Projekte auf ResourceShare 0 setzt, hast du einen wahnsinnig schlanken Client, der eigentlich immer genau so viele WUs hat wie Kerne zum Rechnen.

Allein Multicore-WUs bereiten diesem System Probleme
Bild

Supporting BOINC, a great concept !

Antworten

Zurück zu „Hintergrundinfos zu Verteiltem Rechnen“