CONTROLE POR REALIMENTAÇÃO PARA MELHORIA DO DESEMPENHO DINÂMICO DE
REQUISIÇÕES HTTP EM MÁQUINAS VIRTUAIS
MARCOS VINICIUS SADALA BARRETO1, FAUSTO FARIAS BEZERRA FILHO1,
WALTER BARRA JUNIOR2. FABRICIO GONZALEZ NOGUEIRA3
1.
Laboratório de Controle em Sistemas Computacionais, Departamento Informática , Instituto Federal
de Educação, Ciência e Tecnologia do Pará Campus Belém,
Av. Almirante Barroso 1155, Bloco C, 66000-000, Belém, PA, Brasil
E-mails: [email protected], [email protected]
2. Laboratório de Controle e Automação, Instituto de Tecnologia, Universidade Federal do Pará, Av.
Perimetral S/N, 66000-000, Belém, PA, BRASIL
E-mails: [email protected]
3.
Laboratório de Automação, Controle e Robótica, Departamento de Engenharia Elétrica, Centro de
Tecnologia, Universidade Federal do Ceará, 60440900 – Fortaleza, CE, Brasil
e-mails: [email protected]
Abstract In this paper, the development and tests of a PI controller for regulating the memory resources in a computational
system is presented and discussed. The feedback control strategy aims at improving the system dynamic response regarding the
HTTP requisition rate, by using virtual machine techniques. The control strategy is based on the management planning of the
provided service, as devised by the system administrator. The system used for performing the tests studies was an Apache WEB
server, while the manipulated control variable was the value of the MaxClient parameter. The developed control software is nonintrusive to the Apache and uses MySQL database to store the system performance data for evaluation tasks. The obtained results
shown the improved closed-loop performance of the designed control system.
Keywords Feedback Systems, Computer Systems, Virtual Machine, HTTP
Resumo O presente trabalho apresenta o desenvolvimento e testes de um controlador PI para um sistema computacional de
resposta às requisições HTTP implantado em uma máquina virtual. O controlador digital tem o objetivo de regular o valor a ser
alocado de recurso computacional em relação à memória principal, de uma forma automatizada. A técnica de controle é baseada
na política de gestão de informação adotada pelo profissional responsável pelo serviço provido. O sistema utilizado para testes é
o servidor WEB Apache, sendo a variável a ser manipulada pelo controle automático é o parâmetro de configuração
MaxClient. O software de controle é não-intrusivo ao Apache e utiliza o banco de dados MYSQL para armazenar as relações referenciais e dados da evolução do sistema durante as rotinas de repostas aos clientes. Os resultados obtidos nos testes mostram o
desempenho melhorado do sistema em malha fechada.
Palavras-chave Sistemas realimentados, Sistemas Computacionais, Máquina Virtual, HTTP
1
Introdução
Este trabalho busca investigar estratégias de
controle automático via realimentação (feedback
control), visando à melhoria da qualidade dos serviços providos por sistemas computacionais. Fez-se
isso, em particular, regulando as variações de utilização de memória principal (MAA – Memória de
Acesso Aleatório) e unidade de central de processamento (CPU) do computador hospedeiro do aplicativo servidor. Para tanto, foi levado em conta que um
dos principais sistemas computacionais utilizados
nos dias atuais é o que proporciona o serviço de resposta às requisições HTTP (Hypertext Transfer Protocol) solicitadas através dos navegadores de Internet
(Kjaer, 2009).
Para que as requisições dos usuários sejam atendidas, o servidor deve possuir disponibilidade suficiente de recursos de memória e de CPU. A inadequada gerência desses recursos computacionais pode
ocasionar um baixo desempenho (refletido em alto
tempo de latência) ou instabilidade que, neste caso, é
o não envio da resposta. É importante, portanto, frisar que os recursos disponíveis são compartilhados
com outros softwares que estão sendo executados na
máquina, sendo o principal o próprio sistema operacional.
O sistema operacional é o responsável pela interface entre o software e o hardware da máquina e
consome os recursos existentes tal como os demais
programas. Caso um determinado software consuma
demasiada parcela de memória principal, o sistema
operacional não terá recursos suficientes para a execução dos demais aplicativos, podendo colocá-los em
uma fila de execução, aguardando sua vez. Isso pode
provocar uma queda de desempenho na qualidade
dos serviços providos.
As tentativas dos desenvolvedores de prover
uma otimização dos sistemas é exposta através da
disponibilização de uma série de parâmetros de ajustes que podem ser feitos pelos administradores, de
acordo com metas de alto nível para aplicações espe-
cíficas, concebidas para satisfazer diferentes necessidades de negócios.
Particularizando para o caso da otimização do
desempenho dinâmico em servidores web, os quais
fazem o fornecimento do serviço de HTTP, é notável
que, apesar do grande avanço da informática, atualmente a maioria dos sistemas computacionais ainda
são configurados manualmente. Por exemplo, as configurações de quantidade de memória e demais parâmetros influenciadores de desempenho ainda são
feitas manualmente por meio de arquivos TXT. Ou
seja, o administrador efetua os devidos cálculos de
uso de recurso, localiza o respectivo arquivo de configuração e linha pertinente e realiza as devidas alterações, salvando os arquivos e reiniciando o serviço.
Tendo isso em conta, o emprego de controle automático pode aliviar o administrador de certas tarefas repetitivas, bem como contribuir para a melhoria
do desempenho dinâmico das respostas e, por conseguinte, da qualidade do serviço suprido pelo sistema
computacional. Apesar da importância do tema, ainda existem poucos trabalhos sistemáticos sobre estratégias de controle automático em sistemas computacionais. Em Hellerstein et al, 2004, é apresentado um
dos primeiros tratamentos sistemáticos de teoria de
sistemas de controle automático em sistemas computacionais. Recentemente, Abreu et al (2012), realizaram testes de identificação em um sistema Apache
para estimar modelos para fins de projeto de controle
automático.
Este trabalho está organizado da seguinte forma:
na 1ª Seção é apresentado o tema e sua relevância, na
2ª Seção é mostrado como o sistema computacional
Apache funciona, na 3ª Seção é realizado a identificação do sistema, na 4ª Seção projetado um controlador PI, na 5ª Seção e mostrado como o software de
gerenciamento do Apache foi construído, na 6ª Seção
é mostrado o ambiente em que foram realizados os
ensaios, na 7ª Seção é mostrado os resultados obtidos
com a implementação do controlador PI no sistema
Apache.
2 O Sistema de Resposta HTTP em um Servidor
Apache
O tratamento das requisições que estão na fila de
conexões aceitas são processadas pelo servidor
HTTP. Assim, a Figura 1 mostra a arquitetura de
como é realizado o processamento das solicitações
dos clientes no servidor Web Apache.
Como as requisições estão armazenadas em fila,
o servidor Apache irá tratá-las na ordem em que se
apresentam. Quando existir um processo livre (círculos maiores), inicia-se o processamento da requisição, ou seja, o processo que se encontrava no estado
de inativo passa a ter o estado de ocupado. Devido à
existência da conexão persistente, o processo que foi
alocado será exclusivo para o cliente responsável
pela requisição, tendo o estado de inativo quando
houver a interrupção da conexão ou extrapolação do
tempo em que o cliente pode permanecer sem realizar nenhuma requisição. Quando o cliente não realiza solicitações e não extrapola o tempo determinado,
o processo passa para o estado de espera.
O tempo que o cliente pode passar sem realizar
requisições está configurado no parâmetro KeepAliveTimeOut. Se houve um valor muito grande, a CPU
será subutilizada, uma vez que neste tempo o processo pode ser do cliente que o criou. Contudo, se houver um valor muito pequeno, será diminuído o tempo
que o processo está no estado de espera e aumentado
o tempo no estado de ocupado, elevando a utilização
da CPU. (Hellerstein et al, 2004)
Servidor HTTP Apache Processo 1
Ocupado
Fila de requisições Esperar KeepAliveTimeOut
Inativo Conexão Encerrada Requisições Conectadas Processo MaxClients
Ocupado
Esperar Inativo Figura 1 - Arquitetura do Servidor Apache (Adaptado de Hellerstein, Diao, Parekh, & Tilbury, 2004)
O número de processos possíveis de existir para
atender as requisições dos clientes é configurado
pelo parâmetro MaxClient. Este é responsável por
limitar o tamanho “pool” de trabalho que interfere na
taxa de processamento. Um valor muito grande no
número de processos causa o consumo exagerado
dos recursos de CPU e memória, aumentando o tempo de resposta de todos os clientes.
3 Identificação do Sistema
Um sistema real possui características que devem ser estudas para proporcionar uma melhora no
serviço ou produto pretendido. A modelagem matemática proporciona formas de desenvolver e implementar uma equação que possua o mesmo comportamento das características desejadas de um sistema
real. Assim, uma forma segura, sem haver coletas de
ensaios, é preparar um modelo que seja análogo às
características pretendidas.
O desenvolvimento do modelo matemático do
servidor HTTP Apache está baseado na Figura 2, que
é um diagrama simplificado do sistema estudado. As
considerações desse sistema, devido aos relatos já
expostos não possui linearidade e existe a variância
no tempo.
MaxClient
Servidor HTTP Apache
Medição
Memoria
Figura 2 - Esquema do sistema apache para identificação
Para obter os dados para uma identificação não
paramétrica em malha aberta, foi desenvolvido um
software que varia os valores do sinal de entrada
MaxCliente e captura seus efeitos na memória.
Para excitar a dinâmica da planta com a finalidade estimar um modelo paramétrico da planta, a
mesma foi excitada com um sinal do tipo sequência
binária pseudo-aleatória (SBPA). O gerador da sequência SBPA foi implementado em Matlab/Simulink (veja a Figura 3). O sinal SBPA impõe
variações de -50 e +50 no valor do parâmetro
MaxClient do Servidor. Essa variação foi escolhida
devido ao sistema computacional em questão não
apresentar sobrecarga ou interrupção dos serviços
para os valores apresentados após aplicar o incremento no sinal de entrada. Isso foi observado através
de ensaios com alteração individual dos valores a
serem utilizados. A quantidade de células e o intervalo entre as amostras do sinal SBPA a serem utilizados devem satisfazer o sistema computacional de
forma que a excitação no sistema gere respostas que
não atinjam o regime permanente (Aguirre, 2007).
-5
Z
-1
Z
Bits 1 a 5
Bit 6
100
Gráfico
Ganho
0.5
Canstante
Operador Logico XOR
PRBS
Banco de Dados
Figura 3 - Modelo de Geração do SBPA
De acordo com Horowitz & Hill (1989), um sinal SBPA deve excitar uniformemente a faixa de
frequência:
1
1
.
 f 
