staging.inyokaproject.org

Kompilieren von Pakten: Multithreading?

Status: Gelöst | Ubuntu-Version: Nicht spezifiziert
Antworten |

dieKleineMaus

Avatar von dieKleineMaus

Anmeldungsdatum:
24. Februar 2006

Beiträge: 238

Wie schon der Titel sagt, geht es mir um die Frage warum nicht, oder ob Multithreading bei dem Übersetzen von Pakten zum Einsatz kommt. Ich habe die letzten fünf Tage damit verbracht den aktuellsten mplayer, mencoder, ffmpeg, x264, theora und vp8 zu kompilieren.

Ihr könnt euch bestimmt vorstellen, dass ich dabei beinahe wahnsinnig geworden war. Das schlimme dran, war nicht die nervigen Abhängigkeitsproblematik der einzelnen Pakete... Sondern der Umstand das beim kompilieren nur 50% also nur 1 /2 core für das kompilieren ausgelastet wurde.

Wie kommt das?
Wie kann ich nachhelfen das beide Cores genutzt werden?

Ahja ich habe einen: Core 2 Duo CPU T5670 @ 1.80GHz Prozessor

Grüße
Susanne

axt

Anmeldungsdatum:
22. November 2006

Beiträge: 34254

dieKleineMaus schrieb:

Wie kann ich nachhelfen das beide Cores genutzt werden?

1
make -j2

Freilich kann sonstiges Arbeiten am Rechner dann zäh werden, wenn Du alle Kerne zuweist.

dieKleineMaus

(Themenstarter)
Avatar von dieKleineMaus

Anmeldungsdatum:
24. Februar 2006

Beiträge: 238

Moin axt,

danke für den Hinweis, muss ich bei der nächsten Gelegenheit ausprobieren. Naja das zähe Arbeiten nehme ich in kauf, dann wird derweil eben Kaffee getrunken, oder ich betätige mich in häuslichen Tätigkeit, wie etwa Plätzchen oder Kuchen backen.

Wie viele Kerne kann man den maximal zuweisen, oder ist das unlimitiert? Ich bekomme in einer Woche den Bulldozer mit acht Kernen. Das wird ein Spaß, falls alle acht Kerne voll ausgenutzt werden.

Liebe Grüße Susanne

axt

Anmeldungsdatum:
22. November 2006

Beiträge: 34254

dieKleineMaus schrieb:

Wie viele Kerne kann man den maximal zuweisen

Die, die Du hast.

falls alle acht Kerne voll ausgenutzt werden.

Weshalb sollten sie nicht?

dieKleineMaus

(Themenstarter)
Avatar von dieKleineMaus

Anmeldungsdatum:
24. Februar 2006

Beiträge: 238

Gute Frage; Warum eigentlich auch nicht!?

Ja gut ich bin etwas zu sehr von meiner Arbeit geschädigt, ... Bei uns auf Arbeit weigern sich alle Kollegen, bis auf einen der unser Netzwerktechniker ist, Linux anzunehmen. Und bekanntermaßen gibt es nur wenige Programme die unter Windoof alle Kerne effektiv ausnutzen können.

Offtopic: Ich mache drei kreuze wenn ich meine Ausbildung fertig habe. Dann suche ich mir das erstbeste Unternehmen, Hauptsache weg von Windows. Ist nervig, zu Windows ist bei uns auch noch Apple dazu gekommenen. Total Wahnsinn, ... "wie ging das den nochmal bei Mac, ah und wie war das bei Windows..." *pfui*

dirkolus

Anmeldungsdatum:
17. Mai 2011

Beiträge: 1887

axt schrieb:

dieKleineMaus schrieb:

Wie viele Kerne kann man den maximal zuweisen

Die, die Du hast.

falls alle acht Kerne voll ausgenutzt werden.

Weshalb sollten sie nicht?

