Main page Research activities Publications Talks MSc thesis projects Hobby and spare time Write me This site uses
Google Analytics
Last updated on
24 February 2018

Available MSc thesis topics

This is a list of the available thesis topics, within the scope of my research interests, that may be undertaken by students about to finish their academic career path towards a MSc in Computer Engineering or Computer Science or similar (e.g., the MSc in Embedded Computing Systems or the MSc in Computer Science and Networking jointly offered by University of Pisa and Scuola Sant'Anna), who might be interested in developing their MSc thesis project at the Real-Time Systems Laboratory (ReTiS) of Scuola Superiore Sant'Anna in Pisa.

If you are interested into one of the available topics, please send me and e-mail.

For a list of completed thesis projects, please refer to the dedicated page.

Mechanisms for efficient communications among containers in Cloud Computing and NFV
More and more software components and services are deployed nowadays over shared infrastructures, either as available at a public cloud provider, or in-house within private cloud data centres. In this context, OS-level virtualization mechanisms, such as Linux Containers (LXC), Dockers or others, are growing in demand and popularity as deployment and isolation mechanisms, thanks to their increased efficiency in resource usage, when compared with traditional machine virtualization techniques. Containers are becoming a fundamental brick in novel architectures for distributed fault-tolerant components, which are increasingly based on micro-services. This is a development trend where monolithic software is split into a multitude of smaller services, which can be independently designed, developed, deployed and scaled out as collections of containers, enhancing reliability of the overall solution, adding a higher degree of flexibility in the management of the underlying physical resources needed at run-time.
Current middleware solutions for communications among containers involve an extensive use of networking protocols, often based on TCP/IP, HTTP, XML-RPC, JSON-RPC, SOAP or others, for letting different container environments communicate with each other, often leading to an excess of overheads. The purpose of this thesis proposal is the one to investigate on more efficients mechanism, particularly with services that end-up co-located onto the same physical hosts, with a use-case focused on either distributed multimedia processing, or virtualized network functions in a NFV infrastructure.

Requirements

Strong programming skills in C/C++ and Python, solid knowledge of concurrent programming and OS primitives for inter-process communications (IPC) and synchronization.

Benefits

The student will have a good opportunity to refine his/her skills in the above fields, and gain a unique experience with developing distributed services over shared physical infrastructures, building a practical experience on advanced OS concepts, which are fundamental in the ICT (Information and Communications Technology) industry.

Industrial collaborations

This thesis proposal is framed in the context of a long-standing industrial collaboration with Ericsson, Stockholm (Sweden).
Fault-tolerant replication log with real-time performance and high reliability
NoSQL data-base services are taking momentum in cloud and distributed computing as a key technology enabling scalable and real-time applications to store and retrieve data according to precise timing, consistency and availability requirements (that can be formalized in a SLA -- service-level agreement).
A key component of such a system is the replication log, guaranteeing a consistent view on the sequence of operations to perform on each data object. Realizing a fault-tolerant replication log with high availability and consistency, yet predictable performance, presents a variety of technical challenges spanning across software engineering, concurrent programming, operating systems and kernel internals, including CPU and disk scheduling.
In this thesis, we propose the design and realization of a fault-tolerant, real-time replication log with minimum functionality.

Requirements

The student shall have strong programming skills in C/C++ and/or Java, experience with concurrent/multi-threaded programming, solid knowledge and understanding of computer architectures and their performance implications, operating systems internals and Linux, and be familiar with developing distributed software.

Benefits

The student will have a good opportunity to refine his/her skills in the above fields, and gain a unique experience with developing distributed, fault-tolerant, real-time software components, which are fundamental in the ICT (Information and Communications Technology) industry.
Improvements to the SCHED_DEADLINE Linux process scheduler for real-time multimedia
The Linux kernel has been recently enriched with SCHED_DEADLINE, an EDF-based process scheduler that is particularly promising for real-time and multimedia workloads. The scheduler exhibits a minimum set of features, but several extensions are possible for various use-cases. In this project, the student will design and realize extensions suitable to support a specific multimedia-oriented use-case (e.g., when using the JACK architecture for low-latency audio, or the new AAudio API for low-latency audio processing on Android), and will adapt user-space application components to gain advantage of the enriched scheduler.

Requirements

The student shall have strong programming skills in C/C++, experience with concurrent/multi-threaded programming, solid knowledge and understanding of computer architectures and their performance implications, operating systems internals and Linux, and be familiar with developing kernel-level software.

Benefits

The student will have a good opportunity to refine his/her skills in the above fields, and gain a unique experience with developing real-time multimedia-oriented systems.

Industrial collaborations

In this area, we have long-standing industrial collaborations with Arm, Cambridge, UK and RedHat.
Real-time spectrum analyzer for audio signals empowered by Artificial Intelligence
The project consists in realizing a spectrum analyzer for audio signals which applies neural networks in order to recognize common sound patterns. The project may undertake various directions in view of the interests and skills of the candidate. For example, the software might be able to recognize the tones of notes played by an instrument (realizing a real-time sound to MIDI component), or it might recognize different types of sound types or sound patterns, or it might even venture into the land of voice recognition. The project might be realized as a Qt or Gnome desktop application, using the JACK framework for low-latency audio or the Advanced Linux Sound Architecture (ALSA) sound library on Linux, or it might be realized as an Android application for smartphones and tablets using the new AAudio API for low-latency audio processing on Android. For recognition of sounds and/or sound patterns, the project might rely on machine-learning, neural networks and/or traditional optimization techniques.

Requirements

The student shall be fluent in C/C++ and/or Java programming and be familiar with the development of applications with a Graphical User Interface (GUI).

Benefits

The student will gain insightful knowledge about how to build real-time audio processing applications, enhanced with a GUI either on desktop or Android systems.
Predicibilità temporale di applicazioni real-time distribuite e virtualizzate
Negli ultimi anni le tecnologie di virtualizzazione si stanno imponendo come una soluzione efficace per fornire servizi software anche complessi ad applicazioni distribuite. Le suddette tecnologie permettono di astrarre la reale macchina fisica su cui avvengono le elaborazioni, creando un insieme di macchine virtuali (VM) e permettendo quindi di eseguire più di un sistema operativo (con relative applicazioni) sulla stessa macchina fisica. Sfortunatamente, però, le tecnologie di virtualizzazione attualmente esistenti sono spesso inadeguate per supportare applicazioni con vincoli temporali e non permettono di garantire stabilmente all'utente finale dei livelli di qualità del servizio prefissati. Oggigiorno, molte applicazioni distribuite richiedono tempi di risposta limitati e predicibili per poter fornire i propri servizi in modo corretto: ad esempio, applicazioni di realtà virtuale, telepresenza o generalmente per la collaborazione on-line, che richiedono di acquisire, elaborare e visualizzare dati con una temporizzazione abbastanza precisa.
Il problema di garantire una quantità sufficiente di risorse, e con la giusta granularità temporale, a questo tipo di applicazioni diventa ancor più spinoso a causa delle interferenze che possono crearsi fra VM che impegnano risorse diverse, tipicamente di elaborazione e di rete. Ad es., una VM con un traffico di I/O pesante può influenzare negativamente la performance di elaborazione di altre VM.
In questa tesi, si propone di investigare sulle problematiche che impediscono di avere una performance real-time e predicibile di componenti software virtualizzate, nonché di sperimentare alcuni dei meccanismi per l'isolamento temporale all'avanguardia nel mondo dei sistemi soft real-time.

Requisiti.

Ottima conoscenza del linguaggio C, dello stack TCP/IP, e dei cosiddetti "server" nella letteratura degli scheduler real-time. Buona dimestichezza con il Sistema Operativo Linux, interesse per la sperimentazione di feature non standard del kernel.

Benefici.

Lo studente avrà l'opportunità di applicare concretamente alcuni aspetti della teoria dei sistemi real-time, nel contesto estremamente spinoso delle applicazioni real-time distribuite virtualizzate, utilizzando meccanismi per l'isolamento temporale che costituiranno le fondamenta per il supporto alla Quality of Service nei Sistemi Operativi di domani. Inoltre, prenderà dimestichezza con strumenti di virtualizzazione come KVM, che sono alla base delle infrastrutture di rete allo stato dell'arte.
Simulation of Cloud Computing infrastructures
Missing description
Sistemi Operativi e scheduling per sistemi multicore scalabili
I sistemi multicore stanno prendendo piede ad un ritmo incalzante. In un prossimo futuro, il mondo del computing sarà dominato da dispositivi mobili che costituiranno il punto d'accesso ad applicativi completamente distribuiti messi a disposizione remotamente da opportuni provider. Le applicazioni di Cloud Computing di domani faranno largo uso di sistemi massicciamente paralleli, i cosiddetti sistemi many-core, per i quali i Sistemi Operativi di oggi risultano inadeguati per una gestione ottimale delle risorse.
In quest'ambito si propone di investigare su problematiche di scalabilità a livello di kernel di Sistema Operativo. In particolare, le possibilità di lavori di tesi in quest'area sono molteplici:
  • simulazione dell'impatto sulle applicazioni di modelli di kernel innovativi recentemente apparsi in letteratura con obiettivi di scalabilità rispetto al numero di core, che ad esempio impongono un partizionamento delle funzionalità sui core disponibili, riducendo le contese per l'accesso a strutture dati condivise del kernel; la simulazione dovrebbe tener conto dell'impatto della topologia dell'hardware interconnect sulle comunicazioni fra i diversi core, sia esplicite (inter-core interrupt) che implicite (protocolli di coerenza delle cache);
  • algoritmi di scheduling distribuiti che scalino su migliaia di core, con politiche di load-balancing basate su una conoscenza solamente parziale dello stato del sistema; eventualmente, si potrà esplorare la possibilità di utilizzo in tale ambito di concetti dal mondo dei sistemi peer-to-peer, e dei protocolli di gossip;
  • modifiche al kernel del Sistema Operativo Linux per il miglioramento di aspetti legati alla scalabilità in funzione del numero di core disponibili; ad esempio, riprogettazione di alcune strutture chiave del kernel che sono condivise in maniera tale da ridurre la contesa fra i molti core che vi accedono, modifiche allo scheduler e alla logica di load balancing per un maggior disaccoppiamento delle operazioni svolte da ciascun core, partizionamento delle risorse hardware disponibili fra istanze indipendenti (e possibilmente eterogenee) del kernel, ecc.

Requisiti.

In generale, per tutte le tesi che si collocano in quest'area, è necessaria un'ottima conoscenza dei sistemi operativi e delle architetture dei calcolatori. Inoltre, per ciascuna proposta di tesi specifica, possono essere richieste ulteriori conoscenze e capacità individuali.

Benefici.

Lo studente avrà l'opportunità di acquisire competenze ed esperienza nel mondo del calcolo parallelo, della programmazione concorrente e distribuita, del supporto a livello di Sistema Operativo per sistemi massicciamente paralleli, con particolare riferimento alla progettazione di algoritmi di scheduling e primitive di sincronizzazione scalabili ed efficienti.

Main page Research activities Publications Talks MSc thesis projects Hobby and spare time Write me Last updated on
24 February 2018