Resumen: | O processamento de streaming desempenha um papel vital em aplicações que exigem processamento contínuo de dados com baixa latência. Graças às suas extensas capacidades de processamento paralelo e custo relativamente baixo, as GPUs mostram-se adequadas para cenários nos quais tais aplicações requerem recursos computacionais substanciais. No entanto, o processamento em microlote torna-se essencial para uma computação eficiente em GPUs integradas a sistemas de processamento de streaming. O processamento em microlote introduz o desafio de encontrar tamanhos de lote apropriados para manter um nível de serviço adequado, especialmente em casos nos quais as aplicações de streaming enfrentam flutuações na taxa de entrada e carga de trabalho. Abordar esse desafio requer o ajuste do tamanho do lote em tempo de execução, o que pode ser feito por meio de autoadaptação. Nesta dissertação, avaliamos um conjunto de algoritmos autoadaptativos existentes e propostos para adaptação do tamanho do lote usando uma nova aplicação de processamento de streaming acelerada por GPU. Além disso, propomos um novo conjunto de métricas para ajudar a classificar e comparar os algoritmos de adaptação entre si em termos de qualidade de serviço sob diferentes perspectivas. Os resultados indicam que a aplicação testada e sua carga de trabalho altamente dinâmica representaram um desafio para algoritmos previamente avaliados em trabalhos relacionados, tornando-os 33% menos eficazes na manutenção da latência de microlote dentro dos requisitos de latência mais rigorosos. Os algoritmos atingiram um desempenho comparável na manutenção da latência dentro de níveis aceitáveis, na perspectiva dos elementos do stream.Além disso, com o conjunto certo de parâmetros, um de nossos algoritmos propostos pôde permanecer 40% mais próximo da latência alvo do que os outros algoritmos testados, devido à sua capacidade de combinar ajuste fino do tamanho do lote com reatividade. Stream processing plays a vital role in applications that require continuous, lowlatency data processing. Thanks to their extensive parallel processing capabilities and relatively low cost, GPUs are well-suited to scenarios where such applications require substantial computational resources. However, micro-batching becomes essential for efficient GPU computation within stream processing systems. Micro-batching introduces the challenge of finding appropriate batch sizes to maintain an adequate level of service, particularly in cases where stream processing applications experience fluctuations in input rate and workload. Addressing this challenge requires adjusting the batch size at runtime, which can be done by using self-adaptation. In this thesis, we evaluated a set of existing and proposed self-adaptive algorithms for micro-batch size adaptation using a new GPU-accelerated stream processing application. Furthermore, we proposed a new set of metrics to help rank and compare the adaptation algorithms among themselves in terms of quality of service from different perspectives. The findings indicate that the tested application and its highly dynamic workload proved challenging for the existing algorithms previously evaluated in related work, making them 33% less effective in maintaining micro-batch latency for the most strict latency requirements. Among themselves, the algorithms attained comparable performance in maintaining latency within acceptable levels in the perspective of the stream data items. Furthermore, given the right set of parameters, one of our proposed algorithms could stay 40% closer to the target latency than others due to its ability to combine batch size fine-tuning and reactivity. |