(2  1)Tb
3Tb
n
sinal de entrada MaxClient do sistema computacional.
A Figura 4 mostra o gráfico da aplicação do
SBPA no sinal de entrada referente à variável
MaxClient sendo quantificada em 100 clientes concomitantes, o qual é um valor aceitável para qualquer
tipo de serviço instalado no servidor web pela comunidade Apache.( The Apache Software Foundation,
2015)
Figura 4 - Gráfico dos valores do MaxClient e PU de memória
O drift (inclinação crescente em PU de memoria
utilizada) observado na resposta da memoria utilizada é devida ao acúmulo de requisições no pool de
requisições de conexão do sistema operacional, que
não são respondidas pelo servidor web por causa das
restrições físicas (limitações do hardware) ou lógicas
(limitações dos softwares, parâmetros configurados)
existentes.
A tendência indica o comportamento “de longo
prazo” da série, isto é, se ela permanece estável,
crescente ou decrescente, e indica a velocidade desta
variação. As tendências mais comuns são constantes,
lineares e quadráticas. Neste caso pode-se observar
uma tendência linear crescente.
(1)
onde n é o número de células de registrador de deslocamento e Tb é o intervalo de geração das amostras
do sinal SBPA. Dessa forma, para os testes de identificação foram selecionados os valores n=2 células e
Tb=21 segundos para o gerador de sinal SBPA, devido o tempo dominante para a resposta do sistema é
de 63 segundos.
O sinal projetado SBPA irá estimular a dinâmica do sistema do tipo SISO, ou seja, incialmente a
preocupação é investigar como é o comportamento
do sistema (quantidade de memória utilizada) relacionado à variação do parâmetro MaxClient.
O software desenvolvido altera o sinal de entrada no sistema Apache baseado nas informações do
arquivo PRBS.dat. Dessa forma, há a variação do
Figura 5 - Desenvolvimento da Identificação do Sistema Computacional no Ident
Para este trabalho, utilizou-se a metodologia dos
mínimos quadrados (Chapra, 2013) descrita para
obter a equação de transferência do sistema. Entretanto, a toolbox do Matlab “ident” já possui esta téc-
nica implementada, sendo facilmente utilizada (veja
a Figura 5).
Primeiramente, projetou-se a equação de transferência mais simples da estrutura ARX, que possui
um polo, um zero e atraso discreto igual a uma vez o
intervalo de amostragem selecionada. Obteve-se a
seguinte equação transferência:
H (q 1 ) 
0.0001492q 1
1  0.3091q 1
(2)
Sendo que:
R ( q 1 ) r0  r1q 1

