Search

Leistungsangelegenheiten

2021-02-08
382
0

Pit’s IT Architecture Talk

#2 Leistungsangelegenheiten

Hinweis: Die in diesem Artikel zum Ausdruck gebrachten Ansichten und Meinungen sind die des Autors und spiegeln nicht notwendigerweise die offizielle Politik, Position, Produkte und Technologien der Huawei Deutschland GmbH wider. Wenn Sie mehr über die Produkte und Technologien der Huawei Deutschland GmbH erfahren möchten, besuchen Sie bitte unsere Produktseiten oder kontaktieren Sie uns.

In meinem letzten Post habe ich ja schon erwähnt, dass Performance eines meiner Lieblingsthemen ist. Ihr könnt also damit rechnen, dass dieses Thema noch öfter ansteht, obwohl mir gerade noch einige andere Themen wie Cloud und KI in den Sinn kommen. Kurze Warnung – das wird etwas nerdiger – aber wirklich nur etwas.

Ein Prozessor, in diesem Fall der Hauptprozessor oder auch kurz auf Englisch CPU, arbeitet in mehreren Modi. Normaler Weise sprechen wir hier von User-Mode und Kernel-Mode. Bitte verzeiht mir die Anglizismen. Ich benutze diese Wörter einfach als Erweiterung unserer Sprache. Wenn ich von Windows rede, weiß somit jeder, dass ich keine Fenster meine. Nun wieder zurück zu den Prozessor-Modi. CPUs können auch mehr als zwei Modi haben. Bei den im Serverbereich dominierenden x86-CPUs sind es vier verschiedene Modi. Davon wird in der Regel aber nur der Mode 0 (Kernel) und der Mode 3 (User) verwendet. Auch das ist nicht ganz richtig, da für die Virtualisierung z.B. VT-x implementiert wurde und andere Prozessor-Architekturen, wie z.B. ARM, weitere Möglichkeiten bieten. Aber bleiben wir vereinfacht bei Kernel- und User-Mode.

Warum gibt es nun diese Modi?

Das ist ganz einfach. Software ist nicht perfekt und kann Fehler beinhalten. Allein das Betriebssystem besteht aus vielen Millionen Zeilen Source-Code. Bei Linux sind das derzeit ca. 28 Millionen. Da kann schon einiges schief laufen und das Betriebssystem stellt nur grundlegende Funktionen für den Computer zur Verfügung. Der Nutzen eines Computers ergibt sich ja erst mit der Anwendungssoftware. Die Prozessor-Modi wurden von Hardware-Ingenieuren eingeführt, um die Stabilität des Computersystems zu erhöhen. Software die im User-Mode abläuft kann Software die im Kernel-Mode abläuft nicht beeinflussen. Dies trägt wesentlich zur Stabilität von Betriebssystemen bei. Wenn also meine Textverarbeitung mal wieder abstürzt, muss ich nicht gleich den ganzen Computer booten, sondern kann ganz einfach das Programm erneut aufrufen.

Es gibt noch einen wichtigen Unterschied zwischen Kernel-Mode und User-Mode. Der Kernel-Mode wird auch als privilegierter Modus bezeichnet, da nur dieser auf alle Funktionen der CPU zugreifen kann. Das sind unter anderem Interrupts, Status-Register und der gesamte Hauptspeicher. Nur Software im Kernel-Mode kann also mit den angrenzenden Systemen, wie Grafik, Tastatur, Netzwerk etc., kommunizieren. Aufgrund dieser Privilegien kann Software im Kernel-Mode das gesamte System zum Absturz bringen. Deshalb wird der Kernel-Mode nur verwendet, wenn es nicht anders geht. Also auch beim Betriebssystem werden möglichst wenige Bereiche im Kernel-Mode ausgeführt. Wenn ein Prozess aus dem User-Mode Daten oder Funktionen aus dem Kernel-Mode benötigt, muss er dies über eine API, das System Call Interface, anfordern. Der Prozessor muss dann in den Kernel-Mode wechseln, die entsprechenden Anfragen beantworten und anschließend wieder zurück in den User-Mode wechseln. Das kostet natürlich Zeit und Zeit ist eine Ressource, die man in einem effizienten Compute-System nicht hat.

Und warum schreibe ich das alles?

Ich möchte eine Innovation darstellen, die daran beteiligt ist, dass unsere Storage-Systeme so unglaublich leistungsfähig sind. Die Huawei OceanStor Dorado V6 kann mehr als 21 Millionen SPC-1 IOPS™ bei einer gemittelten Antwortzeit von 0,286 ms liefern. Wenn man das als Frequenz darstellen würde, entspräche dies 21 MHz. Das ist die Taktgeschwindigkeit eines i386-Prozessors und wir reden hier nicht über die Kommunikation auf einem Silizium-Chip sondern über IO-Operationen zwischen Computern und einem Storage-System über Fibre Channel Fabrics (round-trip).

In optimalen Konfigurationen erreichen wir sogar Antwortzeiten von 50 µs. Das ist so schnell, dass wir die Einheiten von Millisekunden auf Mikrosekunden ändern mussten. Chapeau!

Um solch ein Ergebnis zu erzielen, haben sich viele Kollegen aus unseren Entwicklungs-Teams eine Menge Gedanken machen müssen. Ein Problem bestand darin, dass die Kommunikation der Netzwerkkarten zum Hauptspeicher zu lange dauerte.

Dazu muss man wissen, dass wir unsere Storage-System-Software fast ausschließlich im User-Mode ablaufen lassen. Wie wir oben gesehen haben, trägt dies enorm zur Systemstabilität bei. Wenn die Software im User-Mode läuft und mit dem Front-end-Interface-Modul (FC und IP) kommunizieren möchte, geht dies nur über den Kernel-Mode. Damit hätten wir aber unglaublich viele und langsame Wechsel vom User-Mode in den Kernel-Mode und wieder zurück.

Jetzt könnte man sagen, verlegt doch einfach den Code in den Kernel. Da das potenziell die Systemstabilität beeinflussen könnte, haben wir nach einer besseren Lösung gesucht.

Und die Lösung ist auf unseren Front-end-Interface-Modulen in Form eines von uns entwickelten Prozessors. Dieser führt das gesamte Protocoll-Parsing aus, was sonst im Betriebssystem-Kernel ablaufen würde und reduziert die Latenz mal glatt auf die Hälfte – coole Lösung! Und nebenbei, diese Lösung gibt es auch für unsere Server und entlastet auch dort die kostenintensive CPU und gibt mehr Raum für Anwendungen unserer Kunden.

Bis bald!

Pit



TOP