2008-08-29 10 views
0

Ich arbeite an einem System mit vier logischen CPS (zwei Dual-Core-CPUs, wenn es darauf ankommt). Ich verwende make, um zwölf trivial parallelisierbare Tasks parallel zu machen und es von cron aus zu tun.Probleme mit parallelen machen nicht immer einen anderen Job, wenn man fertig ist

Der Aufruf sieht so aus:

make -k -j 4 -l 3.99 -C [dir] [12 targets] 

Die Mühe, die ich in ist renne, dass manchmal ein Job beenden, sondern die nächste wird nicht einmal beim Start wenn es nicht durch die durchschnittliche Belastung sollte gestoppt werden Begrenzer. Jedes Ziel dauert etwa vier Stunden und ich frage mich, ob dies ein Teil des Problems sein könnte.

Edit: Manchmal schlägt ein Ziel fehl, aber ich benutze die Option -k, um den Rest der make noch laufen zu lassen. Ich habe keine Korrelation festgestellt, dass Jobs scheitern und der nächste Job nicht startet.

Antwort

0

Stimmt das, dass eines der Ziele versagt? Wenn dies der Fall ist, wird die Marke nach Abschluss der laufenden Jobs gestoppt. Sie können -k verwenden, um zu sagen, dass es fortgesetzt werden soll, selbst wenn ein Fehler auftritt.

1

Ich würde die ‚-l‘ Drop

Wenn alles, was Sie planen die das System zu betreiben ist dieser Build Ich denke, die -j 4 tut, was Sie wollen.

Basierend auf meinen Speicher, wenn Sie etwas anderes läuft (crond?) Haben schieben das kann, 4. die durchschnittliche Belastung über

GNU make ref

0

@BCS

Ich bin 99,9% sicher dass das -l nicht das Problem verursacht, weil ich den Lastdurchschnitt auf der Maschine beobachten kann und es auf ungefähr drei und manchmal so niedrig wie eins (!) abfällt, ohne den nächsten Job zu starten.