Themen für Abschlussarbeiten sind in der Regel im Umfeld der aktuellen Forschungsaktivitäten der Abteilung angesiedelt, im Umfeld verteilter Speichersysteme (BigData/Graph-Verarbeitung in Cluster-/Cloud-Umgebungen). Auch eigene Themenvorschläge können berücksichtigt werden, sofern sie thematisch zum Abteilungsprofil passen. Eine Liste möglicher Themen findet sich am Ende der Seite.
Wenn Sie sich bezüglich eines möglichen Themas informieren möchten oder einen eigenen Themenvorschlag haben, sprechen Sie uns an!
Aktuelle Abschlussarbeitsthemen
BACHELOR
Beschreibung
In parallelen Anwendungen wird solch ein Puffer benötigt, wenn N Threads mit einem Thread kommunizieren möchten
Das Kommunikationsmuster entspricht N Schreibern und 1 Leser
Beispielsweise, wenn N Threads Netzwerknachrichten in einen Puffer schreiben und 1 Thread diese aggregiert herausnimmt und über einen Socket verschickt.
In dieser Arbeit soll ein derartiger Ringpuffer in Java implementiert und evaluiert werden (ohne Netzwerk).
Der Ringpuffer soll eine statische Anzahl gleich großer Nachrichten (Java-Instanzen) speichern können.
Der Zugriff auf der Ringpuffer soll einmal mithilfe von Sperren und einmal mit sperrfreier Synchronisierung realisiert werden.
Die Implementierung soll hinsichtlich dem Durchsatz und der Latenz evaluiert und optimiert werden
Sobald viele Threads gleichzeitig Speicher allozieren wollen, so müssen diese Anfragen synchronisiert werden. Hierzu können Sperren oder Spinlocks verwendet werden.
Je nachdem wie die Synchronisierung gelöst wurde kann die Skalierbarkeit hinsichtlich der Anzahl Threads dadurch sehr stark eingeschränkt werden
In der nachstehenden Publikation wurde ein skalierbares nicht-blockierendes Buddy-System veröffentlicht
In dieser Bachelorarbeit soll dieser Ansatz in Java für den Unsafe-Speicherbereich implementiert und anschließend evaluiert werden
Der Unsafe-Speicher wird außerhalb des Java-Heaps manuell verwaltet und damit auch außerhalb der Kontrolle des Garbage Collectors
Viele In-Memory Key-Value Stores verwenden zur Verwaltung des lokalen Speichers eine Hash-Tabelle für die Abbildung von der globalen ID (engl. key) auf eine lokale virtuelle Adresse.
Faster Hash Index ist ein solcher Ansatz, welcher es zudem ermöglicht die Hash-Tabelle dynamisch zu vergrößern
In dieser Bachelorarbeit soll dieses Konzepte in Java implementiert werden, einmal im Java Heap und einmal in Unsafe
Beide Ansätze sollen evaluiert und verglichen werden
Einige Key-Value Systeme verwalten den Arbeitsspeicher als ein Protokoll (engl. log)
Der Vorteil hierbei ist, dass es zu keiner Fragmentierung kommt, da neue Daten immer am Ende des Log angehängt werden. Damit dies nebenläufig auf Multicore-Rechnern möglich ist, verwenden manche Systeme mehrere Logs
Ein großer Nachteil entsteht, wenn Daten aktualisiert werden, da dann im Log mehrere Versionen gespeichert sind. Somit muss das Log irgendwann bereinigt werden (engl. cleaner). Dies kann nebenläufig erfolgen wozu das Log in Segmente unterteilt wird und dann die Bereinigung segmentweise erfolgt.
Damit schneller Daten eingefügt werden können, wurden
Wie bei allen Systemen wird eine Abbildung des Keys in das Log benötigt.
In dieser Projektarbeit sollen zunächst recherchiert werden welche Konzepte es gibt, mit welchen Vor- und Nachteilen. Zudem sollen bestehende Lösungen experimentell untersucht werden und ein Ansatz in Java-Unsafe implementiert werden.
Ziel der Arbeit ist es, den Linear Road Benchmark, der auf veraltete Linux- und Perlpakete zurückgreift, in Java neu zu implementieren und mit Apache Flink zu testen.