SystemCall

Forschungspodcast über Betriebssysteme

Mit
  • Stefan Naumann
  • Florian Rommel

SC(6): Exokerniges Dateihandling und Threadpooling

Mit Stefan Naumann, Florian Rommel

Im SystemCall Podcast beschäftigen wir uns mit aktueller Betriebssystemforschung - diesmal besprechen wir zwei Vorträge vom Fachgruppentreffen Betriebsyssteme in Hamburg. Florian stellt eine Art exokerniges Dateihandling vor, wo das Betriebssystem so wenig wie möglich Funktionalität beisteuert. Stefan stellt dar warum die Größe von Threadpools nicht händisch bestimmt werden sollte und beschreibt ein System nachdem die Anzahl der Threads dynamisch anhand Systemparameter eingestellt wird.

Ein Exokernel ist eine Betriebssystemarchitektur, bei der der Betriebssystemkernel die minimale Funktionalität bereitstellt und ansonsten die Userspace Anwendungen alle Aufgaben der Abstraktion übernehmen müssen. Im vorgestellten Vortrag wurde gezeigt, dass aktuelle implizite Ansätze mit Dateien auf Linux zu arbeiten, eine SSD kaum auslasten könnten, d.h. mmap-Rufe und vor allem das Freigeben von Speicher mit madvice sind zu langsam. Mit expliziten Systemrufen wie read und write wäre das aber möglich, das ist aber aufwändig, besonders sich zu merken auf welchen Adressen welche Daten der Datei stehen. Also wurde ein System vorgestellt, wo durch ein Kernelmodul physischer Hauptspeicher fest reserviert wird und Anwendungen zur Verfügung gestellt wird. Diese können dann explizit Dateiseiten einlesen und an die richtige Stelle im Hauptspeicher schreiben. Wird der Speicher nicht mehr benötigt kann er mit madvice zurückgegeben werden; beim nächsten Zugriff erhält die Anwendung dann wieder neuen Speicher vom Kernelmodul und die Anwendung kann die Seite erneut einlesen.

Threadpools zeichnen sich dadurch aus, dass ahead-of-time also bevor sie eigentlich gebraucht werden, eine Menge an Threads erzeugt werden, die solange leerlaufen bis es Aufgaben (also Tasks) für sie gibt. Viele Anwendungen schreiben sich eigene Threadpool-Bibliotheken und verlangen vom Endnutzer, dass die richtige Anzahl Threads statisch eingestellt wird. Das ist aufwändig und teilweise sinnlos, besonders wenn die Anwendung aus mehreren unterschiedlichen Phasen besteht (bspw. einlesen großer Datenmengen, lange Berechnungen, zurückschreiben). Es wird ein System vorgestellt, wo ein Controller das Einstellen der richtigen Anzahl von Threads übernimmt. Dabei wird der Durchsatz der Festplatte verwendet um Bottlenecks zu erkennen und ein Bergsteigeverfahren angewandt um eine gute Anzahl Threads für die aktuelle Situation zu finden.

Links

J. Timm & J. S. Rellermeyer, Why Multi-Threading Should No Longer Be a DIY Job. Tagungsband des FG-BS Frühjahrstreffens 2022. Bonn: Gesellschaft für Informatik e.V.. DOI: 10.18420/fgbs2022f-02

Programm des Fachgruppentreffens

Intro-/Outrotheme

the_emergent