BOINC Client-Konfiguration: Nur 1 Job pro Kern laden
- Michael H.W. Weber
- Vereinsvorstand
- Beiträge: 21995
- Registriert: 07.01.2002 01:00
- Wohnort: Marpurk
- Kontaktdaten:
BOINC Client-Konfiguration: Nur 1 Job pro Kern laden
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.
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

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


Re: BOINC Client-Konfiguration: Nur 1 Job pro Kern laden
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?
<app_config>
<project_max_concurrent>2</project_max_concurrent>
</app_config>
Evtl. behebt das das Problem?

- Michael H.W. Weber
- Vereinsvorstand
- Beiträge: 21995
- Registriert: 07.01.2002 01:00
- Wohnort: Marpurk
- Kontaktdaten:
Re: BOINC Client-Konfiguration: Nur 1 Job pro Kern laden
Habe ich erstellt.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?
Wird erkannt:
Code: Alles auswählen
03.01.2017 10:32:06 | PrimeGrid | Found app_config.xml

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

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


-
- Vereinsvorstand
- Beiträge: 1920
- Registriert: 23.02.2010 22:12
Re: BOINC Client-Konfiguration: Nur 1 Job pro Kern laden
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.
- Michael H.W. Weber
- Vereinsvorstand
- Beiträge: 21995
- Registriert: 07.01.2002 01:00
- Wohnort: Marpurk
- Kontaktdaten:
Re: BOINC Client-Konfiguration: Nur 1 Job pro Kern laden
Na, dann mal her mit einem neuen Optionsschalter:
<no_queue>1</no_queue>
Michael.
<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

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


-
- Vereinsvorstand
- Beiträge: 1920
- Registriert: 23.02.2010 22:12
Re: BOINC Client-Konfiguration: Nur 1 Job pro Kern laden
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.
- Michael H.W. Weber
- Vereinsvorstand
- Beiträge: 21995
- Registriert: 07.01.2002 01:00
- Wohnort: Marpurk
- Kontaktdaten:
Re: BOINC Client-Konfiguration: Nur 1 Job pro Kern laden
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.
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

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


-
- Vereinsvorstand
- Beiträge: 1920
- Registriert: 23.02.2010 22:12
Re: BOINC Client-Konfiguration: Nur 1 Job pro Kern laden
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.
- Michael H.W. Weber
- Vereinsvorstand
- Beiträge: 21995
- Registriert: 07.01.2002 01:00
- Wohnort: Marpurk
- Kontaktdaten:
Re: BOINC Client-Konfiguration: Nur 1 Job pro Kern laden
ChristianB hat geschrieben:Ich werde das aber mal als feature request eintragen.

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

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


Re: BOINC Client-Konfiguration: Nur 1 Job pro Kern laden
Gibt es doch schon ganz lange, heißt nur ganz anders.Michael H.W. Weber hat geschrieben:Na, dann mal her mit einem neuen Optionsschalter:
<no_queue>1</no_queue>
Michael.
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

Supporting BOINC, a great concept !