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