Versionen im Vergleich

Schlüssel

  • Diese Zeile wurde hinzugefügt.
  • Diese Zeile wurde entfernt.
  • Formatierung wurde geändert.

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.


Info

Wenn Sie sich bezüglich eines möglichen Themas informieren möchten oder einen eigenen Themenvorschlag haben, sprechen Sie uns an!





Aktuelle Abschlussarbeitsthemen


Wir vergeben i.d.R. Themen nach Absprache. In einem ersten Gespräch versuchen wir eine Themenrichtung zu finden, zu der Sie dann Informationsmaterial erhalten und in einem zweiten Gespräch wird dann ein Thema in dieser Richtung gesucht. 

Wichtig, es muss ein Bezug zu Betriebssystemen und/oder (moderner) Hardware vorhanden sein. Reine Webanwendungen suchen wir nicht. 

Nachstehend sind ebenfalls mögliche Themen.

Erweitern
titleJava Direct Flight
Erweitern
titleRDMA transport for netty
Status
colourBlue
titleMASTER
  StatuscolourRedtitleProjekt
Panel
borderStyledashed
titleBeschreibung
  • Netty ist ein Client-Server-Framework für Java-Anwendungen
  • Es unterstützt verschiedene Transport-Protokolle (blockierend und asynchron) und wird in zahlreichen Projekten verwendet, u.a. Apache Spark und Flink
  • In dieser Arbeit soll ein RDMA-basierter Transport für netty entwickelt werden
Panel
borderStyledashed
titleReferenzen

https://netty.io/

