Titulo Estágio
Runtime-Agnostic Concurrency Manager
Áreas de especialidade
Engenharia de Software
Sistemas Inteligentes
Local do Estágio
DEI
Enquadramento
Nowadays most computers are built on multicore processors. Multicore processors scale from high-end servers with 32 hardware threads to pocket-size quad-core smartphones. Thus, programmers must write parallel programs to speed up their programs.
If we look at production systems, several applications already support parallelism. Some examples are web-servers (Apache, Nginx, ...) and databases (Oracle, Postgres, ...). These applications distribute their work across all threads of the machine, to improve performance. The problem is that they consider as available targets for threads all the processors on the machine, regardless of other applications running on the same machine. For instance: On a quad-core machine running both Nginx and Postgres, both applications take 4 threads, when the best would be for each one to occupy only 2, avoiding context-switching between threads.
Objetivo
The main objective of this project is to create a common runtime for managing the concurrency in multiple applications on the same host. It will include:
1 - A task scheduler implemented on top of native libraries (pthreads). This can be implemented using techniques based on ForkJoin, Pico Threads, Co-routines. This should support symmetric parallelism, divide and conquer parallelism and thread-per-socket models.
2 - An API exposing the scheduler to some runtimes. For this scope, the pthread API, the JVM Thread and the CPython threading module are good starting points.
Plano de Trabalhos - Semestre 1
17 Sep - 31 Oct
Review of the most recent approaches to this problem in the state of the art. Identification of the biggest challenges on this area.
1 Nov - 31 Nov
Approach - Definition of the requirements and work plan. Definition of the APIs provided by the system.
1 Dez - 31 Dez
Runtime backend implementation on OS threads using several strategies.
1 Jan - 28 Jan
Writing and reviewing of the first semester report.
Plano de Trabalhos - Semestre 2
15 Feb - 8 Mar
Creating of a PThreads API on top of the runtime.
9 Mar - 31 Mar
Evaluation of overhead/gains of running on top of the Runtime instead of the API.
1 Apr - 30 Apr
Implementation of a wrapper API for the JVM and for CPython.
1 May - 31 May
Evaluation of the platform running several parallel programs on different runtimes.
1 Jun - 28 Jun
Writing and reviewing of the dissertation.
Condições
The proposed work plan will be performed in the Systems and Software Engineering Group of CISUC, where the student will be given access to required hardware.
Observações
We are looking for a T-shaped student: he or she should be highly competent in systems programming in C, but should also be acquainted with higher level languages. A good understanding of parallel and concurrent programming is also desirable.
Este trabalho será co-orientado pelo Doutor Alcides Fonseca da Universidade de Lisboa.
Orientador
Bruno Cabral
bcabral@dei.uc.pt 📩