[hydrixOS] : HydrixOS Newsletter - IPC-Geschwindigkeit massiv erhöht

  • From: Friedrich Graeter <webmaster@xxxxxxxxxxx>
  • To: undisclosed-recipients: ;
  • Date: Mon, 21 Jul 2003 00:11:21 +0200

HydrixOS Newsletter
========================================================================

Hallo,

mit einiger Arbeit am Design der IPC des HydrixOS-Kernels konnte ich 
endlich die Geschwindigkeit des HydrixOS-Kernels _massiv_ erhöhen.

Bisher folgte das Konzept der Nachrichten-basierten IPC von HydrixOS 
eher dem Mach-Kernel, während ich nun viele hinderliche Konzepte des 
Mach-Kernels über Board geworfen habe. In erster Linie werden 
Nachrichten nicht mehr in Warteschlangen gepuffert und an Ports 
gesendet, sondern Nachrichten werden nun synchron versandt: D.h. nur 
dann wenn Sender und Empfänger tatsächlich empfangsbereits sind, wird 
die Nachricht transferriert.

Die Begrenzung der Nachrichtenlänge konnte durch diese Änderungen 
aufgehoben werden. Der Kernel bietet nun das Versenden beliebig langer 
unstrukturierter Nachrichten, deren Inhalt unkonvertiert den Kernel 
passieren, und beliebig lange, aus 64-bit unsigned Integer Werten 
bestehende, strukturierte Nachrichten an, deren Inhalte vom Kernel 
konvertiert werden, falls Sender und Empfänger unterschiedliche 
Datenrepräsentationen für 64-bit Integer-Werte haben.

Auch habe ich Signale und Nachrichten in zwei unterschiedliche 
Mechanismen aufgeteilt: Bisher war ein Signal nur eine spezielle 
Nachricht, während nun Signale einen eigenständigen Mechanismus 
darstellen. Der HydrixOS Kernel bietet Signale aus drei 64-bit Werten 
(die bei Unterschiedlichen Datenrepräsentationen von Sender und 
Empfänger vom Kernel konvertiert werden) an. Signale unterbrechen im 
Ggs. zu Nachrichten den laufenden Betrieb von Threads und führen zur 
Ausführung einer Nachrichtenbehandlungsroutine.


---

Während bisher für eine Nachricht ca. 163 Mikrosekunden draufgingen, 
konnte ich die Dauer (auf einem 1,8 GHz-Pentium IV-Prozessor) auf ca. 
10-15 Mikrosekunden verkürzen (Faktor 10). Mit Systemaufruf werden 
derzeit 20 Mikrosekunden benötigt und wenn der Aufruf durch das 
emulierte Programm mit eingerechnet wird ca. 700 Mikrosekunden.

Das macht deutlich, was alles bis Version 0.3.0 optimiert werden muss:

1. Plattform-native Programme (z.B. i386-Programm auf einem i386er) 
sollen, wie geplant, bis Version 0.3.0 direkt auf der CPU laufen dürfen, 
jedoch ohne Verlust der Architekturtransparenz und der Kernel-Portabilität.

2. Das plattformunabhängige Speichermodell des HydrixOS-Kernels soll in 
Zukunft, soweit wie möglich, auf das native Speichermodell zurückgreifen.

3. Die Copy-On-Write-Unterstützung muss wieder aktiviert werden, um 
Fork-Aufrufe und Nachrichten-Transfer (großer Nachrichten) zu beschleunigen.

4. Die Aufrufdauer einer Kernel-Routine muss verkürzt werden.

---

Die jetzigen Benchmarks sind natürlich nicht ganz verlässlich und geben 
nur ein ungefähres Abbild ab. Dennoch bin ich nun sehr optimistisch, 
dass HydrixOS nicht im Sumpf der langsamen Bastel-Betriebssysteme 
absinken wird :), da die oben stehenden Optimierungsmöglichkeiten doch 
sehr massiv sind.

Ich werde innerhalb dieser Woche einige Tests machen, denn es scheint 
sogar, als könnte der HydrixOS-Kernel trotz seiner angezogenen 
Handbremse bereits in seiner jetzigen Fassung von der Geschwindigkeit 
des Nachrichtenversands im Bereich von "Mach" liegen. Ob das nun 
wirklich stimmt, kann ich aber heute abend noch nicht sicher sagen...

Die aktuellen Quellen (Kernel 0.2.7) liegen ab morgen auf dem CVS. Mit 
der CVS-Version können übrigens momentan Benchmarks von Syscall+Send 
gemacht werden.

Ob ich bis 0.3.0 eine größere offizielle Release auf den FTP mache, 
lasse ich noch offen, das kommt einfach darauf an, wieviel Schritte zu 
den Zielen von Version 0.3.0 nötig sind und ob es sich rentiert...


Bis bald,

Friedrich Gräter


--- Anmerkung -------------------------------------------------------
Dieser Dienst wird Dank der freundlichen Unterstützung von
www.TheMasterz.de und www.freelists.org ermöglicht. Der Newsletter wird
automatisch in die Mailingliste gepostet und an Leute gesendet, die
diesen auf der HydrixOS-Homepage oder anderweitig bestellt haben. Er 
kann durch eine Mail an "newsletter@xxxxxxxxxxx" abbestellt werden.

-- 
HydrixOS Developers Mailing List

Administration: webmaster@xxxxxxxxxxx 
Archive: http://www.freelists.org/archives/hydrixos

Other related posts:

  • » [hydrixOS] : HydrixOS Newsletter - IPC-Geschwindigkeit massiv erhöht