process aware interrupt scheduling and accounting
DESCRIPTION
Apresentação sobre o artigo "Process-Aware Interrupt Scheduling and Accounting" de Zhang, Yuting e Richard West.TRANSCRIPT
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.