******************************************* ********** AND - Resumo Monitors ********** ******************************************* Data : 26/08/2004 a 29/08/2004 Versão : 04/07/2007 Professor: Francisco Aurélio de Souza Grossi Autor : Leandro Salvador ( leandrosalvador.com.br ) * Livro - Título : The Art Of Computer Systems Performance Analysis - Autor : Raj Jain - Capítulo: 7 - Monitors - Páginas : 93 a 109 * Introdução - monitores são ferramentas usadas para observar as atividades em um sistema - geralmente observam a performance do sistema, coleta estatísticas de performance, analiza os dados e mostra os resultados - alguns também identificam áreas com problema e sugerem soluções * Motivos para monitorar um sistema - monitorar segmentos usados com muita freqüência num software e otimizar sua performance - medir a utilização dos recursos em uma rede e encontrar o engarrafamento, ou ajustar os parâmetros para melhorar a performance - caracterizar a carga de trabalho, cujos resultados podem ser usados para planejar a capacidade e criar testes de carga - resumindo: monitorar é o início da medição de performance * Terminologia - event --> uma mudança no estado do sistema - trace --> um log de eventos geralmente incluindo hora, tipo e outros parâmetros importantes do evento - overhead --> interferência que os monitores causam no sistema - domain --> grupo de atividades observadas pelo monitor - input rate --> a freqüência máxima de eventos que um monitor pode observar corretamente - resolution --> sensibilidade da informação observada - input width --> número de bits de informação gravadas sobre um evento * Classificação - os monitores são classificados baseados em características como o nível de implementação, mecanismo de gatilho e habilidade de mostrar os resultados - dependendo do nível em que um monitor é implementado, pode ser classificado como software, hardware, firmware ou híbrido (mais comum) - dependendo do mecanismo de gatilho, pode ser classificado como dirigido a evento ou dirigido a tempo (amostra) - dependendo da habilidade em apresentar as informações, pode ser classificado como online ou batch * Monitores de Software - são usados para monitorar sistemas operacionais e softwares de alto nível, como redes e bancos de dados - a cada ativação, muitas instruções são executadas e, conseqüentemente, são adequados apenas se a entrada de dados for baixa - geralmente têm taxas de entrada menores, baixa resolução e maior overhead do que os monitores de hardware - entretanto, têm maior maior largura de entrada maior capacidade de gravação do que os monitores de hardware - são mais fáceis de desenvolver e de modificar, se necessário * Design de Monitores de Software - mecanismo de ativação - instrução armadilha --> medir o tempo gasto numa rotina - modo trace --> monitorar os acessos a um determinado endereço --> alto overhead - interrupção por tempo --> mede eventos em uma determinada freqüência - tamanho do buffer - buffer maior --> diminui a freqüência de gravações na memória - buffer menor --> diminui o tempo por operação de gravação - o melhor tamanho do buffer é função da "input rate", "input width" e "emptying rate" - número de buffers - os buffers são geralmente organizados em seqüência de forma que o processo de gravação segue o processo de monitoramento o mais próximo possível - se houver apenas um buffer dois processos não podem acontecer simultaneamente, e o monitoramento tem que ser interrompido enquanto ocorre a gravação - um mínimo de dois buffers é necessário para operações simultâneas e contínuas - sobrecarga de buffer (buffer overflow) - quando todos os buffers estão cheios, o monitoramento é interrompido até um buffer ficar disponível - em alguns casos, informações podem ser perdidas - deve-se registrar o fato de ter ocorrido uma sobrecarga do buffer - compressão dos dados ou análise - o monitor pode processar as informações enquanto as observa - isto ajuda a diminuir o espaço de armazenamento necessário - entretanto, isto aumenta o overhead - chave liga/desliga - a maioria dos monitores de hardware têm uma chave de liga/desliga que ativa/desativa o monitoramento - um monitor de software deveria similarmente ter condições IF-THEN para que o monitof seja ativado/desativado facilmente - a chave liga/desliga ajuda durante o desenvolvimento e debug do monitor - linguagem - os monitores são desenvolvidos em linguagens de baixo nível para manter o overhead o mais baixo possível - como um monitor de software geralmente faz parte do sistema monitorado, é melhor manter tudo na mesma linguagem - prioridade - se o monitor roda de forma assíncrona, sua prioridade deve ser baixa, pois as operações deste sistema são minimamente afetadas - entretanto, se a observação do tempo e gravação dos eventos for importante, a prioridade deve ser alta para que o atraso na execução não causa muita distorção nos valores gravados - monitoramento de eventos anormais - um monitor deve ser capaz de observar tanto eventos normais quanto anormais em um sistema - se ambos não puderem ser monitorados, os usuários podem muitas vezes preferir monitorar eventos anormais com maior prioridade que os normais - isto ocorre porque eventos anormais ocorrem com menor freqüência e impôe menor overhead que os eventos normais - os eventos anormais também ajudam o usuário a tomar ações preventivas bem antes de o sistema ficar indisponível * Monitores de Hardware - são equipamentos separados que são conectados ao sistema sendo monitorados através de provas - nenhum recurso do sistema é consumido no monitoramento - além disso, os monitores de hardware geralmente têm menor overhead que os monitores de software - sua taxa de entrada também costuma ser maior - além disso, a probabilidade de introduzirem bugs no sistema operacional geralmente é menor que os monitores de software * Tipos de Monitores de Hardware - provas --> provas de alta impedância são usadas para observar sinais em determinados pontos no hardware monitorado - contadores --> são incrementados quando um determinado evento ocorre - elementos lógicos --> sinais de muitos testes podem ser combinados usando AND, OR a outras portas lógicas - comparadores --> podem ser usados para comparar contadores ou valores de sinal com valores pré-determinados - mapeamento --> permite que histogramas de quantidades observadas sejam computados, consistindo de múltiplos comparadores e contadores - timer --> usado para gravar o tempo ou para engatilhar uma operação gravada - fita/disco --> a maioria dos monitores têm drives de fita/disco embutidos para armazenar os dados * Gerações de Monitores de Hardware - originalmente, continham controle lógico em fios - a próxima geração continha hardware mapeado com memória e comparadores - atualmente, são inteligentes naquilo que são programados e contém seu próprio processador, memória e dispositivos de E/S * Monitores de Hardware x Monitores de Software - monitores de hardware podem medir dinais elétricos em barramentos e podem gravar com precisão em alta velocidade - entretanto, têm dificuldade para determinar informação de alto nível, como tamanho de fila ou usuário corrente, a menos que a informação esteja facilmente disponível em um registrador - monitores de software podem, ao contrário, determinar informações de alto nível, mas não podem observar eventods de baixo nível facilmente observados, como o tempo para buscar um código de operação para uma instrução - enquanto os monitores de hardware podem gravar eventos muito rapidamente, os monitores de software pode requerer algumas centenas de instruções por observação e então não podem ser usadas se o tempo entre os eventos é muito pequeno - um monitor de hardware tem um processador separado e pode proporcionar resolução de tempo em poucos nanosegundos, enquanto os monitores de software usam o clock do sistema, o qual tem tipicamente a resolução de poucos milisegundos - monitores de hardware possuem drivers para serem utilizados em diferentes sistemas, enquanto os monitores de software são desenvolvidos para uma base de hardware e software específica, de difícil portabilidade - monitores de hardware podem ser utilizados até quando o sistema pára de funcionar, podendo até serem usados para debugar o sistema, enquanto um monitor de software acaba não funcionando corretamente neste caso, e geralmente não roda quando o sistema pára - monitores de hardware são mais caros que os monitores de software, o que pode influenciar a escolha na maioria dos casos * Monitores Híbridos e Firmware - são implementados modificando o microcódigo do processador - são úteis em aplicações que utilizam monitoramento de software e hardware simultaneamente - são úteis em aplicações onde o tempo impede o uso de monitores de software e a inecassibilidade de pontos de prova impede o uso de monitores de hardware * Monitores Distribuídos - observação --> coleção --> análise --> apresentação --> interpretação --> console --> gerenciamento ----------//----------