SlideShare uma empresa Scribd logo
1 de 32
Baixar para ler offline
“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
ROTEIRO
• Ações de Rejuvenescimento de Software.
• Experimentos com geração de Carga de Trabalho.
2
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
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
AÇÕES DE REJUVENESCIMENTO DE SOFTWARE
• Experimento
5
AÇÕES DE REJUVENESCIMENTO DE SOFTWARE
• Experimento
6
AÇÕES DE REJUVENESCIMENTO DE SOFTWARE
• Experimento
7
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
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)
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)
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
AÇÕES DE REJUVENESCIMENTO DE SOFTWARE
• Computer Reboot
• O Script executa uma classe Java que realiza o update no banco de dados.
12
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
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)
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)
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
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
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
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
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
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
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
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
EXPERIMENTOS COM GERAÇÃO DE CARGA DE
TRABALHO
• Experimento
• Comando Apache AB executado por H1;
24
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
EXPERIMENTOS COM GERAÇÃO DE CARGA DE
TRABALHO
• Experimento
26
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
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
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
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
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
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

Mais conteúdo relacionado

Mais procurados

Entregando conteúdo em ambientes extremos na JVM
Entregando conteúdo em ambientes extremos na JVMEntregando conteúdo em ambientes extremos na JVM
Entregando conteúdo em ambientes extremos na JVMRodrigo Zaccara
 
MySQL 5.7 Multi-Source Replication
MySQL 5.7 Multi-Source ReplicationMySQL 5.7 Multi-Source Replication
MySQL 5.7 Multi-Source ReplicationWagner Bianchi
 
Novidades da versão 9.0 do PostgreSQL
Novidades da versão 9.0 do PostgreSQLNovidades da versão 9.0 do PostgreSQL
Novidades da versão 9.0 do PostgreSQLMatheus Espanhol
 
Estou seguro com no sql
Estou seguro com no sqlEstou seguro com no sql
Estou seguro com no sqlRafael Redondo
 
Crie e gerencie nuvens OpenStack utilizando Foreman
Crie e gerencie nuvens OpenStack utilizando ForemanCrie e gerencie nuvens OpenStack utilizando Foreman
Crie e gerencie nuvens OpenStack utilizando ForemanRenato Serra Armani
 
UNIFAL - MySQL 5.6 - Replicação
UNIFAL - MySQL 5.6 - ReplicaçãoUNIFAL - MySQL 5.6 - Replicação
UNIFAL - MySQL 5.6 - ReplicaçãoWagner Bianchi
 
QCon 2019 - Kubernetes Deepdive
QCon 2019 -  Kubernetes DeepdiveQCon 2019 -  Kubernetes Deepdive
QCon 2019 - Kubernetes DeepdiveRicardo Katz
 
Estratégia de backup - RMAN
Estratégia de backup - RMANEstratégia de backup - RMAN
Estratégia de backup - RMANEduardo Legatti
 
1º Meetup Zabbix Meetup do Recife: Danilo Barros - Zabbix dicas e truques par...
1º Meetup Zabbix Meetup do Recife: Danilo Barros - Zabbix dicas e truques par...1º Meetup Zabbix Meetup do Recife: Danilo Barros - Zabbix dicas e truques par...
1º Meetup Zabbix Meetup do Recife: Danilo Barros - Zabbix dicas e truques par...Zabbix BR
 
Desempenho e Escalabilidade de Banco de Dados em ambiente x86
Desempenho e Escalabilidade de Banco de Dados em ambiente x86Desempenho e Escalabilidade de Banco de Dados em ambiente x86
Desempenho e Escalabilidade de Banco de Dados em ambiente x86Rodrigo Campos
 
Opennebula instalação
Opennebula instalaçãoOpennebula instalação
Opennebula instalaçãoLuís Eduardo
 
Introduction to the citrix xenserver
Introduction to the citrix xenserverIntroduction to the citrix xenserver
Introduction to the citrix xenserverLorscheider Santiago
 
