Vorgetragen durch: Janis Danisevskis
9. Juni 2010
Motivation
Vorteile von µ-Kernen Modularit ¨at
Isolation von Servern Flexibilit ¨at
Aber
Effizienz?!?
Motivation
Vorteile von µ-Kernen Modularit ¨at
Isolation von Servern Flexibilit ¨at
Aber
Effizienz?!?
These
Wir haben es einfach noch nicht richtig gemacht.
Fragen
Welche Funktionalit ¨at geh ¨ort in den Kern?
Was muss man bei der Implementation dieser Fuktionalit ¨at beachten?
Welche Implikation hat die vorgeschlagene
Vorgehensweise auf die Portierbarkeit des µ-Kerns?
Fragen
Welche Funktionalit ¨at geh ¨ort in den Kern?
Was muss man bei der Implementation dieser Fuktionalit ¨at beachten?
Welche Implikation hat die vorgeschlagene
Vorgehensweise auf die Portierbarkeit des µ-Kerns?
Fragen
Welche Funktionalit ¨at geh ¨ort in den Kern?
Was muss man bei der Implementation dieser Fuktionalit ¨at beachten?
Welche Implikation hat die vorgeschlagene
Vorgehensweise auf die Portierbarkeit des µ-Kerns?
Outline
1 Motivation
2 1. Frage: Funktionalit ¨at
3 2. Frage: Implementations Details
4 3. Frage: Portierbarkeit
5 µ-Kern Implementationen
6 Zusammenfassung
Funktionalit ¨at
Ein Konzept ist nur dann im Kern erlaubt, wenn die
Anforderungen an die Funktionalit ¨at des Gesamtsystems nicht erf ¨ullt werden k ¨onnen, falls sich das Konzept nicht im Kern befindet.
Anforderungen an das Gesamtsystem
Unabh ¨angigkeit: Ein Subsystem S darf nicht durch ein anderes Subsystem S 0 gest ¨ort werden.
Integrit ¨at: Ein Subsystem S muss Garantien geben
k ¨onnen auf die sich andere Subsysteme verlassen k ¨onnen.
Funktionalit ¨at
Ein Konzept ist nur dann im Kern erlaubt, wenn die
Anforderungen an die Funktionalit ¨at des Gesamtsystems nicht erf ¨ullt werden k ¨onnen, falls sich das Konzept nicht im Kern befindet.
Anforderungen an das Gesamtsystem
Unabh ¨angigkeit: Ein Subsystem S darf nicht durch ein anderes Subsystem S 0 gest ¨ort werden.
Integrit ¨at: Ein Subsystem S muss Garantien geben
k ¨onnen auf die sich andere Subsysteme verlassen k ¨onnen.
Die Kernkonzepte
Adressr ¨aume
Threads und IPC
Eindeutige IDs
Adressr ¨aume
Adressr ¨aume sind eine Abstraktion eines wie auch immer
gestalteten Hardwarekonzepts der Speicherverwaltung.
Am Anfang war σ 0
σ 0 ...
... ist die Mutter aller Adressr ¨aume und hat auf magische Weise s ¨amtlichen im System verf ¨ugbaren Speicher.
... wird von einem initialien Subsystem S 0 verwaltet
Address Space Operatrionen
Grant
Ubertr ¨agt eine Seite aus dem eigenen Address Space in den ¨ eines anderen Subsystems.
Map
Reicht Zugriffsrechte auf eine eigene Seite an eine andere Task weiter.
Flush
Macht alle Map-Operationen auf eine Seite r ¨uckg ¨angig.
Address Space Operatrionen
Grant
Ubertr ¨agt eine Seite aus dem eigenen Address Space in den ¨ eines anderen Subsystems.
Map
Reicht Zugriffsrechte auf eine eigene Seite an eine andere Task weiter.
Flush
Macht alle Map-Operationen auf eine Seite r ¨uckg ¨angig.
Address Space Operatrionen
Grant
Ubertr ¨agt eine Seite aus dem eigenen Address Space in den ¨ eines anderen Subsystems.
Map
Reicht Zugriffsrechte auf eine eigene Seite an eine andere Task weiter.
Flush
Macht alle Map-Operationen auf eine Seite r ¨uckg ¨angig.
Ein Beispiel
Threads
Ein Thread ...
... ist eine Aktivit ¨at, die in einem Address Space ausgef ¨uhrt wird.
... ist charakterisiert durch einen Registersatz (mit instruction pointer, stack pointer und Statusregister).
... ist genau einem Address Space zugeordnet.
Die Zuordnung zu einem Address Space wird bedingt durch die
Forderung nach Unabh ¨anigkeit (pricipal of independence)
Threads
Ein Thread ...
... ist eine Aktivit ¨at, die in einem Address Space ausgef ¨uhrt wird.
... ist charakterisiert durch einen Registersatz (mit instruction pointer, stack pointer und Statusregister).
... ist genau einem Address Space zugeordnet.
Die Zuordnung zu einem Address Space wird bedingt durch die
Forderung nach Unabh ¨anigkeit (pricipal of independence)
Threads
Ein Thread ...
... ist eine Aktivit ¨at, die in einem Address Space ausgef ¨uhrt wird.
... ist charakterisiert durch einen Registersatz (mit instruction pointer, stack pointer und Statusregister).
... ist genau einem Address Space zugeordnet.
Die Zuordnung zu einem Address Space wird bedingt durch die
Forderung nach Unabh ¨anigkeit (pricipal of independence)
IPC
IPC ...
... ist die Kommunikation zwischen Threads insbesondere
¨uber Address Space Grenzen hinweg.
... forciert ¨ Ubereink ¨unfte zwischen den kommunizierenden Parteien.
IPC tr ¨agt der Forderung nach Integrit ¨at Rechnung.
IPC
IPC ...
... ist die Kommunikation zwischen Threads insbesondere
¨uber Address Space Grenzen hinweg.
... forciert ¨ Ubereink ¨unfte zwischen den kommunizierenden Parteien.
IPC tr ¨agt der Forderung nach Integrit ¨at Rechnung.
Interrupts als IPC
Ger ¨ate sind Aktivit ¨aten.
Interrupts sind ihre IPC Nachrichten
Der Kern muss Interrupts in IPC Nachrichten ¨ubersetzen.
Interrupts als IPC
Ger ¨ate sind Aktivit ¨aten.
Interrupts sind ihre IPC Nachrichten
Der Kern muss Interrupts in IPC Nachrichten ¨ubersetzen.
Eindeutige IDs
Eindeutige IDs als Kernkonzept tragen der Forderung nach
Integrit ¨at des Systems Rechnung.
Flexibel genug?
Speicherverwaltung ?
Flexibel genug?
Speicherverwaltung X
Multimedia Resource Allocation?
Durch verschiedene Implementationen von Memorymanagern und Pagern lassen sich gleichzeitig Multimedia und
Timesharing Strategien realisieren.
Flexibel genug?
Speicherverwaltung X
Multimedia Resource Allocation X Treiber ?
Interrupts als IPC
IO durch Address Space mapping
Flexibel genug?
Speicherverwaltung X
Multimedia Resource Allocation X Treiber X
Remote Communication ?
Kommunikationsserver
benutzt Treiberserver
Flexibel genug?
Speicherverwaltung X
Multimedia Resource Allocation X Treiber X
Remote Communication X Unix Server ?
Systemcalls via IPC
Als Pager kann memory sharing realiziert werden
Flexibel genug?
Speicherverwaltung X
Multimedia Resource Allocation X Treiber X
Remote Communication X
Unix Server X
Noch einmal die These
Wir haben es einfach noch nicht richtig gemacht.
Aber was kann man besser machen?
Der NULL-Syscall
getpid/get self thread
Mach 3.0, NORMA MK 13 auf 486/50: 18 µ s a L3 auf 486/50: 3 µs
a
Gemessen von Ousterhout [1990]
Daraus folgt:
Kern-User-Umschaltung muss nicht so teuer sein wie bis dato
angenommen.
Der NULL-Syscall
getpid/get self thread
Mach 3.0, NORMA MK 13 auf 486/50: 18 µ s a L3 auf 486/50: 3 µs
a
Gemessen von Ousterhout [1990]
Daraus folgt:
Kern-User-Umschaltung muss nicht so teuer sein wie bis dato
angenommen.
Address Space Umschaltung
Fakten
Umschalten der Seitentabelle ist schnell (1–10 Takte) Die Kosten entstehen durch die TLB Architektur Tagged TLB
Keine zus ¨atzlichen Kosten. Der TLB ist transparent bez ¨uglich der Umschaltung der Seitentabelle.
Untagged TLB
Bei der Umschaltung der Seitentabelle muss der TLB geleert
werden was eine Reihe von TLB misses zur Folge hat.
Address Space Umschaltung
Fakten
Umschalten der Seitentabelle ist schnell (1–10 Takte) Die Kosten entstehen durch die TLB Architektur Tagged TLB
Keine zus ¨atzlichen Kosten. Der TLB ist transparent bez ¨uglich der Umschaltung der Seitentabelle.
Untagged TLB
Bei der Umschaltung der Seitentabelle muss der TLB geleert
werden was eine Reihe von TLB misses zur Folge hat.
Address Space Umschaltung
Fakten
Umschalten der Seitentabelle ist schnell (1–10 Takte) Die Kosten entstehen durch die TLB Architektur Tagged TLB
Keine zus ¨atzlichen Kosten. Der TLB ist transparent bez ¨uglich der Umschaltung der Seitentabelle.
Untagged TLB
Bei der Umschaltung der Seitentabelle muss der TLB geleert
werden was eine Reihe von TLB misses zur Folge hat.
Zahlen und Strategien
Vergleich von Roundtrip Zeiten
Nutzung von Segmentierung zahlt sich aus
Versuchsaufbau
System M: Mach µ-Kern + Unix Server System U: Ultrix (Monolitischer Unix Kern) Benchmarks
sed, egrep, yacc, gcc, compress, espresso, ab
Zu Messen:
MCPI: Memory Cycle overhead per instruction Aufgeteilt in:
cache misses im Kern (schwarz)
write buffer stalls, unchached reads und cache misses im
Die Messungen
Auswertung
Im Durchschnitt kein Unterschied im Userspace.
Deutlich h ¨oherer MCPI Beitrag durch cache misses im Kern bei Mach
Zweite Messung
conflict misses im Kern (schwarz)
capacity misses im Kern (weiß)
Auswertung
Im Durchschnitt kein Unterschied im Userspace.
Deutlich h ¨oherer MCPI Beitrag durch cache misses im Kern bei Mach
Zweite Messung
conflict misses im Kern (schwarz)
capacity misses im Kern (weiß)
Die Messung 2
Fazit
Mach steht sich selbst im Weg!
Laut Liedtke
Ein konzeptioneller Fehler
Portierbarkeit
These
µ-Kerne sind von Natur aus nicht portierbar.
Unterschiede kompatibler Prozessoren
486 versus Pentium
Unterschiede kompatibler Prozessoren
486 versus Pentium
486 Pentium
Beg ¨unstigste Address Space Umschaltung
TLB Flush + Page Table
Segmentumschaltung
Unterschiede kompatibler Prozessoren
486 versus Pentium
user-address-space multiplexer, modified address-space switch routines, handling of user supplied addresses, thread controll blocks, task controll blocks, IPC implementation
Betrifft die H ¨alfte aller Module des µ-Kerns
Unterschiede kompatibler Prozessoren
486 versus Pentium
Die 2 way Assoziativit ¨at des Pentium cache beg ¨unstigt cache-Konflikte w ¨arend der IPC.
L ¨osung:Ausrichten der Thread Kontrollbl ¨ocke an 1K statt an 4K Grenzen.