PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Kompilieren dauert sehr lange. Zu lange?



moritzz
12.08.07, 18:13
Moin!
Ich habe hier ein IBM T60 stehen mit 3GB RAM und einem Core2Duo (1,83Ghz). Wenn ich mir einen neuen Kernel kompilieren will, dauert das fast genauso lange, wie auf meinem Desktop (XP2600, 512MB RAM). Beide brauchen etwa 15min für einen Kernel. Ich finde das verdammt lang, vor allem, wenn ich von Bekannten höre, dass ihre Systeme einen Kernel in 5min fertig machen. Ich habe schon einiges an Sachen rausgenommen, die nicht mitkompiliert werden müssen, aber das brachte kaum etwas. Grade sitze ich an einem 21er Kernel und es nervt mich mal wieder, dass es so lange dauert. Da dachte ich mir, dass ich doch mal nachfrage, woran das liegen kann.
Ich nutze Debian/testing und baue meine Kernel bisher mit make-kpkg.
Falls mehr Details gebraucht werden, bitte Bescheid sagen, dann poste ich sie.
Gruß
Moritz

zyrusthc
12.08.07, 18:20
Starte doch einfach mehrere Jobs wenn du einen DualCore Prozessor hast!
make -j 5

Greeez Oli

geronet
12.08.07, 18:21
Wieviel Bogomips haben beide Systeme (steht beim booten/dmesg da)?
Kompilierst du auch mit -j3 (Mehrprozessor)?

zyrusthc
12.08.07, 18:23
Wieviel Bogomips haben beide Systeme (steht beim booten/dmesg da)?
Oder per cat /proc/cpuinfo rausfinden!

Greeez Oli

moritzz
12.08.07, 18:26
Wie kann ich denn bei make-kpkg mehrere Jobs starten? Den Parameter j kennt er nicht. Alternativ könnte mir vllt auch jemand einen guten Link geben wo ich mir anschauen kann, wie ich den Spaß auch mit make machen kann :)

CPU-INFO:


MoLap:/usr/src# cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 15
model name : Intel(R) Core(TM)2 CPU T5600 @ 1.83GHz
stepping : 6
cpu MHz : 1333.000
cache size : 2048 KB
physical id : 0
siblings : 2
core id : 0
cpu cores : 2
fdiv_bug : no
hlt_bug : no
f00f_bug : no
coma_bug : no
fpu : yes
fpu_exception : yes
cpuid level : 10
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx lm constant_tsc pni monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr lahf_lm
bogomips : 3661.49
clflush size : 64

processor : 1
vendor_id : GenuineIntel
cpu family : 6
model : 15
model name : Intel(R) Core(TM)2 CPU T5600 @ 1.83GHz
stepping : 6
cpu MHz : 1333.000
cache size : 2048 KB
physical id : 0
siblings : 2
core id : 1
cpu cores : 2
fdiv_bug : no
hlt_bug : no
f00f_bug : no
coma_bug : no
fpu : yes
fpu_exception : yes
cpuid level : 10
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx lm constant_tsc pni monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr lahf_lm
bogomips : 3657.54
clflush size : 64

GoKi
12.08.07, 18:37
Wie kann ich denn bei make-kpkg mehrere Jobs starten?


CONCURRENCY_LEVEL=2 make-kpkg ...
Oder halt 3, je nachdem wie viele Jobs man möchte.

zyrusthc
12.08.07, 18:37
Wie kann ich denn bei make-kpkg mehrere Jobs starten? Den Parameter j kennt er nicht. Alternativ könnte mir vllt auch jemand einen guten Link geben wo ich mir anschauen kann, wie ich den Spaß auch mit make machen kann :)
Alternativ könntest du einen Blick in die Manpages werfen, den wenn es solch eine Option bei make-kpkg gibt wird diese dort mit augelistet!
Allerdings frage ich mich gerade wozu man genau make-kpkg beim kompilieren brauch?
Generell reicht doch der altbekannte dreisatz: make --> make modules_install --> make install


Greeez Oli

moritzz
12.08.07, 19:26
In den Manpages habe ich dazu nichts gefunden, ansonsten hätte ich nicht gefragt :)
Aber es ist gut zu wissen, dass der "Dreisatz" wohl auch geht. Allerdings baut der mir dann kein .deb Paket, oder?

@GoKi: Thx :)

fuffy
12.08.07, 20:20
Hi!


Allerdings frage ich mich gerade wozu man genau make-kpkg beim kompilieren brauch?
Um ein DEB-Paket zu erhalten, welches auch die für Debian-Kernel üblichen postinst-Skripte ausführt.


Generell reicht doch der altbekannte dreisatz: make --> make modules_install --> make install
Klar, nur ist das unsauber, der Kernel wird nicht automatisch ins GRUB-Menü eingetragen, eine eventuell benötigte InitRd muss noch von Hand erzeugt werden, usw.

Gruß
fuffy

zyrusthc
12.08.07, 20:23
@fuffy
Stimmt, mein Fehler.
Hatte vergessen das Debian ja Grub standartmässig als Bootloader verwendet.

Greeez Oli

moritzz
12.08.07, 20:54
Alles klar. Ich werde das auf jeden Fall mal probieren. Thx :)

edit: Habe es jetzt grade mal probiert und CONCURRENY_LEVEL=2 bringt leider gar nichts :(

moritzz
13.08.07, 15:16
Niemand sonst eine Idee?

marce
13.08.07, 16:32
Moin!
Ich habe hier ein IBM T60 stehen mit 3GB RAM und einem Core2Duo (1,83Ghz).


cpu MHz : 1333.000
da passt irgendwas nicht so recht zusammen. Läuft das Ding auf voller Leistung oder sind da irgendwelche Powersafer am Start?

moritzz
13.08.07, 17:43
Nee im dem Moment in dem ich die Ausgabe gemacht habe, lief er im "conservative"-Mode. Dann taktet er sich selbstständig. Kompiliert habe ich allerdings auf Performance und dann läuft er konstant auf Maximalleistung.

zyrusthc
13.08.07, 17:46
Liefere doch mal was fassbares!
Kompiliere mit vorangestellten time auf beiden Maschinen und poste das Ergebnis dann hier.


Greeez Oli

moritzz
19.08.07, 11:42
Was meinst du mit "vorangestellten time"?

geronet
19.08.07, 11:50
"time" vor den eigentlichen Befehl setzen.

caspartroy
19.08.07, 12:07
Du brauchst garantiert nur einen Bruchteil dessen, was kompiliert wird. Alles Unbenötigte zu finden dauert allerdings einige Zeit, macht aber einen großen Unterschied ;-)
Wahrscheinlich wird bei deinem Aufruf alles neu übersetzt, vielleicht gibt es eine Option, um das zu vermeiden? (so etwas wie "make clean" vorm kompilieren, bei einem simplen make-Aufruf werden nur die Änderungen neu kompiliert).

Beispiel: Ich kompiliere einen Kernel, hab ein Modul vergessen und kompiliere für das Modul den Kernel nochmal, dann dauert das gefühlt unter einer Minute.

bla!zilla
19.08.07, 13:45
Solche Zeiten lassen sich aber nicht mit etwas zuviel Kram im Kernel erklären.

tradiaz
19.08.07, 19:13
Also bei meinem 2GHz AthlonXP dauerte ein Kernel mit default Einstllung ne halbe Stunde.
Das kommt schon hin. Wenn man selbst kompiliert macht das meist nur Sinn, wenn man das Zeug vorher konfiguriert. Wenn du das machst geht's viel schneller.