Projeto de Formatura – Turmas 2009 PCS - Departamento de Engenharia de Computação e Sistemas Digitais Engenharia de Computação Otimização do escalonador de processos para aplicações soft real-time em sistemas multi-core com tarefas colaborativas Motivação Concepção A necessidade de tarefas real-time em dispositivos comuns O primeiro passo para um estudo das otimizações possíveis é uma análise de do nosso dia-a-dia vem aumentando a cada dia: seja para benchmarks das aplicações que se quer otimizar. Utilizando ferramentas como processamento de áudio e vídeo, que têm uma perf, oprofile, ftrace, sched_switch e gtkwave é possível ter uma visão bem determinada exigência no tempo gasto para processar próxima do que está acontecendo dentro do kernel do sistema operacional. cada frame ou pedaço de áudio, seja para o controle Particularmente nosso interesse é saber como, quando e em qual processador de dispositivos físicos como motores elétricos presentes cada tarefa é alocada. em impressoras, portões eletrônicos, vidros elétricos, etc. Por outro lado, a utilização de sistemas projetados especificamente para essas tarefas envolvem gastos exorbitantes e muitas vezes proibitivos para o sucesso de produtos no mercado. Como conseqüência, a adaptação de sistemas operacionais general purpose, como o Linux, vem sendo pesquisada e realizada por diversas empresas e pela Academia para que possa ser utilizado nesse tipo de tarefa. Objetivo O objetivo desse projeto é estudar as diversas otimizações que podem ser feitas no escalonador de processos do sistema operacional Linux para tarefas com exigências real-time. Para a utilização de sistemas com vários processadores (ou vários núcleos em um mesmo processador), a aplicação real-time é tipicamente dividida em diversas tarefas menores que colaboram entre si, sendo cada uma responsável pelo processamento de uma determinada parte da informação. Otimizações realizadas: Diminuir o tempo necessário para uma tarefa sair do estado de dormindo para o estado de rodando; Mover as tarefas para perto de onde os dados estão sendo produzidos. Devido à organização de memória em uma arquitetura multi-core, aumenta a probabilidade de os dados necessários estejam no cache local de mais baixo nível. Em última instância, o tempo de execução de cada tarefa é diminuído; Produtor 1 Quando uma tarefa está deixando o processador é melhor “acordar” a próxima tarefa no mesmo processador do que colocá-la em um outro: Mixer 1 entre outros fatores, há uma redução na quantidade de sincronizações Produtor 2 (mutexes e spinlocks) necessários dentro do kernel. Mixer final Produtor 3 Conclusões Os resultados dos benchmarks realizados utilizando as otimizações mostram Mixer 2 que é possível melhorar o desempenho e o determinismo no escalonamento de processos do sistema operacional Linux em aplicações com tarefas Produtor 4 colaborativas. O determinismo no tempo de execução de cada tarefa é particularmente importante para tarefas real-time e pôde ser melhorado através das soluções apresentadas neste trabalho. Autor: Lucas Martins De Marchi ([email protected]) Orientadora: Prof.ª Dra. Liria Matsumoto Sato ([email protected])