Comparação entre frameworks PHP
Comparação entre frameworks PHPComparação entre frameworks PHP
Comparação entre frameworks PHPRenato Shirakashi
 
Entre na fila. Processamento distribuído usando Gearman
Entre na fila. Processamento distribuído usando GearmanEntre na fila. Processamento distribuído usando Gearman
Entre na fila. Processamento distribuído usando GearmanElton Minetto
 
Dicas e Truques de Performance: Como obter o maximo do Windows Server 2008 R2...
Dicas e Truques de Performance: Como obter o maximo do Windows Server 2008 R2...Dicas e Truques de Performance: Como obter o maximo do Windows Server 2008 R2...
Dicas e Truques de Performance: Como obter o maximo do Windows Server 2008 R2...Fabio Hara
 

Mais procurados (20)

Entregando conteúdo em ambientes extremos na JVM
Entregando conteúdo em ambientes extremos na JVMEntregando conteúdo em ambientes extremos na JVM
Entregando conteúdo em ambientes extremos na JVM
 
Aulão de docker
Aulão de dockerAulão de docker
Aulão de docker
 
Cakephp 2.0 - O que mudou
Cakephp 2.0 - O que mudouCakephp 2.0 - O que mudou
Cakephp 2.0 - O que mudou
 
MySQL 5.7 Multi-Source Replication
MySQL 5.7 Multi-Source ReplicationMySQL 5.7 Multi-Source Replication
MySQL 5.7 Multi-Source Replication
 
Novidades da versão 9.0 do PostgreSQL
Novidades da versão 9.0 do PostgreSQLNovidades da versão 9.0 do PostgreSQL
Novidades da versão 9.0 do PostgreSQL
 
Sistemas Operacionais de Tempo Real
Sistemas Operacionais de Tempo RealSistemas Operacionais de Tempo Real
Sistemas Operacionais de Tempo Real
 
Estou seguro com no sql
Estou seguro com no sqlEstou seguro com no sql
Estou seguro com no sql
 
Crie e gerencie nuvens OpenStack utilizando Foreman
Crie e gerencie nuvens OpenStack utilizando ForemanCrie e gerencie nuvens OpenStack utilizando Foreman
Crie e gerencie nuvens OpenStack utilizando Foreman
 
UNIFAL - MySQL 5.6 - Replicação
UNIFAL - MySQL 5.6 - ReplicaçãoUNIFAL - MySQL 5.6 - Replicação
UNIFAL - MySQL 5.6 - Replicação
 
QCon 2019 - Kubernetes Deepdive
QCon 2019 -  Kubernetes DeepdiveQCon 2019 -  Kubernetes Deepdive
QCon 2019 - Kubernetes Deepdive
 
Estratégia de backup - RMAN
Estratégia de backup - RMANEstratégia de backup - RMAN
Estratégia de backup - RMAN
 
1º Meetup Zabbix Meetup do Recife: Danilo Barros - Zabbix dicas e truques par...
1º Meetup Zabbix Meetup do Recife: Danilo Barros - Zabbix dicas e truques par...1º Meetup Zabbix Meetup do Recife: Danilo Barros - Zabbix dicas e truques par...
1º Meetup Zabbix Meetup do Recife: Danilo Barros - Zabbix dicas e truques par...
 
Desempenho e Escalabilidade de Banco de Dados em ambiente x86
Desempenho e Escalabilidade de Banco de Dados em ambiente x86Desempenho e Escalabilidade de Banco de Dados em ambiente x86
Desempenho e Escalabilidade de Banco de Dados em ambiente x86
 
Performance HyperV
Performance HyperVPerformance HyperV
Performance HyperV
 
Opennebula instalação
Opennebula instalaçãoOpennebula instalação
Opennebula instalação
 
Introduction to the citrix xenserver
Introduction to the citrix xenserverIntroduction to the citrix xenserver
Introduction to the citrix xenserver
 
Zabbix 2010
Zabbix 2010Zabbix 2010
Zabbix 2010
 
