# Gentoo benutzt nur einen Core beim compilen

## TheJoker89

Hallihallo liebe community,

ich habe soeben auf meinem haupt system festgestellt, dass mein gentoo

immer nur einen von zwei cores benutzt, wenn ich pakete compile....

der einzige vorteil dabei wäre wohl, wenn ich zwei verschieden pakete compilen will

und das zur gleichen zeit (hab ich aber schon vor einigen jahren schlechte erfahrungen mit gemacht XD)

daher mache ich das auch nicht...

Gibt es nen grund dafür, dass gentoo (weiß nicht wie's bei anderen distri's so iss) es so handelt?

würde gerne beide cores beim compilen benutzen

(ich hab auch smp im kernel und sehe beide cores in der systemauslastung von gnome)

LG TheJoker89

----------

## bbgermany

Hi,

hast du folgenden Eintrag in deiner make.conf:

```

MAKEOPTS="-j3"

```

MfG. Stefan

----------

## TheJoker89

 *bbgermany wrote:*   

> Hi,
> 
> hast du folgenden Eintrag in deiner make.conf:
> 
> ```
> ...

 

hab sogar -j4 ^_^

EDIT: man sieht auch, dass sie sich beim compilen abwechseln (ab und zu)

z.b. wenn der eine compile vorgang mit gcc fertig ist und die nächste datei compiled wird

EDIT2: ahh btw ist ein Intel Pentium D 830  :Wink: 

----------

## furanku

Wie "siehst" Du das denn? Guck mal bei der Compilierung mit "top" mittles Taste "1"  die durchschnittliche CPU Auslastung pro Kern an. Die sollte sich auf beide einigermaßen geichmäßig verteilen. Nur weil Du nicht immer zwei gcc Prozesse siehst, heißt das nicht, daß nicht beide Kernel benutzt werden. Assemblieren, linken, rekursive Makeaufrufe, shell skripte und wartezeiten auf die Festplatte gehören auch dazu --- und der Rest des Systems soll ja auch weiterlaufen. Da ist es schwer mit top oder anderen tools, welches alle paar Sekunden einen Snapshot der Prozesstabelle anzeigt, die Übersicht zu behalten.

Außerdem: So einfach sehen welcher Prozess auf welchen Kern läuft kann man AFAIK nicht. Du kannst allerdings die CPU Affinität der Prozesse beeinflussen, siehe z.B. diesen Linux Journal Artikel. Auf einem normalen Desktop System sollte man da allerdings die Finger davon lassen, damit hebelt man das SMP ja schleißlich wieder aus.

----------

## TheJoker89

also ich sehe es mittels GKrellM UND wenn man beide anzeigen jeweils übereinander legen würde (das eine natürlich andersrum),

dann sieht man, dass die sich exakt ausgleichen...

somit liegt es nicht an wartezeiten....

es wird einfach nur 50% benutzt und der rest geht flöten...ähnlich wie bei windows  :Razz: 

EDIT: top bestätigt das ganze, wenn man die idle zeiten addiert kommt immer 99,9 - 100% raus  :Wink: 

----------

## Necoro

Es kommt darauf an, was du compilierst. Einige (viele) Pakete setzen automatisch "-j1".

----------

## TheJoker89

 *Necoro wrote:*   

> Es kommt darauf an, was du compilierst. Einige (viele) Pakete setzen automatisch "-j1".

 

im moment ists glibc XD und danke für die antwort...also hat man mit dual core beim compilen nicht wirklich n vorteil?

----------

## furanku

 *TheJoker89 wrote:*   

> also ich sehe es mittels GKrellM UND wenn man beide anzeigen jeweils übereinander legen würde (das eine natürlich andersrum),
> 
> dann sieht man, dass die sich exakt ausgleichen...
> 
> somit liegt es nicht an wartezeiten....
> ...

 

Das ist komisch. Auch im "Leerlaufbetrieb"? Da sollten sich die "idle" Prozentangaben zu fast 200% addieren. Ansosnten sieht auf meinem AMDx2 System top während eines Comilierlaufs (mit PORTAGE_NICENESS=15 und MAKEOPTS="-j3" in /etc/make.conf) eher so aus:

```

Cpu0  :  3.3%us, 33.1%sy, 61.9%ni,  0.7%id,  0.0%wa,  0.7%hi,  0.3%si,  0.0%st

Cpu1  :  4.7%us, 34.2%sy, 59.5%ni,  1.7%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st

Mem:   1026572k total,   992732k used,    33840k free,    22904k buffers

Swap:  4200988k total,   590848k used,  3610140k free,   198532k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND

10505 root      39  15 22492  14m 4328 R    9  1.5   0:00.26 cc1

 5269 root      15   0  276m 123m 2180 R    8 12.3  29:19.74 X

10510 root      39  15 19000  11m 3716 R    4  1.2   0:00.11 cc1

 9802 root      35  15  8828 3068 1180 S    2  0.3   0:00.05 sh

10163 root      32  15  8828 3064 1180 S    2  0.3   0:00.05 sh

...

```

EDIT: Ja, manche (aber AFAIK nicht sonderlich viele) setzen -j1. Dann hat man natürlich keinen großen Vorteil (einen kleinen immer noch, da sich die restlichen Prozesse ja die Prozessorkerne teilen). Das liegt daran, daß make die Abhängigkeiten nicht immer vollkommen auflösen kann, z.B. wenn Unterverzeichnisse beim Compilieren erst erstellt werden, oder externe binärdatein im Erstellungsprozess eine Rolle spielen. Diese Pakete sind allerdings in der Minderzahl und ein Blick ins ebuild sollte helfen.

----------

## TheJoker89

im idle hab ich natürlich 199-200%  :Wink: 

ist ja logo dachte ich, sry falls das unverständlich war

vllt sollte ich auch mal die portage niceness setzen...

andererseitz unterscheiden sich amd und intel ja auch im aufbau der prozessoren

und somit auch, wie sie arbeiten...

----------

## Keruskerfuerst

Dann füge mal zu /etc/make.conf

FORKS="2"

hinzu.

----------

## TheJoker89

habe grade beide einträge vorgenommen und leider noch nicht testen können, allerdings weiß ich, dass es an portage oder gcc liegen muss,

denn ich erstelle grade ein squash image und dabei wurden beide kerne voll ausgelastet  :Very Happy: 

Forks="2" scheints echt gebracht zu haben, danke @ all  :Very Happy: 

----------

