Experimentos envolvendo ações de Rejuvenescimento de Software

257 visualizações

Publicada em

Apresentação dia 13/07/2015 na UFU, como parte da avaliação da disciplina de Mestrado: "Tópicos Especiais: Envelhecimento e Rejuvenescimento de Software".

Publicada em: Software
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
257
No SlideShare
0
A partir de incorporações
0
Número de incorporações
2
Ações
Compartilhamentos
0
Downloads
2
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Experimentos envolvendo ações de Rejuvenescimento de Software

  1. 1. “Experimentos envolvendo ações de Rejuvenescimento de Software” Carlos Eduardo Dantas AE2 - Programa de Pós Graduação em Computação Universidade Federal de Uberlândia, Brasil 1
  2. 2. ROTEIRO • Ações de Rejuvenescimento de Software. • Experimentos com geração de Carga de Trabalho. 2
  3. 3. AÇÕES DE REJUVENESCIMENTO DE SOFTWARE • Objetivos • Executar ações de Rejuvenescimento de Software: Computer Reboot, Os Restart, Process Restart, Thread Restart e Component Restart; • Obter média e desvio padrão de 10 execuções; • Utilização de dois Sistemas Operacionais: Windows e Linux. • Ambiente de Teste • Intel Core i7 4510u com 8gb de RAM; • Sistemas Operacionais: Linux Ubuntu 14.04 e Windows 8.1; • Não foi utilizada virtualização; • Banco de dados Mysql utilizado como serviço em ambos os Sistemas Operacionais. 3
  4. 4. AÇÕES DE REJUVENESCIMENTO DE SOFTWARE • Experimento • Sistema servidor de Socket SSL; • Cada conexão recebida é armazenada no banco de dados; • Utilização do Pool de Conexões C3P0; • Sem necessidade de uma versão para cada Sistema Operacional • Dois fatores de Envelhecimento de Software: • Fechamento de conexões Socket SSL; • Conexões não fechadas com o banco de dados. 4
  5. 5. AÇÕES DE REJUVENESCIMENTO DE SOFTWARE • Experimento 5
  6. 6. AÇÕES DE REJUVENESCIMENTO DE SOFTWARE • Experimento 6
  7. 7. AÇÕES DE REJUVENESCIMENTO DE SOFTWARE • Experimento 7
  8. 8. AÇÕES DE REJUVENESCIMENTO DE SOFTWARE • Computer Reboot • Utilização do procedimento Cold Reboot; • Estratégia Best Effort; • Windows – Execução do comando shutdown /s, clicando em um botão do sistema; • Foram avaliadas outras opções, como gpedit; • Linux – Script adicionado em /etc/rc0.d 8
  9. 9. AÇÕES DE REJUVENESCIMENTO DE SOFTWARE • Computer Reboot • Windows 9 Usuário pressiona o botão de desligar Executa o comando shutdown /s Insere nova linha no banco de dados com o tempo Atualiza linha do banco de dados com data fim Executa Script ao iniciar o SO (shell:startup) Computador é desligado e posteriormente iniciado (cold reboot)
  10. 10. AÇÕES DE REJUVENESCIMENTO DE SOFTWARE • Computer Reboot • Linux 10 Usuário solicita desligamento do SO Executa script em /etc/rc0.d/K99Sist ema Insere nova linha no banco de dados com o tempo Atualiza linha do banco de dados com data fim Executa Script ao iniciar o SO /etc/rc2.d/S99Sist ema Computador é desligado e posteriormente iniciado (cold reboot)
  11. 11. AÇÕES DE REJUVENESCIMENTO DE SOFTWARE • Computer Reboot • Independente do Sistema Operacional, no evento de desligar, é adicionado um registro no banco de dados; • Quando o computador é ligado: • Linux – Script adicionado em /etc/rc2.d; • Windows – Script adicionado em Inicializar shell:startup 11
  12. 12. AÇÕES DE REJUVENESCIMENTO DE SOFTWARE • Computer Reboot • O Script executa uma classe Java que realiza o update no banco de dados. 12
  13. 13. AÇÕES DE REJUVENESCIMENTO DE SOFTWARE • OS Restart • Windows • Warm reboot; • Comando shutdown /r ao clicar no botão; • Linux • Fast Restart (kexec); • Script adicionado em /etc/rc6.d 13
  14. 14. AÇÕES DE REJUVENESCIMENTO DE SOFTWARE • Computer Reboot • Windows 14 Usuário pressiona o botão de reiniciar Executa o comando shutdown /r Insere nova linha no banco de dados com o tempo Atualiza linha do banco de dados com data fim Executa Script ao iniciar o SO (shell:startup) Computador é desligado e posteriormente iniciado (cold reboot)
  15. 15. AÇÕES DE REJUVENESCIMENTO DE SOFTWARE • Computer Reboot • Linux 15 Usuário solicita reinício do SO Executa script em /etc/rc6.d/K99Sist ema Insere nova linha no banco de dados com o tempo Atualiza linha do banco de dados com data fim Executa Script ao iniciar o SO /etc/rc2.d/S99Sist ema Computador é desligado e posteriormente iniciado (cold reboot)
  16. 16. Novo Processo AÇÕES DE REJUVENESCIMENTO DE SOFTWARE • Process Restart • Windows/Linux 16 Insere nova linha no banco de dados com o tempo Executa o Script de reiniciar o processo Executa system.exit(0); Atualiza linha do banco de dados com data fim
  17. 17. AÇÕES DE REJUVENESCIMENTO DE SOFTWARE • Thread Restart • Reinício da thread de acompanhamento das conexões; • Thread executa a cada 5 segundos, atualizando a tabela de conexões recebidas. 17 Usuário pressiona o botão de reiniciar thread Executa o comando thread.interrupt() lançando InterruptedException e “matando” a thread Insere nova linha no banco de dados com o tempo Cria uma nova thread e inicia a mesma. Atualiza linha do banco de dados com data fim
  18. 18. AÇÕES DE REJUVENESCIMENTO DE SOFTWARE • Thread Restart 18 Insere nova linha no banco de dados com o tempo Atualiza linha do banco de dados com data fim
  19. 19. AÇÕES DE REJUVENESCIMENTO DE SOFTWARE • Component Restart • Reinício do pool de conexões; • Cria um novo pool com os parâmetros mostrados na tela do sistema. 19 Usuário pressiona o botão de reiniciar pool O objeto javax.sql.DataSource recebe uma nova instância com os parâmetros da tela Insere nova linha no banco de dados com o tempo Atualiza linha do banco de dados com data fim
  20. 20. AÇÕES DE REJUVENESCIMENTO DE SOFTWARE • Component Restart • Uso do Design Pattern Singleton. 20 O objeto javax.sql.DataSource recebe uma nova instância com os parâmetros da tela Insere nova linha no banco de dados com o tempo
  21. 21. AÇÕES DE REJUVENESCIMENTO DE SOFTWARE • Resultados • Média e Desvio Padrão após 10 execuções de cada ação, em cada Sistema Operacional. 21 Ação Windows Linux Média(ms) Desvio Padrão(ms) Média(ms) Desvio Padrão(ms) Computer Reboot 119400 6719.78 32500 1957.89 Os Restart 101100 6436.87 17500 1957.89 Process Restart 892.7 80.98 363.5 18.3 Thread Restart 12.5 9.68 34.8 30.61 Component Restart 70.2 48.45 81.7 21.77
  22. 22. AÇÕES DE REJUVENESCIMENTO DE SOFTWARE • Análises • O Sistema Operacional Linux se sobressaiu em ações que envolvem atuação imediata no núcleo do SO; • Baixo desvio padrão para ambos os Sistemas Operacionais. • O Sistema Operacional Windows se sobressaiu em ações que envolvem ação interna da JVM (threads são a nível de usuário, ou seja, gerenciadas pela JVM); • Alto desvio padrão para ambos os Sistemas Operacionais. • Conhecer os fatores de envelhecimento são essenciais para realizar reboot em uma granularidade mais fina, pois existe uma grande diferença de tempo entre algumas ações. 22
  23. 23. EXPERIMENTOS COM GERAÇÃO DE CARGA DE TRABALHO • Objetivos • Conectar dois computadores H1 e H2 em rede, onde H1 gera uma carga de trabalho para A2 usando o Software Apache AB, com duração de 5 minutos; • Forçar as ações de rejuvenescimento em H2: Computer Reboot, OS Restart, Process Restart (stop + start) e Process Restart (graceful); • Medir o tempo de reinicialização, erros de reinicialização, tempo gasto por requisição, requisições com sucesso e com falha. • Ambiente de Teste • H1 - Intel Core i7 3770k com 8gb de RAM – Ubuntu 14.04; • H2 - Intel Core i7 4510u com 8gb de RAM – Ubuntu 14.04; • Ambos usando XAMPP versão 5.5.19; • Conectados pelo roteador Wireless Tp-link 54M G Adsl2+ Modem Router 23
  24. 24. EXPERIMENTOS COM GERAÇÃO DE CARGA DE TRABALHO • Experimento • Comando Apache AB executado por H1; 24
  25. 25. EXPERIMENTOS COM GERAÇÃO DE CARGA DE TRABALHO • Experimento • Indicadores monitorados por um Programa escrito em Java que executa em H1, onde a cada 500 ms este tenta estabelecer uma conexão Socket no IP e Porta do Apache em H2. • Tempo de Reinicialização do Servidor Web • Quantidade de Erros de Reinicialização. 25
  26. 26. EXPERIMENTOS COM GERAÇÃO DE CARGA DE TRABALHO • Experimento 26
  27. 27. EXPERIMENTOS COM GERAÇÃO DE CARGA DE TRABALHO • Experimento • Indicadores monitorados pelos resultados mostrados pelo Software Apache AB executado em H1 • Tempo gasto por Requisição • Requisições Completadas com sucesso • Requisições com falha 27
  28. 28. EXPERIMENTOS COM GERAÇÃO DE CARGA DE TRABALHO • Experimento • Ações em H2: • Computer Reboot – cold reboot; • OS Restart – Fast Restart com kexec; • Process Restart – Comando apachectl stop seguido de apachectl start; • Process Restart – Comando apachectl graceful 28
  29. 29. EXPERIMENTOS COM GERAÇÃO DE CARGA DE TRABALHO • Resultados • Média após 10 execuções de cada ação 29 Ação Server-Side – Reinicialização Client-Side - Requisições Erros (qtde) Tempo (ms) Tempo gasto(ms) Sucesso(qtde) Falha(qtde) Computer Reboot 33.2 23731 3,7 79020.6 4373.4 Os Restart 33.3 14836.5 3,42 88445 2189.6 Process Restart (stop start) 20.1 1686.8 2.7 118251.1 2413.6 Process Restart (graceful) 21 0 2.97 109142.1 0
  30. 30. EXPERIMENTOS COM GERAÇÃO DE CARGA DE TRABALHO • Resultados • Desvio Padrão após 10 execuções de cada ação 30 Ação Server-Side – Reinicialização Client-Side - Requisições Erros (qtde) Tempo (ms) Tempo gasto(ms) Sucesso(qtde) Falha(qtde) Computer Reboot 14.93 2470.34 1.66 15938.83 1767.65 Os Restart 1.33 1471.06 0.26 1829.41 1903.2 Process Restart (stop start) 1.44 163.56 0.23 6440.19 900.24 Process Restart (graceful) 1.56 0 0.25 6938.12 0
  31. 31. EXPERIMENTOS COM GERAÇÃO DE CARGA DE TRABALHO • Análises • Foi observada uma correlação entre os indicadores “tempo gasto por requisição”, “quantidade de erros de reinicialização” e “quantidade de requisições com sucesso”; • Em Computer Reboot, dois testes possuíram uma quantidade muito grande de erros de reinicialização e tempo gasto por requisição; • Foi observado empiricamente que a quantidade de requisições que falharam é um valor que não possui nenhuma correlação com os demais indicadores; • Foi observado que o comando Process Restart (graceful) evita conexões com erro, mas isso tem um leve custo no tempo de atendimento de cada requisição. 31
  32. 32. REFERÊNCIAS [1] C.E. Carvalho Dantas, R. Matias. “Um estudo sobre os efeitos de Envelhecimento de Software na Linguagem Java”. [2] [Online].Available: http://bugs.java.com/view_bug.do?bug_id=6745052 [3] [Online] Available: http://www.mchange.com/projects/c3p0/ [4] [Online] Available https://wiki.ubuntu.com/RapidReboot 32

×