Login
Newsletter
Werbung

Mo, 10. Juni 2002, 00:00

Scalability (and the 2.5 Kernel)

Referent: Rik van Riel

Profil: Rik van Riel ist ein Kernelhacker und interessiert sich besonders für Speichermanagement.

Immer mehr Bandbreite und daraus resultierend immer größere Datenmengen verlangen auch nach immer mehr Rechenkapazität. Will nun beispielsweise ein Administrator seinen Server aufstocken und ihm die doppelte Anzahl an CPUs verleihen, so steht er vor einem Problem: Meist kann, bzw. konnte Linux, das Betriebssystem seiner Wahl, nicht mit der doppelten Anzahl der CPUs umgehen.

Früher wurde dies mit "Locks" gelöst: Immer eine CPU bekam den Lock und konnte dann über den einen Bus Daten beispielsweise an das RAM senden. Da jedoch immer nur eine CPU zur gleichen Zeit den Lock haben konnte und auch nur ein Bus vorhanden war, konnte man die übrigen CPUs von Multiprozessorsystemen nicht parallel nutzen, so dass man so gut wie nichts von seinem Multiprozessorsystem hatte. Mit der Zeit wurde diese Technik verbessert, so dass mehrere CPUs zur gleichen Zeit Daten senden konnten. Hier stand dann auch nicht mehr bloß ein Bus zur Datenübertragung zur Verfügung, sondern jede CPU hatte ihren eigenen Bus (zum Teil hatte auch jede CPU zwei Busse). Durch die hohe Anzahl von Bussen, die durch die neue Technik entstanden, wurde es daher immer schwieriger, Multiprozessorsysteme zu entwickeln. Meist konnte man zudem auch hier nicht alle CPUs parallel betreiben, sondern meist nur die Hälfte. So waren bei einem System mit 32 CPUs immer 16 CPUs arbeitslos. Wieder neue Techniken waren gefragt, um die übrigen CPUs auch noch ansprechen zu können. In dem neuen 2.5er Kernel wird dies durch NUMA (Non-Uniform Memory Access) geregelt.

NUMA ist etwas komplizierter: NUMA versucht die "Entfernung" von den Prozessoren zu den einzelnen Speicheradressen möglichst gering zu halten und hierdurch Rechenzeit einzusparen. Mehr über NUMA erfahren Sie unter /usr/src/linux/Documentation/vm/numa. Mit dieser neuen Technik ist es möglich, von 32 CPUs 30 Stück parallel zu betreiben.

SMP - Symmetric Multiprocessing - steht für die symmetrische (gleichberechtigte) Verwendung mehrerer CPUs. Im aktuellen Entwicklerkernel 2.5 wurde die Technik, wie beim Übergang von 2.2 auf 2.4, wiederum weiterentwickelt. Rik, welcher an der Entwicklung des 2.5er Kernels beteiligt ist, erklärte dem Publikum, welches die Verbesserungen gegenüber dem 2.4er Kernel, welcher zur Zeit im Stable-Stadium ist, sind. Durch die geschickte Verwendung des Caches, der bei aktuellen High-End Prozessoren bis zu einem Megabyte beträgt (L2-Cache), kann man viel Zeit einsparen. Zwischen vier verschiedenen temporären Speichervarianten ist zu unterscheiden: L1-Cache, auf welchen man in nur einem Prozessorzyklus zugreifen kann (entweder schreiben oder lesen), L2-Cache, bei dem schon mehr als 25 Zyklen benötigt werden, RAM, mit rund 400 Prozessorzyklen und dann noch der Diskzugriff, welcher beispielsweise beim Zugriff auf im Swapspace abgelegte Daten verwendet wird und mit bis zu 1.000.000 Zyklen sehr viel Zeit in Anspruch nimmt. Am folgenden Beispiel veranschaulichte Rik dies sehr deutlich:

Man sitzt man Frühstückstisch und will sich ein Butterbrot streichen. Die Zeit, die man für das Streichen dieses Brotes benötigt, entspricht dann in etwa der Zeit, die man zum Lesen/Schreiben des L1-Cache des Prozessors braucht. Gibt man sich jedoch mit einem Butterbrot nicht zufrieden und will zum Beispiel noch Marmelade auf das Brot, so muss man sich erheben und zum Kühlschrank begeben. Dies entspricht dann in etwa der Zeit, die der Zugriff auf den L2-Cache des Prozessors benötigt. Befindet sich jedoch noch keine Marmelade im Kühlschrank, so muss man sich auf den weiten Weg zum Supermarkt begeben. Die Dauer, die man für das Zurücklegen dieses Weges benötigt, entspricht in etwa der, die man für den Zugriff auf das RAM braucht. Und, nunja... wenn auf die Festplatte geschrieben werden soll, dann steht der Supermarkt wohl in Alaska oder auf dem Mond ;-P

Mit anderen Worten: Die Entwickler wünschen sich mehr L1- und/oder L2-Cache.

Da zur Zeit nur circa 1% aller Systeme mehrere Prozessoren besitzt, ist der Aufwand, den man betreiben muss, um Linux mit immer mehr Prozessoren zum Laufen zu bekommen, nicht gerechtfertigt. Von diesem einem Prozent sind wiederum nur 1-2% mit mehr als vier Prozessoren ausgestattet.

Kommentare (Insgesamt: 0 )
Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung