1 |
[en] USING RUNTIME INFORMATION AND MAINTENANCE KNOWLEDGE TO ASSIST FAILURE DIAGNOSIS, DETECTION AND RECOVERY / [pt] UTILIZANDO INFORMAÇÕES DA EXECUÇÃO DO SISTEMA E CONHECIMENTOS DE MANUTENÇÃO PARA AUXILIAR O DIAGNÓSTICO, DETECÇÃO E RECUPERAÇÃO DE FALHASTHIAGO PINHEIRO DE ARAUJO 16 January 2017 (has links)
[pt] Mesmo sistemas de software desenvolvidos com um controle de qualidade
rigoroso podem apresentar falhas durante seu ciclo de vida. Quando uma falha é
observada no ambiente de produção, mantenedores são responsáveis por produzir
o diagnóstico e remover o seu defeito correspondente. No entanto, em um serviço
crítico este tempo pode ser muito longo, logo, se for possível, a assinatura da falha
deve ser utilizada para gerar um mecanismo de recuperação automático capaz de
detectar e tratar futuras ocorrências similares, até que o defeito possa ser
removido. Nesta tese, a atividade de recuperação consiste em restaurar o sistema
para um estado correto, que permita continuar a execução com segurança, ainda
que com limitações em suas funcionalidades. Para serem eficazes, as tarefas de
diagnóstico e recuperação requerem informações detalhadas sobre a execução que
falhou. Falhas que ocorrem durante a fase de testes em um ambiente controlado
podem ser depuradas através da inserção de nova instrumentação e re-execução da
rotina que contem o defeito, tornando mais fácil o estudo de comportamentos inesperados. No entanto, falhas que ocorrem no ambiente de produção apresentam
informações limitadas à situação específica em que ocorrem, além de serem
imprevisíveis. Para mitigar essa adversidade, informações devem ser coletadas
sistematicamente com o intuito de detectar, diagnosticar para recuperar e,
eventualmente, diagnosticar para remover a circunstância geradora da falha. Além
disso, há um balanceamento entre a informação inserida como instrumentação e a
performance do sistema: técnicas de logging geralmente apresentam baixo
impacto no desempenho, porém não provêm informação suficiente sobre a
execução; por outro lado, as técnicas de tracing podem registrar informações
precisas e detalhadas, todavia são impraticáveis para um ambiente de produção.
Esta tese propõe uma abordagem hibrida para gravação e extração de informações durante a execução do sistema. A solução proposta se baseia no registro de
eventos, onde estes são enriquecidos com propriedades contextuais sobre o estado
atual da execução no momento em que o evento é gravado. Através deste registro
de eventos com informações de contexto, uma técnica de diagnóstico e uma
ferramenta foram desenvolvidas para permitir que eventos pudessem ser filtrados
com base na perspectiva de interesse do mantenedor. Além disso, também foi
desenvolvida uma abordagem que utiliza estes eventos enriquecidos para detectar
falhas automaticamente visando recuperação. As soluções propostas foram
avaliadas através de medições e estudos conduzidos em sistemas implantados,
baseando-se nas falhas que de fato ocorreram enquanto se utilizava o software em
um contexto de produção. / [en] Even software systems developed with strict quality control may expect failures during their lifetime. When a failure is observed in a production environment the maintainer is responsible for diagnosing the cause and eventually removing it. However, considering a critical service this might demand too long a time to complete, hence, if possible, the failure signature should be identified in order to generate a recovery mechanism to automatically detect and handle future occurrences until a proper correction can be made. In this thesis, recovery consists of restoring a correct context allowing dependable execution, even if the causing fault is still unknown. To be effective, the tasks of diagnosing and recovery implementation require detailed information about the failed execution. Failures that occur during the test phase run in a controlled environment, allow adding specific code instrumentation and usually can be replicated, making it easier to study the unexpected behavior. However, failures that occur in the production environment are limited to the information present in the first occurrence of the failure. But run time failures are obviously unexpected, hence run time data must be gathered systematically to allow detecting, diagnosing with the purpose of recovering, and eventually diagnosing with the purpose of removing the causing fault. Thus there is a balance between the detail of information inserted as instrumentation and the system performance: standard logging techniques usually present low impact on performance, but carry insufficient information about the execution; while tracing techniques can record precise and detailed information, however are impracticable for a production environment. This thesis proposes a novel hybrid approach for recording and extracting system s runtime information. The solution is based on event logs, where events are enriched with contextual properties about the current state of the execution at the moment the event is recorded. Using these enriched log events a diagnosis technique and a tool have been developed to allow event filtering based on the maintainer s perspective of interest. Furthermore, an approach using these enriched events has been developed that allows detecting and diagnosing failures aiming at recovery. The proposed solutions were evaluated through measurements and studies conducted using deployed systems, based on failures that actually occurred while using the software in a production context.
|
Page generated in 0.0499 seconds