Dieser Artikel ist größtenteils für alle Ubuntu-Versionen gültig.
Moderne Prozessoren besitzen meist zwei oder noch mehr Kerne. Für den Anwender bedeutet dieses, dass mit dem System flüssigeres Arbeiten möglich ist, da weitere Kerne für neue Aufgaben bereit stehen und das System dann nicht erst warten muss, bis Ressourcen verfügbar sind. Ubuntu unterstützt von Haus aus solche Prozessoren. In seltenen Fällen kommt es hier zu Problemen, so dass das System nur einen Kern erkennt und somit nicht mit voller Leistung läuft.
Dabei ist zu beachten, dass Programme üblicherweise immer nur einen Kern benutzen, es sei denn sie sind für den Einsatz auf Mehrkern-CPUs optimiert. So ist es nicht ungewöhnlich, dass ein Programm einen Kern voll auslastet, der zweite Kern jedoch ungenutzt bleibt.
Hat man den Verdacht, dass das System nicht mit voller Leistung läuft, sollte man erst kurz analysieren ob Ubuntu alle Prozessorkerne benutzt. Hierfür gibt es verschiedene Wege. Die Desktopumgebungen bieten üblicherweise Werkzeuge zur Systemüberwachung an. Dort kann man die Auslastung seiner CPU ansehen.
In der GNOME und Xfce Desktopumgebung kann man die Systemüberwachung dazu nutzen
"System -> Systemverwaltung -> Systemüberwachung -> Ressourcen" (GNOME)
"Applications -> Systemverwaltung -> Systemüberwachung -> Ressourcen" (Xfce)
Wurde die Mehrkern-CPU vom System richtig erkannt, so sieht man hier pro CPU einen Graphen mit der Prozessorauslastung des jeweiligen Kerns.
Unter KDE kann man den Systemmonitor über
"K-Menü -> Anwendungen -> System -> System Monitor"
starten. Auf dem zweiten Reiter liegt ein voreingestelltes Arbeitsblatt, das auf vier Grafiken die Systemleistung anzeigt. Es ist jedoch möglich unter "Datei" ein neues Arbeitsblatt anzulegen und aus der rechten Infoliste die gewünschten Monitore auszuwählen. Es ist sowohl möglich die Gesamtauslastung der CPUs als auch der einzelnen Kerne in die selbe Grafik zu ziehen.
Am ausführlichsten kann man sich in einem Terminal [2] über die im System verbaute CPU informieren. Über den Befehl
cat /proc/cpuinfo
processor : 0 vendor_id : GenuineIntel cpu family : 15 model : 6 model name : Intel(R) Pentium(R) D CPU 3.00GHz ... processor : 1 vendor_id : GenuineIntel cpu family : 15 model : 6 model name : Intel(R) Pentium(R) D CPU 3.00GHz ...
werden pro CPU bzw. Kern zahlreiche Informationen ausgegeben. Sollte hier nur ein Kern erscheinen, so sollte man sich daran machen, das Problem zu beheben.
Alternativ kann man auch lscpu ausführen.
Zuerst sollte man überprüfen, ob man den richtigen Kernel benutzt. Nur der so genannte "-generic" Kernel, der üblicherweise bei der Installation von Ubuntu automatisch installiert wird, bietet die Unterstützung für Mehrkern-CPUs. Dies geht am einfachsten über einen Befehl im Terminal [2]. Über
uname -r
2.6.22-14-generic
erfährt man den genutzten Kernel. Sollte hier am Ende "-386" stehen, so hat man im Laufe der Zeit aus versehen diesen Kernel installiert. Man sollte daher darauf achten, dass das Metapaket
linux-generic
installiert ist und dass man beim Booten auch diesen Kernel auswählt. Mehr zu diesem Thema findet man im Artikel Kernel hier im Wiki.
Es gibt für den Kernel Bootoptionen, die spezielle Funktionen aktivieren bzw. deaktivieren können. Auch für die Unterstützung von Mehrkern-CPUs gibt es zwei Optionen, die das Verhalten der Kernels bezüglich einer Mehrkern-CPU regeln.
Über die Option nosmp
wird die Unterstützung für Multicore-CPUs deaktiviert. Diese Option gilt als Problemlösung für manche Probleme. Doch mit dieser Option wird nun mal nur ein Kern genutzt.
Des weiteren kann man mit der Option maxcpus=X
bestimmen wie viele Kerne das System benutzen soll. maxcpus=1
würde beispielsweise nur einen Kern einer Multicore-CPU nutzen.
Diese Optionen werden über keinen Automatismus gesetzt, sondern vom Anwender selber in die /boot/grub/menu.lst bzw. bei GRUB 2 in die /etc/default/grub eingetragen. Daher sollte man kurz in die Datei sehen und an dieser Stelle
... ## additional options to use with the default boot option, but not with the ## alternatives ## e.g. defoptions=vga=791 resume=/dev/hda5 # defoptions=quiet splash nosmp ...
bzw. bei den einzelnen Einträge für die Kernels
... title Ubuntu 8.04, kernel 2.6.24-17-generic root (hd0,0) kernel /boot/vmlinuz-2.6.24-17-generic root=/dev/sda ro quiet splash nosmp initrd /boot/initrd.img-2.6.24-17-generic quiet ...
nachsehen, ob nosmp
bzw. maxcpus=X
dort eingetragen ist. Falls ja, sollte man die Optionen gegebenenfalls entfernen [3].
Sollten auch nach dem entfernen dieser die zusätzlichen Kerne immernoch nicht erkannt werden, so sollte man auch auf die bootparameter noapic
und nolapic
prüfen.
Ab Karmic Koala muss nach jeder Änderung an der Datei /etc/default/grub die Grubkonfiguration - die in der Datei /boot/grub/grub.cfg gespeichert ist - aktualisiert werden. Andernfalls werden Änderungen beim nächsten Systemstart nicht sichtbar.
Dies erreicht man durch den Befehl [2]
sudo update-grub
In der Vergangenheit hat es sich oft gezeigt, dass das Problem nicht am Betriebssystem zu suchen ist sondern am Rechner. Manche Rechner besitzen im BIOS die Möglichkeit den Multi-Core zu deaktivieren. Andere Mainboards haben das Problem, dass der Multi-Core in der genutzten BIOS-Version überhaupt nicht funktioniert.
Man sollte daher in das BIOS des Rechners gehen und nach Einstellungsmöglichkeiten suchen und sich informieren, ob es ein BIOS-Update für das Mainboard gibt und dieses einspielen. So sollte dann Ubuntu mit allen Kernen des Systems laufen.