Comparação entre frameworks PHP
Comparação entre frameworks PHPComparação entre frameworks PHP
Comparação entre frameworks PHP
 
Entre na fila. Processamento distribuído usando Gearman
Entre na fila. Processamento distribuído usando GearmanEntre na fila. Processamento distribuído usando Gearman
Entre na fila. Processamento distribuído usando Gearman
 
Dicas e Truques de Performance: Como obter o maximo do Windows Server 2008 R2...
Dicas e Truques de Performance: Como obter o maximo do Windows Server 2008 R2...Dicas e Truques de Performance: Como obter o maximo do Windows Server 2008 R2...
Dicas e Truques de Performance: Como obter o maximo do Windows Server 2008 R2...
 

Destaque

Apresentação lazarus flisol
Apresentação lazarus flisolApresentação lazarus flisol
Apresentação lazarus flisolCícero Rocha
 
Programação Orientada a Objetos - Pós Graduação - Aula 4 - refactoring com ho...
Programação Orientada a Objetos - Pós Graduação - Aula 4 - refactoring com ho...Programação Orientada a Objetos - Pós Graduação - Aula 4 - refactoring com ho...
Programação Orientada a Objetos - Pós Graduação - Aula 4 - refactoring com ho...Carlos Eduardo
 
Apresentação wxWidgets
Apresentação wxWidgetsApresentação wxWidgets
Apresentação wxWidgetsRenzo Petri
 
Mini Curso - Programação de Interfaces Gráficas - aula 2
Mini Curso - Programação de Interfaces Gráficas - aula 2Mini Curso - Programação de Interfaces Gráficas - aula 2
Mini Curso - Programação de Interfaces Gráficas - aula 2Carlos Eduardo
 
Minicurso wxWidgets
Minicurso wxWidgetsMinicurso wxWidgets
Minicurso wxWidgetsRenzo Petri
 
Mini Curso - Programação de Interfaces Gráficas - aula 1
Mini Curso - Programação de Interfaces Gráficas - aula 1Mini Curso - Programação de Interfaces Gráficas - aula 1
Mini Curso - Programação de Interfaces Gráficas - aula 1Carlos Eduardo
 

Destaque (8)

Apresentação lazarus flisol
Apresentação lazarus flisolApresentação lazarus flisol
Apresentação lazarus flisol
 
Programação Orientada a Objetos - Pós Graduação - Aula 4 - refactoring com ho...
Programação Orientada a Objetos - Pós Graduação - Aula 4 - refactoring com ho...Programação Orientada a Objetos - Pós Graduação - Aula 4 - refactoring com ho...
Programação Orientada a Objetos - Pós Graduação - Aula 4 - refactoring com ho...
 
Apresentação wxWidgets
Apresentação wxWidgetsApresentação wxWidgets
Apresentação wxWidgets
 
Lazarus Free
Lazarus FreeLazarus Free
Lazarus Free
 
Iniciando com codeblocks
Iniciando com codeblocksIniciando com codeblocks
Iniciando com codeblocks
 
Mini Curso - Programação de Interfaces Gráficas - aula 2
Mini Curso - Programação de Interfaces Gráficas - aula 2Mini Curso - Programação de Interfaces Gráficas - aula 2
Mini Curso - Programação de Interfaces Gráficas - aula 2
 
Minicurso wxWidgets
Minicurso wxWidgetsMinicurso wxWidgets
Minicurso wxWidgets
 
Mini Curso - Programação de Interfaces Gráficas - aula 1
Mini Curso - Programação de Interfaces Gráficas - aula 1Mini Curso - Programação de Interfaces Gráficas - aula 1
Mini Curso - Programação de Interfaces Gráficas - aula 1
 

Semelhante a Experimentos de Rejuvenescimento de Software em Sistemas Operacionais

Medindo e Modelando o Desempenho de Aplicações em um Ambiente Virtual
Medindo e Modelando o Desempenho de Aplicações em um Ambiente VirtualMedindo e Modelando o Desempenho de Aplicações em um Ambiente Virtual
Medindo e Modelando o Desempenho de Aplicações em um Ambiente VirtualRafael Reis
 
