Utilize este identificador para referenciar este registo: https://hdl.handle.net/10316/29182
Título: Fault Injection for Online Failure Prediction Assessment and Improvement
Autor: Irrera, Ivano 
Orientador: Vieira, Marco Paulo Amorim
Palavras-chave: Online failure prediction; Benchmarking; Software fault injection; Dynamic systems; Virtualization; Previsão de avarias; Injeção de falhas de software; Testes padronizados; Sistemas de software dinâmicos; Virtualização
Data: 11-Jan-2016
Citação: IRRERA, Ivano - Fault injection for online failure prediction assessment and improvement. Coimbra : [s.n.], 2016. Tese de doutoramento. Disponível na WWW: http://hdl.handle.net/10316/29182
Resumo: Software is the fundamental brick of the systems that pervade our society, such as communications, transportation, business and health caring. In fact, software is a mean for building and controlling increasingly complex business processes, with an unlimited potential. However, complex software hides defects (i.e., software faults) that may lead to the occurrence of failures affecting the business. Several techniques allow decreasing the number of software faults (e.g., testing) or reacting to the occurrence of failures (e.g., fault tolerance). Nonetheless, it is well known that failures are ultimately unavoidable events that may cause loss of data, performance, or even money or human lives. A solution for limiting the damage caused by system failures is to predict their occurrence by analyzing the system and observing its state. Failure Prediction is a technique proposed in the past to predict failures by analyzing the system architecture and the development processes, or by learning from past failure data (e.g., the time between successive failures). Such technique evolved into Online Failure Prediction, which correlates past failure data with the current system state, increasing the quality of the prediction. In practice, the prediction of an incoming failure allows performing mitigation actions, such as saving data or restarting parts of a system, to lessen possible hazards. Despite its potential, Online Failure Prediction is still not widely adopted. The main reason is that failures are rare events and the collection of the failure data needed for training a predictor is a non-controllable process that takes a long time and has a high cost. This becomes even more evident if we consider that current software systems are dynamic in nature and that the failure data collected today may not portray the behavior of the system tomorrow. In fact, the difficulty in collecting failure data is the main reason why Online Failure Prediction has not been used in practice so far, as training, optimizing and validating failure prediction models becomes very hard to achieve. This work addresses the current limitations of Online Failure Prediction by taking advantage of fault injection techniques to speed up the occurrence of failures. The thesis is that software fault injection is a valid solution to generate failure-related data in short time for a particular system, promoting the use of Online Failure Prediction by helping in training, optimizing and validating different prediction models. First, we study the conditions under which software fault injection can be used to support failure prediction and proposes an approach to generate failure-related data and assess their accuracy. Then, we propose a method for assessing and comparing different failure prediction models in the context of a particular target system, and present a framework for self-adapting online failure prediction systems based on the continuous generation of failure data on a virtualized copy of the target system, thus facing the dynamic features of current software systems. A preliminary method for selecting the best variables for predicting failures is also presented. To validate and demonstrate the different techniques and tools, we present a number of case studies. The target system used in the case studies is based on a Windows XP OS running several different workloads, ranging from a simple file compression algorithm, up to a web server. This diversity allows collecting insights on the impact of the workload on the failure data generation and failure prediction. The web server workload, made of the widely used Apache Tomcat web server, provides a realistic scenario, which is used for analyzing the impact of updates on the prediction of failures on the system. The reason that stays behind the choice of Windows XP is that it was a widely spread and stable operating system whose failures are well known, thus being a good environment for analyzing failures caused by injected faults. Results clearly show that fault injection can be used to improve the state-of-the-art on failure prediction.
A cada vez maior complexidade do software faz com que muitos sistemas sejam usados contendo defeitos (i.e., falhas de software) que podem levar à quebra do seu correto funcionamento (i.e., avarias). Várias técnicas permitem a mitigação dos efeitos das falhas de software, diminuindo o número de falhas (por exemplo, através de testes), ou reagindo à ativação das falhas existentes (por exemplo, através técnicas de tolerância a falhas). No entanto, as avarias são eventos inevitáveis na vida de um sistema complexo e podem levar à perda de dados, desempenho, dinheiro ou até vidas. Uma solução para mitigar os danos causados por falhas de software consiste em prever a ocorrência de avarias através da análise do sistema, em particular a observação do seu estado interno. Esta técnica, denominada de previsão de avarias (Failure Prediction), foi inicialmente baseada na análise da arquitetura e do processo de desenvolvimento do sistema, podendo também considerar dados históricos sobre o seu funcionamento (por exemplo, o tempo de intercorrência entre duas falhas sucessivas). Mais recentemente, evoluiu-se para a previsão de avarias em tempo de execução (Online Failure Prediction), em que os dados sobre o funcionamento passado de um sistema são correlacionados com o seu estado atual, de forma a obter uma melhor qualidade na previsão. Na prática, prever a ocorrência de uma avaria permite executar ações de mitigação e diminuir os riscos, como por exemplo gravar os dados ou reiniciar partes do sistema. Apesar do seu potencial, a previsão de avarias em tempo de execução é ainda pouco utilizada. A principal razão reside na dificuldade em treinar os mecanismos de previsão, já que tal requer a recolha de dados relacionados com avarias observadas no passado. Este processo requer tipicamente demasiado tempo e não é controlável, resultando num custo elevado. Isto torna-se ainda mais evidente se considerarmos que os sistemas de software atuais são dinâmicos por natureza: isto é, evoluem ao longo do tempo levando a que os dados recolhidos num intervalo de tempo se tornem rapidamente obsoletos. De facto, a dificuldade em recolher dados é a razão principal para que as técnicas de previsão de avarias em tempo de execução não sejam ainda utilizadas na prática, uma vez que o treino, otimização e validação dos modelos de previsão se tornam difíceis de realizar. Este trabalho aborda as limitações atuais da previsão de avarias, através da utilização de técnicas de injeção de falhas de software para acelerar a ocorrência de avarias. A hipótese é que a injeção de falhas é uma solução válida para gerar dados de avarias em um sistema durante um curto intervalo de tempo, suportando assim o treino, otimização e validação de diferentes modelos de previsão. Em primeiro lugar, são estudadas as condições nas quais a injeção de falhas de software pode ser utilizada para suportar a previsão de avarias, sendo proposta uma abordagem para a geração de dados e para a avaliação da representatividade desses mesmos dados. De seguida, é proposto um método para avaliar e comparar diferentes modelos de previsão no contexto de um sistema específico e apresentada uma solução para a auto-adaptação de sistemas de previsão de avarias capaz de acompanhar a evolução do sistema. A solução proposta assenta na geração contínua de dados em uma cópia virtualizada do sistema. Para além disso, é proposto um método para selecionar as melhores variáveis para suportar o processo de previsão. Para demonstrar e validar as diferentes técnicas e soluções propostas, são apresentados vários casos de estudo. Os sistemas utilizados são baseados no sistema operativo Windows XP e incluem a execução de diferentes cargas de trabalho, desde um simples algoritmo de compressão de arquivos, até um servidor Web. Esta diversidade permite estudar o impacto da carga de trabalho na geração de dados. Os resultados mostram a aplicabilidade da injeção de falhas de software no contexto da previsão de avarias em sistemas de computadores.
Descrição: Tese de doutoramento em Ciências e Tecnologias da Informação, apresentada ao Departamento de Engenharia Informática da Faculdade de Ciências e Tecnologia da Universidade de Coimbra
URI: https://hdl.handle.net/10316/29182
Direitos: openAccess
Aparece nas coleções:FCTUC Eng.Informática - Teses de Doutoramento

Ficheiros deste registo:
Ficheiro Descrição TamanhoFormato
Fault Injection for Online Failure Prediction.pdf4.74 MBAdobe PDFVer/Abrir
Mostrar registo em formato completo

Visualizações de página

346
Visto em 26/mar/2024

Downloads 50

918
Visto em 26/mar/2024

Google ScholarTM

Verificar


Todos os registos no repositório estão protegidos por leis de copyright, com todos os direitos reservados.