Archiv verlassen und diese Seite im Standarddesign anzeigen : Kompilieren: Nur 1 Kern ausgelastet?
Ich habe gerade eben auf meinem neuen Dualcoresystem einen neuen Kernel übersetzt und mittels einem "watch -n 1 cat /proc/cpuinfo" festgestellt, dass die beiden Kerne scheinbar abwechselnd ausgelastet sind - einmal ist der erste auf 2000 MHz getaktet, der andere auf 800 MHz und kurz darauf umgekehrt - beide zusammen sind nie auf 2000 MHz.
Meine Vermutung: Mein gcc ist auf Singlecore eingestellt und nutzt immer nur einen Kern.
Unter Gentoo gibt es die /etc/make.conf wo man einfach ein -j3 als MAKEOPTS angeben würde, allerdings nutze ich Debian Lenny/Sid und würde auch gerne dabei bleiben - gibt es hier etwas vergleichbares bzw was kann ich tun damit der gcc beide Kerne gleichzeitig nutzt??
Shutdown
PS: Der laufende Kernel war bereits ein SMP-Kernel und /proc/cpuinfo hat auch beide Kerne gelistet, an fehlendem SMP-Support liegt es also definitiv nicht!
Guck mal in /etc/kernel-pkg.conf und trage da
CONCURRENCY_LEVEL := 4 ein, dann benutzt make 4 Threads.
Und wenn du einfach "make -j4" statt "make" eingibst, um den Kernel zu bauen? Schon probiert?
Guck mal in /etc/kernel-pkg.conf und trage da
CONCURRENCY_LEVEL := 4 ein, dann benutzt make 4 Threads.
Ändert rein garnichts an der Sache...
Und wenn du einfach "make -j4" statt "make" eingibst, um den Kernel zu bauen? Schon probiert?
Funktioniert! :D
Aber eine Frage hätte ich da noch: Warum -j4 und nicht -j3 nutzen? Ich dachte die Faustregel wäre -j<Anzahl CPUs/Kerne + 1>, also bei 2 Kernen -j3 ?
Shutdown
Du baust dann Deinen Kernel nicht auf Debian-Art, wenn die Änderung bei Dir nicht greift.
Ich baue mir immer Vanilla Kernel von kernel.org, die Debian-Sourcen habe ich noch nie verwendet...wenn das nur für die Debiankernel ist wundert es mich auch nicht ;)
Trotzdem danke für den Tipp an euch beide!
Bleibt nur noch die Frage warum -j4 anstatt -j3 ;)
Shutdown
Es geht nicht darum, welche Sourcen Du benutzt, sondern wie Du diese kompilierst.
Unter Debian benutzt man dazu eben nicht make, da hierbei keine debs entstehen, da benutzt man make-kpg.
Es geht nicht darum, welche Sourcen Du benutzt, sondern wie Du diese kompilierst.
Unter Debian benutzt man dazu eben nicht make, da hierbei keine debs entstehen, da benutzt man make-kpg.
schon mal probiert?
bei mir klappt das ohne probleme!
make -j 8 && make-kpg
Bleibt nur noch die Frage warum -j4 anstatt -j3
bei -j kannst du 2, 3, 4 oder noch mehr eintragen. relativ egal, wenn du genug ram hast. bei 2 hast du eventuell nicht ganz 100% CPU-Last, bei zu vielen concurrenct gcc Prozessen könnte dein Ram knapp werden und die Festplatte etwas ins schwitzen kommen, aber das passiert erst im hohen 2-stelligen Bereich :)
Bei Dualcore gehts mit mehr als -j4 nicht schneller.
make-kpg hab ich noch nie benutzt, wofür soll das gut sein? Ich brauche von meinem Kernel kein .deb, da der eh nur für mein System gemacht ist - ich kopieren das Image einfach nach /boot/..., mache einen Symlink darauf für meinen GRUB und fertig :o
Und danke für die Infos :D
Shutdown
DerMagerquark
15.06.07, 14:32
Auf einem CoreDuo mit 512MB Speicher hatte ich sogar noch bis -j6 Performancezuwachs feststellen können. Must einfach mal ein paar Testreihen machen.
Interessanter Tipp - die Kiste hier ist ein Core2 Duo T7300 mit 2 GHz, 4 MB L2 Cache und 2 GB RAM - um die CPU(s) voll auszulasten brauche ich min. -j6 oder -j8 beim Kernelkompilieren und der Speicher ist auch nur ansatzweise ausgelastet - ich werde mal ein paar Tests mit time machen :D
Shutdown
`make-kpkg` erstellt ein linux-image-Paket für den jeweiligen kernel, das sich dann bequem installieren/entfernen läßt; falls Du nur selten einen neuen Kernel installierst und/oder der manuelle Weg bequem genug ist, hat es keine weiteren Vorteile. Sind allerdings initrds im Spiel, sieht es schon etwas anders aus. Ein Manko ist, daß das Skript editiert werden muß, um CC/HOSTCC setzen zu können, standardmäßig werden diese Umgebungsvariablen nicht weitergegeben. Ansonsten funktioniert z.B. `CC=gcc-3.4 HOSTCC=gcc-3.4 CONCURRENCY_LEVEL=7 make-kpkg --initrd` aber wunderbar.
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.