SystemCall

Forschungspodcast über Betriebssysteme

Mit
  • Stefan Naumann
  • Florian Rommel

SC(2): Himmelsbrücken durch Tunnel und Replikate bei Vielkernern

Mit Stefan Naumann, Florian Rommel

Wir beschäftigen uns im SystemCall Podcast mit aktueller Betriebssystemforschung. In der zweiten Sendung diskutieren wir mit "SkyBridge: Fast and Secure Inter-Process Communication for Microkernels" eine Idee zur Beschleunigung von Interprozesskommunikation für Mikrokernel und sprechen über "NrOS: Effective Replication and Sharing in an Operating System", ein Konzept für effektives Teilen von Datenstrukturen auf Manycore-Non-Uniform-Memory-Access Maschinen.

SkyBridge ist auf der EuroSys'19 erschienen und diskutiert einen Ansatz um Interprozesskommunikation zu beschleunigen. Die Performance eines Microkerns leidet sehr darunter, dass viel Funktionalität in vielen spezialisierten, abgekapselten Prozessen stattfindet und die Kommunikation nur über IPC durch den Kern möglich ist. Zunächst werden die Faktoren der Entschleunigung benannt und gemessen. So identifizieren sie die direkten Kosten (syscall, page tables wechseln, privilegien prüfen, sysexit), aber auch die indirekten Kosten (Verschmutzung der Caches).

Die Autoren stellen dann eine Möglichkeit für synchrone Kommunikation vor, die die Schutzdomänen mithilfe der VT-x Erweiterung von Intel Prozessoren wechselt. Dabei wird ein Hypervisor eingeführt, der das 2-Stage Adress Translation in der Hand hält. Durch bestimmte vmfunc-Instruktionen können die Extended Page Tables (EPT) aus dem Usermodus heraus umgeschaltet werden, sodass die Guest-Physischen Adressen nun auf andere Host-Physischen Adressen zeigen. Das wird benutzt um von den Client Page Tables zu den Server Page Tables zu springen.

nrOS (OSDI'21) ist ein Ansatz um in Systemen mit sehr vielen Prozessoren, sog. Manycore Systemen, effektiv Datenstrukturen zu teilen. In Non-Uniform-Memory-Access-Systemen (NUMA-Systmen) ist zwar der gesamte Speicher zugreifbar, aber nur ein Teil davon für bestimmte Prozessoren "nah", also schnell erreichbar. Anderer Speicher ist für andere Prozessoren näher.

Jede NUMA-Node hat ein Duplikat der Datenstruktur, bspw. der Page Tables. Änderungen daran werden pro NUMA-Node durch einen einzigen Thread durchgeführt (den Combiner), der alle Änderungen auch ins Operational Log(buch) schreibt. Die Änderungen werden in Realzeit später auf den anderen Knoten nachgezogen. Lesezugriffe durch den Prozessor bei Speicherzugriffen sind somit schnell, weil sich die Daten in "nahem" Speicher befinden. Allerdings kann es passieren, dass wir veraltete Daten lesen und Pagefaults erhalten. Dann werden im Pagefault-Handler zunächst alle Änderungen nachgezogen.

Links

SkyBridge: Fast and Secure Inter-Process Communication for Microkernels

Zeyu Mi, Dingji Li, Zihan Yang, Xinran Wang, and Haibo Chen. 2019. SkyBridge: Fast and Secure Inter-Process Communication for Microkernels. In Proceedings of the Fourteenth EuroSys Conference 2019 (EuroSys '19). Association for Computing Machinery, New York, NY, USA, Article 9, 1–15. DOI: https://doi.org/10.1145/3302424.3303946

Weitere Referenzen:

NrOS: Effective Replication and Sharing in an Operating System

Bhardwaj, Ankit, Chinmay Kulkarni, Reto Achermann, Irina Calciu, Sanidhya Kashyap, Ryan Stutsman, Amy Tai, and Gerd Zellweger. 2021. NrOS: Effective Replication and Sharing in an Operating System. In 15th USENIX Symposium on Operating Systems Design and Implementation (OSDI 21), 295–312.

Introsounds