Ich kenne es aus der einen oder anderen Installation folgendermaßen: auf einem Server mit n-Kernen werden für die rechenintensiven Rechenjobs n-1 Kerne reserviert. Damit bleibt ein Kern übrig, der sich um die Betriebssystem-Aufgaben kümmern kann, also zusätzliche Programme, Verwaltungsaufgaben etc. Das ist förderlich für die Interaktion (bei 'nem 8-Core lohnt sich das).

dieKleineMaus schrieb:

Offtopic: Ich mache drei kreuze wenn ich meine Ausbildung fertig habe. Dann suche ich mir das erstbeste Unternehmen, Hauptsache weg von Windows. Ist nervig, zu Windows ist bei uns auch noch Apple dazu gekommenen. Total Wahnsinn, ... "wie ging das den nochmal bei Mac, ah und wie war das bei Windows..." *pfui*

Von der Firma, die nur Linux einsetzt, träume ich auch schon länger. Aber andererseits macht Dich das zu was besonderem: Mehrere Plattformen zu kennen.

Dirk

axt

Anmeldungsdatum:
22. November 2006

Beiträge: 34254

dirkolus, mir ist nicht klar, weshalb Du mich quotest. dieKleineMaus hat nach den maximal zuweisbaren Cores gefragt. Daß ich wenigstens einen übriglassen würde, habe ich bereits gesagt. Wenn sie dann damit experimentiert, wird sie das auch merken.

dieKleineMaus

(Themenstarter)
Avatar von dieKleineMaus

Anmeldungsdatum:
24. Februar 2006

Beiträge: 238

Moin dirkolus,

danke dir für die Hintergrundinfo, ist interessant nebenher zu wissen. Hatte leider bisher nicht die Zeit mich tiefer mit Multithreading zu beschäftigen, steht aber zumindest auf meiner "TO-Do-List".

Ich träume auch von einem Unternehmen wo ich weg von Windows bin. Sich in Windows auskennen ist nun keine allzu große Kunst, allerdings ist es bei uns immer wieder das selbe Schema. Zurzeit darf ich halt beschädigte Windows-Systeme reparieren. Mehr ist es nicht.

Es nimmt die meiste Zeit ein. Da bleiben so Sachen wie sich tiefer-greifend mit Multithreading und Netzwerktechnik beschäftigen, brachliegen. Und das nervt und als wenn dies nicht genug ist, kommt noch Mac dazu. Wobei ich feststellen musste das ein MacOs unter der Haube nicht so weit fern von einem Linux ist.

Ich lasse mal deine Aussage stehen, dass es was besonderes ist, sich mit mehrere Plattformen aus zu kennen. Allerdings, nichts ganzes und nichts halbes, ist so eine Sache! Führt letztlich auf ein Halbwissen raus, was allerdings schnell gefährlich werden kann.

Liebe Grüße
Susi

Antiqua Team-Icon

Avatar von Antiqua

Anmeldungsdatum:
30. Dezember 2008

Beiträge: 4532

Ich kompilier mein Gentoo-Gedöns immer mit make -j3 auf einem Dualcore. Bei einem 8-Kerner würde ich make -j9 machen. Also immer -j(Kerne+1). Das System ist dabei noch flüssig bedienbar, also keine groben Hänger spürbar.

axt

Anmeldungsdatum:
22. November 2006

Beiträge: 34254

Antiqua schrieb:

Also immer -j(Kerne+1).

Aus welchem Grund?

Antiqua Team-Icon

Avatar von Antiqua

Anmeldungsdatum:
30. Dezember 2008

Beiträge: 4532

axt schrieb:

Aus welchem Grund?

  1. Weil es funktioniert.

  2. Weils schneller ist.

  3. Weils damals so im Gentoo-Handbuch gestanden hat.

  4. Weil selbst bei -j(Kerne+1) immer noch Wartezeit frei ist.

  5. Weil man durchaus auch -j(Kerne*2) nehmen kann, ob das allerdings die Kompilierzeit nochmal massiv beschleunigt müsste man mal Benchmarken.

Irgendwo hab ich mal einen Benchmark gesehen, wo einer ffmpeg auf einem Phenom Quadcore compiliert hat, da war -j5 eine halbe Minute schneller als -j4, ein -j8 war nochmal eine viertel Minute schneller und ab -j9 wurd es wieder leicht langsamer (vergl. mit -j8). Und -j3 war da gar nicht dabei, aber ich vermute das wäre langsamer als -j4 (auf der genanten CPU).

-j(Kerne+1) ist mir persönlich schnell genug und das System bleibt gefühlt unbeeinflusst, was mir wichtig ist und deshalb nehm ich das. Die genaue technische Argumentation wäre auch für mich Interessant 😎

dieKleineMaus

(Themenstarter)
Avatar von dieKleineMaus

Anmeldungsdatum:
24. Februar 2006

Beiträge: 238

Also ich schließe mich Antiqua an,

ich würde gerne auch zu dem Thema -j gerne die technische Argumentation erfahren. Sofern hier wer da ist, der den technischen Hintergrund kennt, so würde ich mich über Informationen freuen.

Grüße Susanne

mickydoutza

Avatar von mickydoutza

Anmeldungsdatum:
31. Dezember 2010

Beiträge: 2185

dieKleineMaus schrieb:

ich würde gerne auch zu dem Thema -j gerne die technische Argumentation erfahren.

Evtl. hilft das hier (5.4 Parallel Execution).

dieKleineMaus

(Themenstarter)
Avatar von dieKleineMaus

Anmeldungsdatum:
24. Februar 2006

Beiträge: 238

Abend mickydoutza,

danke dir für den Link habe den Inhalt erstmal grob überflogen, sieht sehr interessant aus. Man kann also neben -j mit --max-load arbeiten. Letzteres klingt viel interessanter, als --jobs. Muss ich mal gleich bei Gelegenheit ausprobieren.

Grüße Susanne

Antworten |