S ( q 1 )
1  q 1
Para encontrar o valor de r0 e r1
deve-se
primeiro encontrar a função de transferência de ma. Para isso,
lha fechada Hcl(q-1) = y(k)/Ref(k)
leva-se em conta a equação do controlador PID discreto:
Outras equações de transferência, de ordem
maior, foram projetadas. Entretanto, baseado no critério de erro final de predição (FPE), a melhor equação que representa o comportamento do sistema estudado é o de primeira ordem (veja a tabela 1).
Tabela 1- Erro final de predição das equações de transferência da
1ª a 4ª ordem
Ordem
FPE
1º
2º
3º
4º
8,11020*10-6
8.11906*10-6
8.12242*10-6
8,13322*10-6
Série Temporal da Saída do Modelo Simulado
0.015
Sistema Idenficado
Sistema Real
0.01
0.005
Erro
PID ( q 1 ) 
0
-0.005
1600
1800
2000
2200
2400
2600
(4)
0  r0   p1  1  a1 


b0   r1  
a1

(5)
a partir do conheciPode-se obter o valor de
mento do tempo de assentamento (Ts) da planta.
Como há uma variação no tempo de assentamento
devido a fatores como a quantidade de requisições, e
o hardware utilizado nos ensaios , adotou-se o valor
de 14 segundos baseado na media de valores do tempo de reinicialização do serviço extraídos de uma
“data warehouse”, obtendo-se o valor de -0.7515
para p1.
A função de transferência pulsada do controlador digital projetado é:
R ( q 1 ) 3737.3  2071.7 q 1