Usando containers com auto-escala de testes
Usando containers com auto-escala de testesUsando containers com auto-escala de testes
Usando containers com auto-escala de testesElias Nogueira
 
Teste de performance com JMeter: como criar e executar os testes em aplicaçõe...
Teste de performance com JMeter: como criar e executar os testes em aplicaçõe...Teste de performance com JMeter: como criar e executar os testes em aplicaçõe...
Teste de performance com JMeter: como criar e executar os testes em aplicaçõe...Edlaine Zamora
 
Criando uma grid para execução de testes paralelo com Appium
Criando uma grid para execução de testes paralelo com AppiumCriando uma grid para execução de testes paralelo com Appium
Criando uma grid para execução de testes paralelo com AppiumElias Nogueira
 
Cloud Server Embratel
Cloud Server EmbratelCloud Server Embratel
Cloud Server EmbratelAlex Hübner
 
2 Ads
2 Ads2 Ads
2 Adslcbj
 
Oracle 18c Instalação Grid Infrastructure & Database
Oracle 18c Instalação Grid Infrastructure & DatabaseOracle 18c Instalação Grid Infrastructure & Database
Oracle 18c Instalação Grid Infrastructure & DatabaseDouglas Paiva de Sousa
 
Dicas e Truques de Performance: Como obter o maximo do Windows Server 2008 R2...
Dicas e Truques de Performance: Como obter o maximo do Windows Server 2008 R2...Dicas e Truques de Performance: Como obter o maximo do Windows Server 2008 R2...
Dicas e Truques de Performance: Como obter o maximo do Windows Server 2008 R2...Rodrigo Immaginario
 
Paper pxe 23 03 20004
Paper pxe 23 03 20004Paper pxe 23 03 20004
Paper pxe 23 03 20004Rui Gomes
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...tdc-globalcode
 
SOP M3 Apresentação 10ºAno v004.PDF
SOP M3 Apresentação 10ºAno v004.PDFSOP M3 Apresentação 10ºAno v004.PDF
SOP M3 Apresentação 10ºAno v004.PDFFChico2
 
SNMP - Rafael Rodriques
SNMP - Rafael RodriquesSNMP - Rafael Rodriques
SNMP - Rafael Rodriquesmarleigrolli
 

Semelhante a Experimentos de Rejuvenescimento de Software em Sistemas Operacionais (20)

Infrastructure Testing
Infrastructure TestingInfrastructure Testing
Infrastructure Testing
 
Semana11
Semana11Semana11
Semana11
 
Medindo e Modelando o Desempenho de Aplicações em um Ambiente Virtual
Medindo e Modelando o Desempenho de Aplicações em um Ambiente VirtualMedindo e Modelando o Desempenho de Aplicações em um Ambiente Virtual
Medindo e Modelando o Desempenho de Aplicações em um Ambiente Virtual
 
Usando containers com auto-escala de testes
Usando containers com auto-escala de testesUsando containers com auto-escala de testes
Usando containers com auto-escala de testes
 
Treinamento neteye-v2-6
Treinamento neteye-v2-6Treinamento neteye-v2-6
Treinamento neteye-v2-6
 
Teste de performance com JMeter: como criar e executar os testes em aplicaçõe...
Teste de performance com JMeter: como criar e executar os testes em aplicaçõe...Teste de performance com JMeter: como criar e executar os testes em aplicaçõe...
Teste de performance com JMeter: como criar e executar os testes em aplicaçõe...
 
Criando uma grid para execução de testes paralelo com Appium
Criando uma grid para execução de testes paralelo com AppiumCriando uma grid para execução de testes paralelo com Appium
Criando uma grid para execução de testes paralelo com Appium
 
Cloud Server Embratel
Cloud Server EmbratelCloud Server Embratel
Cloud Server Embratel
 
Gsp007
Gsp007Gsp007
Gsp007
 
Amazon EC2 avançado
Amazon EC2 avançadoAmazon EC2 avançado
Amazon EC2 avançado
 
