Process aware interrupt scheduling and accounting

Post on 29-Jun-2015

48 views 0 download

Tags:

description

Apresentação sobre o artigo "Process-Aware Interrupt Scheduling and Accounting" de Zhang, Yuting e Richard West.

Transcript of Process aware interrupt scheduling and accounting

Process-Aware Interrupt Scheduling and

AccountingDaniel Carvalho, Gustavo Carvalho, Luiz

Romário e Manoel Neto

Tratamento de interrupções geral

Process-Aware framework

Serviços de Interrupção e Algoritmos de Contabilidade

● Algoritmo de Contabilidade de Interrupções

○ Algoritmo de compensação baseado no tempo usado nas interrupções

● Algoritmo de Escalonamento de Interrupções

○ Escalonamento baseado na prioridade do processo ativo em relação ao processo que requeriu interrupção

Visão geral do processo de contabilidade

● Temporizador de Interrupções

○ Um tick de clock está entre 1 - 10ms no Linux x86

● Tempo de execução de um I/O

○ Geralmente menor que 1 tick de clock

○ Para contabilizar corretamente o tempo de execução, é necessário utilizar instruções que verifiquem o temporizador em cilcos de CPU (rdtsc no Linux x86)

Algoritmo de Compensação (1)

● Medir o tempo de execução de uma bottom half

● Medir o número total de interrupções processadas e o número de interrupções em nome de cada processo

● Ajuste do tempo de sistema cobrado para cada processo

Algoritmo de Compensação (2)

● t - tempo (clock do sistema)

● N(t) - número de interrupções cujo tempo total de execução é um tick de clock

● m(t) - número de interrupções processadas no último tick de clock

● xk (t) - número de interrupções não contabilizadas ao processo Pk.

Algoritmo de Compensação (3)

Algoritmo de Compensação (4)

Exemplo:

Algoritmo de Escalonamento de Interrupções (1)

● Encontrar os candidatos

● Prever o processo associado com a interrupção

● Escalonar a metade inferior

Algoritmo de Escalonamento de Interrupções (2)

Implementação

● Modificações no kernel Linux;

● Focado em recebimento de pacotes de rede;

● softirqs representa o bottom-half;

Implementação do interrupt accounting algorithm

● Tempo de execução dos bottom-halves são medidos em cada execução;

● Quanto o socket apropriado é encontrado pro pacote, o processo correspondente é conhecido;

● Calcula-se o tempo gasto no bottom-half e recalcula o timeslice dos processos de acordo;

Implementação do algoritmo de escalonamento de interrupções

● Implementado na função do_softirq();

● Antes do net_rx_action(), checa-se os possíveis softirqs, comparando as prioridades dos seus processos correspondentes com a do processo atual;

● Executa imediatamente se for mais prioritário ou aguarda momento apropriado caso contrário;

Experimentos

● Um processo UDP-server recebendo pacotes rodando concorrentemente com outro processo CPU-bound em uma máquina;

● Outro processo UDP-client que envia pacotes frequentemente em outra máquina;

● Comparação usando kernel Linux-2.6.14 e sua versão modificada com algoritmos apresentados;

Resultados(Accounting Algorithm Only)

Resultados(Accounting Algorithm Only)

Resultados(Accounting and Interrupt Scheduling Algorithm)

Resultados(Accounting and Interrupt Scheduling Algorithm)

(Rajadas)

Resultados(Accounting and Interrupt Scheduling Algorithm)

Referência

Zhang, Yuting, and Richard West. "Process-Aware Interrupt Scheduling and Accounting." RTSS. Vol. 6. 2006.