S ( q 1 )
1  q 1
-0.01
-0.015
1400
r0  r1 q 1  r2 q 1
(1  q 1 )(1  s1 q 1 )
Montando o sistema matemático a partir da Figura , fazendo as devidas operações algébricas e utilizando a técnica de posicionamento de polos, temos
o sistema em forma matricial:
b0
0

A Figura 6 mostra a comparação entre o modelo
obtido e o modelo real. Segundo a ferramenta do
MatLab ToolBox Ident, a percentagem de melhor
ajuste foi quantificado em 73,8.
(3)
2800
(6)
Ordem da Amostra
Figura 6 - Comparação entre o modelo obtido e a resposta real do
sistema
4 - Controle Digital PI
A
Figura 8 apresenta a resposta do sistema para uma
perturbação do tipo degrau na variável MaxClient em
O controlador projetado para o sistema computacional Apache apresenta uma ação de controle PI
ajustada via o método de alocação de polos
A Figura 7 ilustra o diagrama de blocos do
controlador digital implementado.
1
Ref(k) Porcentagem de Memoria Utilizada 1
+ ‐ 1
1
y(k) P orc en ta germ M ax im a de O c up aç ão d e M em ória
1
0.9
0.8
0.7
0.6
0.5
0.4
0.3
0.2
0.1
0
0
Controlador Servidor WEB MaxCliente
20
40
60
80
100
Tempo(s)
120
140
160
180
Figura 8 – Resposta do Sistema Simulado em Malha Fechada
Figura 7 - Esquema do controlador PI
simulação. O tempo sugerido de 14 segundos para o
200
sistema entrar em regime foi mantido com um erro
de regime muito pequeno e não existindo overshoot.
5 - O Software Desenvolvido
Para a realização dos testes no sistema de resposta HTTP, foi desenvolvido um software não intrusivo (não altera o código fonte do Apache) ao
sistema Apache que irá gerenciar o valor do MaxClient para que o servidor tenha sempre memória disponível para a execução de rotinas do sistema operacional.
O software possui uma gestão de multiprocessos, idênticas ao módulo de multiprocessamento “prefork” do Apache, o qual utiliza a
criação de processos filhos a partir do processo pai.
Os processos filhos utilizam as variáveis de forma
independente a partir de sua criação, sem alterar as
variáveis dos outros processos filhos ou do processo
pai. O processamento das rotinas é realizado mediante a fila no sistema operacional e o nível de prioridade existente para cada processo.
O diagrama de fluxo de dados para sistema de
controle é mostrado na Figura 9. Alguns procedimentos possuem uma camada mais especifica, entretanto não será criado mais um DFD mostrando este
nível por acreditar que o DFD mostrado é suficiente
para o entendimento do usuário (Yourdon, 1990).
cessos) e em conjunto com o parâmetro graceful da
rotina apachectl.
O parâmetro “graceful” realiza a alteração no
servidor de resposta HTTP, sem destruir os processos que estão respondendo as requisições e cria novos processos com os novos parâmetros desejados.
Essas ações são realizadas de forma concomitantes.
(The Apache Software Foundation, 2015)
Figura 10 - Diagrama de Nassi-Sheneiderman
A interface do software foi projetada de forma
similar a do “Disk Operating System” – DOS (veja a
Figura 11).
Figura 9 - Diagrama de Fluxo de Dados
A especificação de processo “controle PI” será
feita através do diagrama de Nassi-Shneiderman
(fluxograma), uma vez que eles são mais organizados, mais estruturados e mais abrangentes que os
fluxogramas comuns desenvolvidos (Yourdon,
1990). A desvantagem é a utilização de grande quantidade de tempo para o desenvolvimento de uma
programação estrutural utilizando os gráficos necessários.
Para que o sistema de controle retroalimentado
funcione sem interrupção do serviço aos usuários em
navegação, usa-se a metodologia de semáforos (informação se a tarefa que o processo se propõem a
resolver já está pronta proporcionando ações atomicas), através de “pipe”(local de armazenamento de
dados que pode ser compartilhado com outros pro-
Figura 11 - Interface do software
6 - Ambiente de Ensaio
Tabela 2 - Recursos Maquina Hospedeira
Características Processador Memoria RAM Sistema Operacional Conexão Ethernet Valor Intel(R) Core(TM) i7 CPU Q 740 6 GB Windows 7 Home Premium 64Bits 10/100Mbps O ambiente projetado e desenvolvido para a
realização deste trabalho utiliza uma máquina física,
com as características descritas na , que será a hospedeira de três máquinas virtuais. Cada uma possui
seus recursos bem definidos, as quais são: Servidor
va. Assim, o controlador está diminuindo o número
de processos filho que são executados em paralelo,
em detrimento do sistema operacional ou outro aplicativo que esta requisitando recursos computacionais.
Foram realizados exaustivos testes de estresse
com a rotina httperf no servidor, e foi constatado que
o controlador proporciona um aumento na taxa de
resposta reduzindo a quantidade de erro total.
8 - Conclusão
Figura 12 - Configuração Maquina Virtual Servidor Apache
Apache, Servidor de Banco de Dados e Servidor
Gerador de Carga (solicitação de requisição ao servidor web). Na Figura 12 podem ser visualizados os
recursos do servidor Apache.
7 – Resultados Obtidos
O ensaio da atuação do controlador PI no ambiente de teste descrito pode ser visto na Figura 13. O
ponto de referência utilizado foi de 0,86, resultando
em um valor de 14% de memoria livre para as rotinas
necessárias do sistema operacional.
O controlador projetado para o sistema computacional Apache apresentou um erro de regime próximo de zero e manteve a estabilidade do sistema
para as condições impostas de carga (requisições por
segundo). Entretanto o sistema Apache é sacrificado
para que o sistema operacional ou outra aplicação
possa executar suas rotinas, devido não existir um
controle de gerências com metodologia clássica de
controle. Os demais aplicativos que estão sendo executado na máquina virtual ou nas rotinas do sistema
operacional utilizado na maquina virtual.
Testes em outras combinações de plataformas e
sistemas computacionais serão investigados em trabalhos futuros, buscando a integração do controle de
recursos computacionais, além de agregar o comportamento da utilização da CPU.
Agradecimentos
Os autores agradecem o apoio da FUNCAP-CE e
CNPQ
Referencias Bibliográficas
Figura 13 - Controle da Memoria Utilizada
Figura 14 - Variação do Maxclient com atuação PI
A mostra o comportamento da variável MaxClient no ensaio, Figura 14 .O mesmo comportamento
existente na identificação, “drift”, pode ser observado na variação do MaxClient, com inclinação negati-
Abreu, T. W.; Barra Jr., W. (Janeiro e Fevereiro de
2012). Estratégias de Identificação Paramétrica
Aplicadas à Modelagem Dinâmica de um
servidor WEB Apache. Revista Controle &
Automação, pp. 38-48.
Aguirre, L. A. (2007). Introdução à Identificação de
Sistemas . Belo Horizonte: UFMG.
Diao, Y., Gandhi, N., Hellerstein, J. L., Parekh, S., &
Tilbury, D. M. (2008). Using MIMO Feedback
Control to Enforce Policies for Interrelated
Metrics With Application to the Apache Web
Server. IEEE Xplore.
Tanenbaum, A. S. (2000). Organização Estruturada
de Computadores. Rio de Janeiro: LTC - Livros
Técnicos e Ciêntificos Editora S.A.
Horowitz, P; Hill, W.- 2015- The Art of Eletronic
Cambridge University Press; 3 edition .
Chapra, Steven C. (2013). Métodos Numéricos Aplicados com Matlab para engenheiros e cientistas.
São Paulo: AMGH Editora Ltda.
The Apache Software Foundation. Disponível em:
http://httpd.apache.org/docs/2.4 . Acesso em
01/08/2015
Download

CONTROLE POR REALIMENTAÇÃO PARA MELHORIA DO