Erweitern
titleJava-Anbindung für UCX mit Hilfe von Panama
StatuscolourRedtitleProjekt Panel
borderStyledashed
titleBeschreibung
  • Panama soll zukünfitg JNI und Unsafe in Java ersetzen und den Zugriff auf native Bibliotheken und Hardware vereinfachen
  • Der Observatory-Benchmark hat zum Ziel Java-basierte InfiniBand-Bibliotheken zu evaluieren und zu vergleichen.
  • Für Open UCX ist ein rudimentäres Java-Binding vorhanden, welches im Rahmen dieser Arbeit optimiert werden soll  Erweitern
    titleOpenUCX - InfiniBand-Benchmarking
    StatuscolourGreentitleBachelor Panel
    borderStyledashed
    titleBeschreibung
  • In dieser Bachelorarbeit soll der Observatory-Benchmark (entwickelt von der HHU) erweitert werden, sodass auch Open UCX evaluiert werden kann.
  • Open UCX ist ein Kommunikationsframework, welches transparent verschiedene Netzwerktechologien unterstützt u.a. auch InfiniBand
  • Der Observatory-Benchmark hat zum Ziel Java-basierte InfiniBand-Bibliotheken zu evaluieren und zu vergleichen.
  • Für Open UCX ist ein rudimentäres Java-Binding vorhanden, welches im Rahmen dieser Arbeit optimiert werden soll  Erweitern
    titleTestframework für eine Speicherverwaltung
    StatuscolourGreentitleBachelor
    Panel
    borderStyledashed
    titleBeschreibung
    • In dieser Bachelorarbeit soll ein kleines Testframework für eine C-basierte Speicherverwaltung entwickelt werden.
    • Benötigt wird dieses Testframework für den Lehrbetrieb bei dem in einigen Modulen eine Speicherverwaltung in C implementiert wird
    • Das Testframework soll in C oder C++ geschrieben werden und mithilfe verschiedern Allokations- und Freigabemuster eine Speicherverwaltung (Funktionen: malloc und free) testen.
    • Neben der Zuverlässigkeit sollen auch Aspekte der internen und externen Fragmentierung und ggf. auch Performance berücksichtigt werden.
    Erweitern
    titleConcurrent Log-Structured Memory
    Status
    colourBlue
    titleMASTER
     

    Status
    colourRed
    titleProjekt

    Panel
    borderStyledashed
    titleBeschreibung
    • 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.

    Panel
    borderStyledashed
    titleReferenzen

    Concurrent Log-Structured Memory for Many-Core Key-Value Stores

    Log-structured Memory for DRAM-based Storage

    Erweitern
    titleConcurrent Buddy Allocator
    StatuscolourGreentitleBachelor
    Panel
    borderStyledashed
    titleBeschreibung
    • 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

    Panel
    borderStyledashed
    titleReferenzen

    A Non-blocking Buddy System for Scalable Memory Allocation on Multi-core Machine

    Erweitern
    titleBlockCache for hhuOS
    StatuscolourGreentitleBACHELOR
    Panel
    borderStyledashed
    titleBeschreibung
    • hhuOS ist ein kompakter Betriebssystem für die Lehre
    • Es ist ein multitaskingfähiges 32-Bit Betriebssystem für x86 Prozessoren

    • Geschrieben ist hhuOS in C++ und C

    • In dieser Bachelorarbeit soll ein einfaches Dateisystem für hhuOS geschrieben werden.
    • Die Integration erfolgt über die vorhandene VFS-Schnittstelle
    Panel
    borderStyledashed
    titleReferenzen

    Weitere Informationen zu hhuOS finden sich hier.

    Erweitern
    titleInfiniBand Monitoring GUI
    StatuscolourGreentitleBACHELOR
    Panel
    borderStyledashed
    titleBeschreibung
    • Auf Basis einer bestehenden Bibliotheken zur Überwachung von InfiniBand-Netzwerken soll eine grafische Oberfläche erstellt werden, welche diese Daten aufbereitet und übersichtlich darstellt

    • Die Oberfläche kann beispielsweise mit Grafana erstellt werden
    • Die Bibliothek ist in C++ und Java verfügbar
    Panel
    borderStyledashed
    titleReferenzen

    Detector: A small library for reading the performance counters of all InfiniBand devices in a network

    jDetector: A JNI-wrapper for Detector

    Grafana: The open observability platform

    Erweitern
    titleTCP/IP for hhuOS
    StatuscolourGreentitleBACHELOR
    Panel
    borderStyledashed
    titleBeschreibung
    • In dieser Bachelorarbeit soll eine bestehende TCP/IP-Implementierung auf hhuOS portiert werden
    • Es gibt beispielsweise kompakte Implementierungen aus dem Embedded Bereich, beispielsweise uIP, siehe unten.
    • In hhuOS ist ein Ethernet-Treiber vorhanden
    Panel
    borderStyledashed
    titleReferenzen

    Weitere Informationen zu hhuOS finden sich hier.

    Und zu uIP aus Contiki hier.

    Erweitern
    titleStructured access to native memory in Java
    StatuscolourGreentitleBACHELORJava wird häufig auch für die Entwicklung von Big-Data-Systemen verwendet. Hierbei werden die zu verarbeitenden Daten aus Geschwindigkeitsgründen oft außerhalb des Java-Heaps verwaltet wofür die Klasse Unsafe verwendet werden kann. Hiermit kann der Speicher aber nur umständlich wortweise gelesen und geschrieben werden. Es gibt einige Projekte die einen strukturierten Zugriff auf Speicher außerhalb des Java-Heaps realisieren. Graal VM ist beispielsweise eine solche Lösung von Oracle. Im Rahmen dieser Bachelorarbeit soll recherchiert werden, welche weiteren relevanten Ansätze es gibt. Die Techniken für den strukturierten Speicherzugriff sollen beschrieben und in Experimenten evaluiert und verglichen werden.

    Project JDFlight (Java Direct Flight) aims at providing ultra-fast networking for Java-based big-data applica?ons, which rely on Apache Arrow [1], a unified columnar inmemory data format. This shall be achieved by implementing a transport compatible with Apache Flight, based on UCX, providing Remote Direct Memory Access (RDMA) to Apache Arrow buffers using project Panama.

    Panel
    borderStyledashed
    titleReferenzen
    Graal: cornerwingsgithub.io/2018/07/graal-native-methods/JNA: githubcom/java-native-access/jna
  • Javalution: https://github.com/javolution/javolution
  • Erweitern
    titleInterfacing with Native Code from Java
    Status
    colourBlue
    titleMASTER
      StatuscolourRedtitlePROJEKT

    Java bietet seit Version 1.4 die Möglichkeit nativen Code mittels des Java Native Interfaces aufzurufen. Hierfür wird in der Regel von Hand geschriebener Code ("Glue Code") benötigt, welcher die Verbindung zwischen Java und dem nativen Teil des Programms herstellt. Da diese Art nativen Code aufzurufen mit einem gewissen Overhead zur Laufzeit verbunden und innerhalb der Community nicht gerne gesehen ist, wird seit 2014 an einer neuen Methode im Project Panama gearbeitet. Anders als beim Java Native Interface, muss bei Project Panamas Foreign Function Interface kein Glue Code geschrieben werden, sodass native Methoden direkt über MethodHandles aufgerufen werden können. Zusätzlich bietet das Projekt ein Tool zur Extraktion von Java-Bindings aus Header-Dateien an. Ziel dieser Arbeit ist die Evaluierung der durch Project Panama bereitgestellten Schnittstellen unter Nutzung des Benchmark-Tools JMH.

    Panel
    borderStyledashed
    titleReferenzen
  • Project Panama : https://openjdk.java.net/projects/panama/
  • jextract : http://cr.openjdk.java.net/~mcimadamore/panama/jextract_distilled.html
  • OpenJDK (foreign-jextract): https://github.com/openjdk/panama-foreign
  • JMH: https://openjdk.java.net/projects/code-tools/jmh