Neuer Prozess-Scheduler soll Linux Beine machen
Die von Nick Piggin vorgestellten Veränderungen sollen den Linux-Prozess-Scheduler für Mehrprozessor-Systeme weiter beschleunigen. Dabei sollen auch explizit Verbesserungen mit Intels CMP-Technik (Chip-Multi-Processing) "Hyper Threading" und AMDs Opteron-Systemen zu erzielen sein.
Bei Opteron-Systemen ist zwar der gesamte Speicher für jede CPU sichtbar, besonders schnell ist jedoch der lokal an die CPU angebundene Speicher (NUMA – Non Unified Memory Architecture). Piggins Veränderungen verbesseren die Bindung von Prozessen an eine CPU, so dass diese nicht unnötig auf unterschiedlichen Prozessoren hin und her wandern und somit der Cache besser ausgenutzt wird.
Auch der Overhead des aktuellen Schedulers bei der Suche nach freien CPUs soll weiter verringert werden. Dieser ist erst in letzter Zeit angewachsen, als man einige Benchmarks beschleunigte – was allerdings für Chip-Multi-Processing zu Geschwindigkeitseinbußen führte.
Modifiziert wurde auch die initiale Verteilung neuer Prozesse: Aktuell werden alle logischen CPUs der Reihe nach aufgefüllt, d.h. zum Beispiel zuerst die beiden logischen Kerne der ersten CPU vor denen der zweiten, echten CPU. Dies führt oft zu einer suboptimalen Auslastung.
Erst in den letzten Jahren wurde der aus Linux-Urzeiten kaum modifizierte Scheduler, den Linus Torvalds Anfang der 90er-Jahre geschrieben hatte, von dem Red-Hat-Mitarbeiter Ingo Molnar neu geschrieben, um die Geschwindigkeit auf SMP-Systemen zu erhöhen. Hauptsächlich besteht der O(1) Scheduler aus neuem Code für das Suchen ausführbarer Prozesse und freier CPUs. Zuvor war dafür das zeitaufwendige Durchsuchen von Listen nötig, was jetzt durch explizite Sortierung der Listen durch wesentlich einfachere Operationen realisiert wird. Durch die konstante Zeit, die dieser Vorgang in Anspruch nimmt, wurde der Scheduler auch nach mathematischer Notation O(1), für konstante Komplexität, benannt.
Ingo Molnar segnete die Modifikationen bereits als konsequente Weiterentwicklung seiner Arbeit ab.
Weit experimentellere Änderungen stellt Jake Moilanen bereit: Er entwickelte eine Bibliothek als Basis für genetische Optimierungen, mit der er den Prozess- sowie den I/O-Scheduler oder den TCP/IP Stack beschleunigen möchte.
Dabei werden mit Prinzipien der Biologie Probleme mit Hilfe von selbst modifizierenden Algorithmen gelöst. Ein Satz von Parametern wird beispielsweise durch simulierte Fortpflanzung und Rekombination modifiziert und bei verbesserten Resultaten weiter verwendet. Moilanen stellt sogar in Aussicht, dass verschiedene Parametersätze vorgehalten werden könnten, um so jeweils der Situation angepasste zu laden.
Ob die genetischen Algorithmen jedoch Einzug in die offiziellen Kernel-Quellen halten, ist fraglich: Bisher hat sich noch kein Kern-Entwickler dazu geäußert und einem Einzug von Algorithmen der künstlichen Intelligenz in einen Betriebssystem-Kernel steht man eher ablehnend gegenüber, da die Geschwindigkeit nicht vom aktuellen Trainingsstand evolutionär entstandener Parameter abhängen sollte. [von René Rebe]
- Anzeige Hier geht es zu Linux: Das umfassende Handbuch bei Amazon Wenn Sie auf diesen Link klicken und darüber einkaufen, erhält Golem eine kleine Provision. Dies ändert nichts am Preis der Artikel.