
Ich möchte über den Artikel "E / A ist schneller als die CPU - Lassen Sie uns Ressourcen partitionieren" sprechen
und Eliminate (Most) OS Abstractions " , veröffentlicht auf der persönlichen Seite eines Entwicklers von ScyllaDB, Pekka Enberg. Ich habe es aus dem Video herausgefunden .
Die Autoren dieses Artikels sollten am 12. und 15. Mai 2019 auf dem HOTOS17-Workshop (Hot Topics in Operating Systems) einen Vortrag halten. Soweit ich weiß, diskutieren sie dort Entwicklungen in den frühen Phasen ihres Lebens.
Mein Artikel ist neu, um neugierige Köpfe zu wecken, über dieses Thema nachzudenken und in den Kommentaren nachzudenken.
Allgemeiner Punkt
E / A auf Servern mit schnell programmierbaren Netzwerkkarten und nichtflüchtigem Speicher nähern sich der Geschwindigkeit des flüchtigen RAM an, und die Geschwindigkeit eines Prozessorkerns bleibt bestehen. Anwendungen können moderne Hardware nicht nutzen, weil gezwungen, Schnittstellen zu verwenden, die auf Abstraktionen mit langsamen E / A-Systemen basieren.
Die Autoren schlagen eine eigene Betriebssystemstruktur namens Parakernel vor , die die meisten Abstraktionen des Betriebssystems eliminiert und eine Schnittstelle für Anwendungen bietet, damit sie das volle Potenzial der Geräte nutzen können. Parakernel erleichtert die Parallelität auf Anwendungsebene, indem Ressourcen sicher gemeinsam genutzt und gemeinsam genutzte Ressourcen gemultiplext werden.
Die Architektur moderner Betriebssysteme wurde erfunden, als die E / A-Geschwindigkeit viel niedriger war und Anwendungen auf E / A warteten. Derzeit können E / A-Geräte den Prozessor problemlos überlasten.
Laut den Autoren leisten moderne Netzwerkstacks zu viel Arbeit pro Paket. Darüber hinaus implementieren Betriebssysteme normalerweise die POSIX-Socket-API, die hohe Kosten für Kontextwechsel und CPU-Cache-Verschmutzung verursacht.
Hardware-Voraussetzungen
Eine moderne 40-Gbit / s-Netzwerkkarte kann alle 5 ns ein der Cache-Leitung entsprechendes Paket empfangen, und die Verzögerung beim Zugriff auf die LLC-Prozessoren (Cache der letzten Ebene) beträgt etwa 15 ns.
Beispielsweise hat Linux die POSIX AIO-Schnittstelle entwickelt, die eine einfache und effiziente asynchrone E / A-Schnittstelle bieten soll. Die Implementierung, Unterstützung und Anwendung einer solchen Schnittstelle unter Beibehaltung der POSIX-Semantik erwies sich als sehr schwierig und wurde zugunsten der neuen io_uring aufgegeben .
Was ist die vorgeschlagene Lösung
Die neue Betriebssystemstruktur, die die Autoren als Parakernel bezeichnen , soll die Parallelisierung von Aufgaben vereinfachen. Ressourcen werden Anwendungen zugewiesen und haben die volle Kontrolle über sie. Ressourcen, die nicht gemeinsam genutzt werden können, werden vom Kernel gemultiplext.
Die gemeinsame Nutzung von Ressourcen in Mehrkernsystemen erfordert eine Synchronisation zwischen Prozessorkernen, wodurch eine Parallelität auf Anwendungsebene verhindert wird. Dieses Hindernis kann durch Aufteilen der Ressourcen auf Prozessorkerne verringert werden.
Zusammenfassung
Einige Betriebssystemabstraktionen schränken die E / A-Leistung ein. Die Autoren präsentieren eine Betriebssystemstruktur, die gemeinsam genutzte Ressourcen gemeinsam nutzt und gemeinsam genutzte Ressourcen multiplext. Parakernel vereinfacht die Parallelität auf Anwendungsebene und ergänzt das Thread-to-Core- Design.
Der Prototyp Parakernel ist in Rust geschrieben und befindet sich derzeit in der Entwicklung. In dem Artikel habe ich den Namen des Betriebssystems nicht gesehen, aber ich habe anderes Material von einem der Autoren des Manticore-Betriebssystems gefunden und komme zu dem Schluss, dass hier das Repository dieser Entwicklung ist.
Was ist im Rest der Welt?
Wie sich herausstellt, schlafen die Hersteller von Prozessoren nicht und versuchen auch, das Problem der langsamen Schicht zwischen ihren Produkten und den Verbrauchern zu lösen. So viele Leute mögen den Leistungsengpass in Form des Kernels des Betriebssystems nicht.
Interessante Innovationen von Intel, mehr dazu in diesem Artikel . Hier ist ein Auszug daraus:
- Intel Volume Management Device (Intel VMD) - Ermöglicht die direkte Arbeit mit NVM Express-Laufwerken, wobei das Gerät direkt dem Speichersystem "übergeben" wird. Infolgedessen wurden eine vollwertige Hot-Swap-fähige SSD, Statusanzeige und die Verwendung der Intel VROC-Technologie möglich.
- Intel Virtual RAID auf CPU (Intel VROC). Ermöglicht das Erstellen von RAID von NVMe-Laufwerken mithilfe des Prozessors. Mit diesem Prozessor können Sie Softwarelösungen oder zusätzliche Adapter ablehnen, um Arrays von Hochgeschwindigkeits-PCIe-SSDs zu erstellen.
- Internet Wide-Area RDMA-Protokoll (iWARP). Die RDMA-Erweiterung wird jetzt von integrierten Intel X722-Netzwerkadaptern unterstützt, da der Prozessor vier 10-Gigabit- (oder Gigabit-) Ethernet-Ports unterstützt. Ich möchte Sie daran erinnern, dass RDMA direkt aus dem Speicher unter Umgehung des Kernels und des Betriebssystems Zugriff auf Daten über das Netzwerk erhält.
Es ist immer sehr interessant, neue Konzepte in bereits verwurzelten Systemen kennenzulernen.
Bitte schreiben Sie über Fehler und notwendige Ergänzungen.
UPD : Dieser Artikel wird von der Community geändert.
Ich danke Ihnen für Ihre Hilfe:
Eine Werbezeile für den Zinc Prod- Podcast, in der wir diesen Artikel thematisch diskutieren.