2 Ads
2 Ads2 Ads
2 Ads
 
Oracle 18c Instalação Grid Infrastructure & Database
Oracle 18c Instalação Grid Infrastructure & DatabaseOracle 18c Instalação Grid Infrastructure & Database
Oracle 18c Instalação Grid Infrastructure & Database
 
Dicas e Truques de Performance: Como obter o maximo do Windows Server 2008 R2...
Dicas e Truques de Performance: Como obter o maximo do Windows Server 2008 R2...Dicas e Truques de Performance: Como obter o maximo do Windows Server 2008 R2...
Dicas e Truques de Performance: Como obter o maximo do Windows Server 2008 R2...
 
Paper pxe 23 03 20004
Paper pxe 23 03 20004Paper pxe 23 03 20004
Paper pxe 23 03 20004
 
Benchmarking Tools
Benchmarking ToolsBenchmarking Tools
Benchmarking Tools
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
 
SOP M3 Apresentação 10ºAno v004.PDF
SOP M3 Apresentação 10ºAno v004.PDFSOP M3 Apresentação 10ºAno v004.PDF
SOP M3 Apresentação 10ºAno v004.PDF
 
Dev Ops at Paguemenos
Dev Ops at PaguemenosDev Ops at Paguemenos
Dev Ops at Paguemenos
 
Apresentacao Aula03 So
Apresentacao Aula03 SoApresentacao Aula03 So
Apresentacao Aula03 So
 
SNMP - Rafael Rodriques
SNMP - Rafael RodriquesSNMP - Rafael Rodriques
SNMP - Rafael Rodriques
 

Mais de Carlos Eduardo

When and Why Your Code Starts to Smell Bad
When and Why Your Code Starts to Smell BadWhen and Why Your Code Starts to Smell Bad
When and Why Your Code Starts to Smell BadCarlos Eduardo
 
A Measurement-Based Model for Estimation of Resource Exhaustion in Operationa...
A Measurement-Based Model for Estimation of Resource Exhaustion in Operationa...A Measurement-Based Model for Estimation of Resource Exhaustion in Operationa...
A Measurement-Based Model for Estimation of Resource Exhaustion in Operationa...Carlos Eduardo
 
Programação Orientada a Objetos - Pós Graduação - Aula 8 - Bad Smells & Desig...
Programação Orientada a Objetos - Pós Graduação - Aula 8 - Bad Smells & Desig...Programação Orientada a Objetos - Pós Graduação - Aula 8 - Bad Smells & Desig...
Programação Orientada a Objetos - Pós Graduação - Aula 8 - Bad Smells & Desig...Carlos Eduardo
 
Programação Orientada a Objetos - Pós Graduação - Aula 7 - Inversão de Controle
Programação Orientada a Objetos - Pós Graduação - Aula 7 - Inversão de ControleProgramação Orientada a Objetos - Pós Graduação - Aula 7 - Inversão de Controle
Programação Orientada a Objetos - Pós Graduação - Aula 7 - Inversão de ControleCarlos Eduardo
 
Programação Orientada a Objetos - Pós Graduação - Aula 6 - Princípios OO
Programação Orientada a Objetos - Pós Graduação - Aula 6 - Princípios OOProgramação Orientada a Objetos - Pós Graduação - Aula 6 - Princípios OO
Programação Orientada a Objetos - Pós Graduação - Aula 6 - Princípios OOCarlos Eduardo
 
Socket Descriptor Leak encontrado na JDK
Socket Descriptor Leak encontrado na JDKSocket Descriptor Leak encontrado na JDK
Socket Descriptor Leak encontrado na JDKCarlos Eduardo
 
Programação Orientada a Objetos - Pós Graduação - Aula 5 - refactoring com ho...
Programação Orientada a Objetos - Pós Graduação - Aula 5 - refactoring com ho...Programação Orientada a Objetos - Pós Graduação - Aula 5 - refactoring com ho...
Programação Orientada a Objetos - Pós Graduação - Aula 5 - refactoring com ho...Carlos Eduardo
 
