Title: | A task-based execution engine for distributed operating systems tailored to lightweight manycores with limited on-chip memory |
Author: | Souto, João Vicente |
Abstract: |
Processadores lightweight manycore surgiram para conciliar os requisitos de desempenho, eficiência energética e escalabilidade um único chip. Sistemas Operacionais (SOs) para essa classe de processadores apresentam um design distribuído, onde instâncias isoladas do SO cooperam para mitigar problemas de programação e portabilidade provenientes de suas complexidades arquitetônicas. Atualmente, serviços do SO geralmente recorrem a abstrações de fluxo de execução tradicionais (processos ou threads) para implementar funcionalidades pequenas, periódicas ou assíncronas. Embora essas abstrações simplifiquem consideravelmente o projeto do sistema, elas têm um impacto inegociável nas limitadas memórias presentes no chip. Devido às restrições de memória, argumentamos que as abstrações no nível do SO podem ser reformuladas para reduzir o consumo de memória do SO, sem introduzir uma sobrecarga considerável. Neste contexto, propomos um motor de execução complementar ao nível do SO que suporta tarefas leves e cooperativas que compartilham uma única pilha de execução e possuem recursos de sincronização por meio de grafos de fluxo de controle e dependência. Essa solução é ortogonal ao suporte de execução subjacente e fornece uma quantidade significativa de fluxos de execução no nível do SO com consumo de memória reduzido. Implementamos nosso motor em um SO distribuído e executamos experimentos em um lightweight manycore real. Nossos resultados mostram que o motor proposto possui as seguintes vantagens quando comparada à abstração clássica de thread: (i) fornece 63,2 vezes mais fluxos de execução por MB de memória; (ii) apresenta menor sobrecarga para gerenciar fluxos de execução e chamadas de sistema; (iii) melhora a utilização do núcleo dedicado ao SO; e (iv) apresenta resultados competitivos em aplicações do mundo real. Abstract: Lightweight manycore processors arose to reconcile performance, energy efficiency, and scalability requirements on a single chip. Operating Systems (OSes) for these processors feature a distributed design, where isolated OS instances cooperate to mitigate programmability and portability issues coming from their architectural intricacies. Currently, OS services often resort to traditional execution flow abstractions (processes or threads) to implement small, periodic, or asynchronous functionalities. Although these abstractions considerably simplify the system design, they have a non-negotiable impact on the limited on-chip memories. Due to the memory restrictions, we argue that OS-level abstractions can be reshaped to reduce the OS memory footprint without introducing considerable overhead. In this context, we propose a complementary OS-level execution engine that supports cooperative lightweight tasks that share a unique execution stack and features task synchronization via control flow and dependency graphs. This solution is orthogonal to the underlying execution support and provides numerous OS-level execution flows with reduced memory consumption. We implemented our engine in a distributed OS and executed experiments on a lightweight manycore. Our results show that it has the following advantages when compared to the classical thread abstraction: (i) it provides 63.2 times more execution flows per MB of memory; (ii) it features less overhead to manage execution flows and system calls; (iii) it improves core utilization; and (iv) it exhibits competitive results on real-world applications. |
Description: | Dissertação (mestrado) - Universidade Federal de Santa Catarina, Centro Tecnológico, Programa de Pós-Graduação em Ciência da Computação, Florianópolis, 2022. |
URI: | https://repositorio.ufsc.br/handle/123456789/237421 |
Date: | 2022 |
Files | Size | Format | View |
---|---|---|---|
PGCC1217-D.pdf | 2.720Mb |
View/ |