Netbook Speedup für Ubuntu LTS 12.04 „Precise Pangolin“


Vor ein paar Tagen habe ich mich getraut, mein Netbook mit Dualcore Intel Atom N550@1.50GHz auf die neue Ubuntu LTS 12.04 „Precise Pangolin“ upzugraden.
Schon zuvor hatte ich manchmal das Problem, daß die GUI teilweise hängenblieb, besonders beim Umschalten zwischen laufenden Programmen per Klick auf das jeweilige Symbol in der Unity Leiste.
Aber nach dem Upgrade war alles noch viel schlimmer und langsamer, so daß man den Eindruck hatte, der Rechner hat sich komplett aufgehängt. Abhilfe schaffte hier nur das Umschalten zwischen den einzelnen Programmen mittels ALT-TAB.
Als ich mir das dann mal in top angesehen habe (die „1“ gedrückt um alle CPUs aufzulisten), ist mir aufgefallen, daß da mittlerweile 4 CPUs angezeigt werden.
Mhh, das waren vorher nur 2 gewesen, ist wohl das Hyperthreading im Kernel aktiviert worden…
Unter dem vorinstallierten Windows7 Starter wurden da schon immer 4 CPUs angezeigt und im BIOS Setup war keine Option zum Abschalten von Hyperthreading zu finden.
Also kurz recherchiert und einen interessanten englischsprachigen Artikel gefunden, der sich genau nach meinem Problem angehört hat: Disabling Hyperthreading
Die Lösung war dann (in meinem Fall) wie angegeben:

echo 0 > /sys/devices/system/node/node0/cpu1/online
echo 0 > /sys/devices/system/node/node0/cpu3/online

Dann das ganze noch in die /etc/rc.local eintragen um es gleich beim Systemstart zu setzen.
Seitdem läuft das Netbook wieder 1a und die Hänger sind komplett weg.
Für Netbooks und andere „bare metal“ Systeme ist das folgende vielleicht auch hilfreich (weil Hyperthreading natürlich nicht in jedem Fall „böse“ ist):
Wenn man sich nicht sicher ist wie viele echte CPU Kerne man hat und vorher auf der Shell testen will ob Hyperthreading aktiviert ist, kann man auf der Kommandozeile auch folgende Befehlszeile eingeben:
(einfach copy&paste in der bash, getestet mit aktueller Debian und Ubuntu Distribution)

cat /proc/cpuinfo | \
egrep "siblings|cores" | \
sort | \
uniq | \
awk -F':' 'BEGIN{ORS=";";} {print $2}' | \
awk -F';' '{ if ($1 == $2) print "\nHT is not enabled\n"; \
else print "\nHT is enabled\n" }'

Ansonsten lief das Upgrade erstaunlich problemlos, alle Anwendungen die ich täglich verwende funktionieren genauso wie zuvor.
Wie immer gilt:
Dies ist ein Workaround, also am besten prüfen, ob diverse Änderungen nach Kernel-Updates und vor allem Distributions-Upgrades noch notwendig, oder vielleicht sogar kontraproduktiv sind.

Stefan Gundel
Stefan Gundel
Senior Systems Engineer

Stefan ist ein Urgestein bei NETWAYS und arbeitet im Managed Services Team. Der internationale Durchbruch gelang Stefan als Fotomodel für den K+K Warenkorb. Nachdem er einige Jahre exklusiv für unseren Kunden StayFriends gearbeitet hat, darf er nun endlich auch wieder in anderen Projekten mitarbeiten.