Programação Orientada a Objetos - Pós Graduação - Aula 3
Programação Orientada a Objetos - Pós Graduação - Aula 3Programação Orientada a Objetos - Pós Graduação - Aula 3
Programação Orientada a Objetos - Pós Graduação - Aula 3Carlos Eduardo
 
Programação Orientada a Objetos - Pós Graduação - Aula 2
Programação Orientada a Objetos - Pós Graduação - Aula 2Programação Orientada a Objetos - Pós Graduação - Aula 2
Programação Orientada a Objetos - Pós Graduação - Aula 2Carlos Eduardo
 
Programação Orientada a Objetos - Pós Graduação - aula 1
Programação Orientada a Objetos - Pós Graduação - aula 1Programação Orientada a Objetos - Pós Graduação - aula 1
Programação Orientada a Objetos - Pós Graduação - aula 1Carlos Eduardo
 
Máquinas de turing com memória limitada
Máquinas de turing com memória limitadaMáquinas de turing com memória limitada
Máquinas de turing com memória limitadaCarlos Eduardo
 
Detecting bad smells in source code using change history information
Detecting bad smells in source code using change history informationDetecting bad smells in source code using change history information
Detecting bad smells in source code using change history informationCarlos Eduardo
 
Recommending refactoring operations in large software systems
Recommending refactoring operations in large software systemsRecommending refactoring operations in large software systems
Recommending refactoring operations in large software systemsCarlos Eduardo
 
Mini Curso - Programação de Interfaces Gráficas - aula extra persistência
Mini Curso - Programação de Interfaces Gráficas - aula extra persistênciaMini Curso - Programação de Interfaces Gráficas - aula extra persistência
Mini Curso - Programação de Interfaces Gráficas - aula extra persistênciaCarlos Eduardo
 
Mini Curso - Programação de Interfaces Gráficas - aula 4
Mini Curso - Programação de Interfaces Gráficas - aula 4Mini Curso - Programação de Interfaces Gráficas - aula 4
Mini Curso - Programação de Interfaces Gráficas - aula 4Carlos Eduardo
 
Mini Curso - Programação de Interfaces Gráficas - aula 3
Mini Curso - Programação de Interfaces Gráficas - aula 3Mini Curso - Programação de Interfaces Gráficas - aula 3
Mini Curso - Programação de Interfaces Gráficas - aula 3Carlos Eduardo
 

Mais de Carlos Eduardo (17)

When and Why Your Code Starts to Smell Bad
When and Why Your Code Starts to Smell BadWhen and Why Your Code Starts to Smell Bad
When and Why Your Code Starts to Smell Bad
 
A Measurement-Based Model for Estimation of Resource Exhaustion in Operationa...
A Measurement-Based Model for Estimation of Resource Exhaustion in Operationa...A Measurement-Based Model for Estimation of Resource Exhaustion in Operationa...
A Measurement-Based Model for Estimation of Resource Exhaustion in Operationa...
 
Programação Orientada a Objetos - Pós Graduação - Aula 8 - Bad Smells & Desig...
Programação Orientada a Objetos - Pós Graduação - Aula 8 - Bad Smells & Desig...Programação Orientada a Objetos - Pós Graduação - Aula 8 - Bad Smells & Desig...
Programação Orientada a Objetos - Pós Graduação - Aula 8 - Bad Smells & Desig...
 
Programação Orientada a Objetos - Pós Graduação - Aula 7 - Inversão de Controle
Programação Orientada a Objetos - Pós Graduação - Aula 7 - Inversão de ControleProgramação Orientada a Objetos - Pós Graduação - Aula 7 - Inversão de Controle
Programação Orientada a Objetos - Pós Graduação - Aula 7 - Inversão de Controle
 
Programação Orientada a Objetos - Pós Graduação - Aula 6 - Princípios OO
Programação Orientada a Objetos - Pós Graduação - Aula 6 - Princípios OOProgramação Orientada a Objetos - Pós Graduação - Aula 6 - Princípios OO
Programação Orientada a Objetos - Pós Graduação - Aula 6 - Princípios OO
 
