# Empfehlung für verteiltes compilieren [solved]

## trikolon

Hallo alle,

ich habe einen Dualcore Desktop (64 bit gentoo - intel) und einen Quadcore Server (64 bit gentoo - amd) bei mir im Netzwerk stehen. Um das Bauen auf dem Desktop etwas zu beschleunigen möchte ich dan Server dazu mit einspannen. Soweit ich gesehen habe, würden dafür distcc und icecream in Frage kommen. Bei beiden muss wohl mtune und march auf nicht native gestellt werden. Kann mir jemand hierzu Empfelungen gebe, gerade was Compileroptimierungen für die jeweilige Hardware angeht?

Gruß BenLast edited by trikolon on Thu May 13, 2010 7:47 am; edited 1 time in total

----------

## moben

Ich glaube du hast vergessen die Hardware die du hast zu nennen   :Wink: 

Gruß auch Ben

----------

## Klaus Meier

mtune solltest du komplett entfernen. Und march musst du auf die CPU setzen, für die die Pakete gebaut werden sollen. Was das am besten sein sollte, kannst du hier nachsehen.

http://en.gentoo-wiki.com/wiki/Safe_Cflags/Intel

----------

## trikolon

 *Quote:*   

> Ich glaube du hast vergessen die Hardware die du hast zu nennen

 

das stimmt  :Smile: 

Desktop: Core2Duo E6600

Server: Athlon II X4 605e

Das mit mtune und march war mir soweit klar. was mich mehr interessiert sind die erzeugten sachen. wenn also der amd nun für den intel baut, kann er dann alle optimierungen mitnehmen oder wird der so erzeugte code eher "langsame" (mir ist klar, dass das eher theoretische fragen sind *g* )

Gruß

----------

## Klaus Meier

Dem Compiler ist das total egal, auf was für einer CPU er läuft. Er erzeugt Code für die CPU, die man ihm mit march angibt.

----------

## Evildad

Die Zeit die Du einsparen wirst wird nicht der Rede wert sein, dafür sind deine CPUs zu schnell.

Richtig gewinnen wirst Du nur, wenn Du einen langsamen Rechner hast, da der Overhead zu gross ist.

----------

## Tinitus

 *Evildad wrote:*   

> Die Zeit die Du einsparen wirst wird nicht der Rede wert sein, dafür sind deine CPUs zu schnell.
> 
> Richtig gewinnen wirst Du nur, wenn Du einen langsamen Rechner hast, da der Overhead zu gross ist.

 

Das kann ich jetzt hier nicht so stehen lassen.....Kommt auf die Pakete an, die man bauen will. Kernel oder Openoffice geht da schon ein wenig schneller. Allerdings sollten das Netzwerk, RAM und Festplatte auch mitspielen.

G. R.

----------

## trikolon

danke für die vielen tipps. netzwerk ist ein Gbit lan und Ram ist sind jeweils 4gb vorhanden. Festplatten passen auch. Die Idee war, dass gerade große Sachen wie zB gcc, kde, kernel einfach um einiges flotter zu bauen gehen. im moment tendiere ich zu icecream. oder hat jemand klare pros bzw contras für distcc oder icecream?

----------

## tazinblack

 *Evildad wrote:*   

> Die Zeit die Du einsparen wirst wird nicht der Rede wert sein, dafür sind deine CPUs zu schnell.
> 
> Richtig gewinnen wirst Du nur, wenn Du einen langsamen Rechner hast, da der Overhead zu gross ist.

 

Da ich grad was ähnliches vorhabe, häng ich mich mal hier mit dran, spart nen extra Thread.

Also bei mir sinds im Netz zwei Dualcore Athlons (jeweils als 64-Bit System) und die langsame Kiste ist ein Atom 330 und das soll auch 64 Bit werden.

Ich denke da machts Sinn mit dem distcc. Keine Ahnung, wie schnell man auf nem 330 Atom nen aktuellen Kernel baut, aber ich denke 

das wird wohl länger sein, auch wenns logisch 4 CPUs sind.

Kann da jemand Tipps geben zu?

----------

## tazinblack

Mal noch ein paar Verständnisfragen zum distcc:

Also wenn ich verschiedene Architekturen habe muss ich crosscompilieren. Brauche also auf jedem Rechner, der für die andere Architektur compilieren soll eine entsprechende Toolchain. Klar, wenn ich auf nem AMD64 für nen PPC was bauen will, seh ich das ein.

In der Doku hab ich gelesen, dass man schon eine Toolchain braucht, wenn man auf nem i686 für nen i586 bauen will. Aber ab wann muss ich jetzt crosscompilieren? Nur wenn in der /etc/make.conf die CHOST-Einstellung anders ist? Oder reicht schon, wenn die CFLAGS anders sind? Oder werden die CFLAGS vom Zielsystem mit an den entfernten Compiler gegeben?

Achso, und wie teste ich am besten, ob alles funktioniert?

Also in meinem konkreten Fall hab ich zwei Kisten mit jeweils nem Athlon X2 4850e und nem Athlon X2 BE-2400.

Darauf möchte ich gerne für nen Atom 330 kompilieren.

Die CHOST sind auf allen drei Kisten "x86_64-pc-linux-gnu".

Die CFLAGS sind auf den beiden Athlons "-O2 -pipe" und auf dem Atom ist "-march=core2 -O2 -pipe" eingestellt.

Muss ich da jetzt crosscompilieren oder nicht?

----------

## Genone

 *tazinblack wrote:*   

> Muss ich da jetzt crosscompilieren oder nicht?

 

Nein. Solange CHOST auf allen Rechnern gleich ist reicht die "normale" Toolchain.

----------

## tazinblack

 *Genone wrote:*   

>  *tazinblack wrote:*   Muss ich da jetzt crosscompilieren oder nicht? 
> 
> Nein. Solange CHOST auf allen Rechnern gleich ist reicht die "normale" Toolchain.

 

Danke für die Antwort. Habs eben eingerichtet und kompiliere jetzt auf fast allen CPUs im Haus.

Ist doch wesentlich schneller, als auf dem Atom *g*

----------

## trikolon

Ich habe den Thread auf solved gestellt, da ich nun icecream am Laufen habe und alles damit schnell, einfach und gut funktioniert. 

Danke für die Tipps!

Ben

----------