Socket Descriptor Leak encontrado na JDK
Socket Descriptor Leak encontrado na JDKSocket Descriptor Leak encontrado na JDK
Socket Descriptor Leak encontrado na JDK
 
Programação Orientada a Objetos - Pós Graduação - Aula 5 - refactoring com ho...
Programação Orientada a Objetos - Pós Graduação - Aula 5 - refactoring com ho...Programação Orientada a Objetos - Pós Graduação - Aula 5 - refactoring com ho...
Programação Orientada a Objetos - Pós Graduação - Aula 5 - refactoring com ho...
 
Programação Orientada a Objetos - Pós Graduação - Aula 3
Programação Orientada a Objetos - Pós Graduação - Aula 3Programação Orientada a Objetos - Pós Graduação - Aula 3
Programação Orientada a Objetos - Pós Graduação - Aula 3
 
Programação Orientada a Objetos - Pós Graduação - Aula 2
Programação Orientada a Objetos - Pós Graduação - Aula 2Programação Orientada a Objetos - Pós Graduação - Aula 2
Programação Orientada a Objetos - Pós Graduação - Aula 2
 
Programação Orientada a Objetos - Pós Graduação - aula 1
Programação Orientada a Objetos - Pós Graduação - aula 1Programação Orientada a Objetos - Pós Graduação - aula 1
Programação Orientada a Objetos - Pós Graduação - aula 1
 
Máquinas de turing com memória limitada
Máquinas de turing com memória limitadaMáquinas de turing com memória limitada
Máquinas de turing com memória limitada
 
Detecting bad smells in source code using change history information
Detecting bad smells in source code using change history informationDetecting bad smells in source code using change history information
Detecting bad smells in source code using change history information
 
Recommending refactoring operations in large software systems
Recommending refactoring operations in large software systemsRecommending refactoring operations in large software systems
Recommending refactoring operations in large software systems
 
Mini Curso - Programação de Interfaces Gráficas - aula extra persistência
Mini Curso - Programação de Interfaces Gráficas - aula extra persistênciaMini Curso - Programação de Interfaces Gráficas - aula extra persistência
Mini Curso - Programação de Interfaces Gráficas - aula extra persistência
 
Mini Curso - Programação de Interfaces Gráficas - aula 4
Mini Curso - Programação de Interfaces Gráficas - aula 4Mini Curso - Programação de Interfaces Gráficas - aula 4
Mini Curso - Programação de Interfaces Gráficas - aula 4
 
Mini Curso - Programação de Interfaces Gráficas - aula 3
Mini Curso - Programação de Interfaces Gráficas - aula 3Mini Curso - Programação de Interfaces Gráficas - aula 3
Mini Curso - Programação de Interfaces Gráficas - aula 3
 
NoSql
NoSqlNoSql
NoSql
 

Experimentos de Rejuvenescimento de Software em Sistemas Operacionais

  • 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. ROTEIRO • Ações de Rejuvenescimento de Software. • Experimentos com geração de Carga de Trabalho. 2
  • 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. 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. AÇÕES DE REJUVENESCIMENTO DE SOFTWARE • Experimento 5
  • 6. AÇÕES DE REJUVENESCIMENTO DE SOFTWARE • Experimento 6
  • 7. AÇÕES DE REJUVENESCIMENTO DE SOFTWARE • Experimento 7
  • 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. 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. 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. 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. AÇÕES DE REJUVENESCIMENTO DE SOFTWARE • Computer Reboot • O Script executa uma classe Java que realiza o update no banco de dados. 12
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. EXPERIMENTOS COM GERAÇÃO DE CARGA DE TRABALHO • Experimento • Comando Apache AB executado por H1; 24
  • 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. EXPERIMENTOS COM GERAÇÃO DE CARGA DE TRABALHO • Experimento 26
  • 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. 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. 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. 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. 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. 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