Please use this identifier to cite or link to this item: https://hdl.handle.net/10316/24220
Title: Dependability Benchmarking for Large and Complex Systems
Authors: Costa, Pedro Miguel Lopes Nunes da 
Orientador: Silva, João Gabriel Monteiro de Carvalho e
Madeira, Henrique Santos do Carmo
Keywords: Dependability Benchmarking; Software Faults; Software Implemented Fault Injection
Issue Date: 13-Dec-2013
Citation: COSTA, Pedro Miguel Lopes Nunes da - Dependability Benchmarking for Large and Complex Systems. Coimbra : [s.n.], 2013. Tese de doutoramento. Disponível na WWW: <http://hdl.handle.net/10316/24220>
Abstract: The spread of computer-based systems and the growing number of its applications in critical tasks has increased the dependence of modern societies on that kind of systems. As a consequence, dependability benchmarking of computer systems, as a way to assess and compare the dependability of components and systems, has caught the attention of researchers and practitioners in recent years. One crucial component of dependability benchmarks is the fault injector. Dependability benchmarks must include fault injectors with very specific features: (i) they should be very easy to install and use, without the need for any complex setup or installation procedure;(ii) have high level of portability; (iii) have very low intrusiveness, in order to mitigate the performance loss; (iv) be capable of injecting faults in both user and system spaces; (v) and in code and data segments of any process, irrespective of their complexity; (vi) be independent of the availability of the source code of any system component or user process; (vii) be dynamically linked into a target system; and (viii) be compatible with the latest and most advanced software fault models. Since existing fault injectors do not fulfill these requirements, this thesis presents a pioneering SWIFI tool named DBench FI (Dependability Benchmarking Fault Injector), specially developed for dependability benchmarking. Their unique characteristics make it one of the most versatile fault injectors available. Among the main components of a dependability benchmark suite, the most critical one is undoubtedly the faultload. It should embody a repeatable, portable, representative and generally accepted fault set. Concerning software faults, the definition of that kind of faultloads is particularly difficult, as it requires a much more complex emulation method than the traditional stuck-at or bit-flip used for hardware faults. Moreover, a faultload based on software faults requires a clear separation between the software components which are selected as fault injection target and the benchmark target (i.e., the system under evaluation), as the injection of software faults actually changes the code of the target component. This way, the faults should be injected in one component (the fault injection target) in order to evaluate their impact in the other components or in the overall system, guaranteeing the inviolability of the benchmark target and the credibility of the dependability benchmark. Although faultloads based on software faults had already been proposed, the choice of adequate fault injection targets (i.e., actual software components where the faults are injected) is still an open and crucial issue. Knowing that the number of possible software faults that can be injected in a given system is potentially very large (especially for large and complex systems), the problem of defining a faultload made of a small number of representative faults is of utmost importance. This thesis presents a comprehensive fault injection study and proposes a strategy to guide the fault injection target selection to reduce the number of faults required for the faultload. Furthermore, it exemplifies the proposed approach with a real web-server dependability benchmark and a large-scale integer vector sort application.
O aumento da utilização dos sistemas informáticos e o número crescente das suas aplicações em tarefas críticas das sociedades modernas tem aumentado a dependência desse tipo de sistemas. Em consequência, nos últimos anos, as benchmarks de confiabilidade têm sido objeto de enorme interesse, quer por parte de investigadores, quer por parte da indústria. Um dos elementos fundamentais que integram as benchmarks de confiabilidade é o injetor de falhas. As benchmarks de confiabilidade devem incluir injetores de falhas com características muito específicas: (i) devem ser fáceis de instalar e de utilizar, não exigindo qualquer procedimento especial de instalação ou execução; (ii) devem possuir um elevado nível de portabilidade; (iii) devem possuir um baixo nível de intrusividade no sistema alvo, de forma a minorar a perda de desempenho; (iv) devem oferecer a capacidade de injetar falhas em todo o sistema alvo (quer no espaço do utilizador, quer no espaço do sistema); (v) assim como nos segmentos de código e de dados de qualquer processo, independentemente da sua complexidade; (vi) devem ser independentes da disponibilidade ou conhecimento do código fonte de qualquer componente do sistema ou processo de utilizador; (vii) ser dinamicamente integrados no sistema alvo; e (viii) ser compatíveis com os mais avançados e recentes modelos de falhas de software. Uma vez que os atuais injetores de falhas não satisfazem todos os requisitos mencionados, esta tese apresenta uma ferramenta de injeção de falhas pioneira, implementada por software (Software Implemented Fault Injection SWIFI), denominada DBench-FI, especialmente desenvolvida para benchmarks de confiabilidade. As suas características únicas fazem dele um dos mais versáteis injetores de falhas atualmente existentes. De entre os componentes fundamentais das benchmarks de confiabilidade (workload, faultload, medidas, e configuração experimental e procedimentos), a faultload é, sem dúvida, um dos mais críticos. Ela deve incorporar um conjunto de falhas repetível, portável, representativo e aceite pela comunidade e pela indústria. No que concerne a falhas de software, a definição desse tipo de fautloads é particularmente difícil, uma vez que exige métodos bastante mais complexos do que o tradicional stuck at ou bit-flip utilizado nas falhas de hardware. Adicionalmente, as faultload baseadas em falhas de software exigem uma clara separação entre os componentes de software que são selecionados como alvo da injeção de falhas e o alvo da benchmark (i.e., o sistema sob avaliação), uma vez que a injeção de falhas de software altera efetivamente o código do componente alvo. Desta forma, as falhas devem ser injetadas num componente (o alvo da injeção de falhas) a fim de se avaliar o seu impacto nos outros componentes ou no sistema como um todo, garantindo a inviolabilidade do alvo da benchmark e a credibilidade das benchmarks de confiabilidade. Apesar de terem já sido propostas faultloads baseadas em falhas de software, a escolha dos alvos da injeção de falhas (ou seja, os componentes de software onde as falhas são injetadas) continua a ser um tópico em aberto, apesar de fundamental. Sabendo-se que o número de falhas de software que podem ser injetadas num dado sistema é potencialmente muito grande, o problema da definição de uma faultload composta por um número pequeno de falhas representativas é de extrema importância. Esta tese apresenta igualmente um estudo exaustivo de injeção de falhas e propõe uma estratégia de orientação da seleção dos alvos da injeção de falhas para a redução o número de falhas necessárias numa faultload. Além disso, exemplifica a abordagem proposta com a utilização de uma benchmark de confiabilidade, real, para web-servers e de uma aplicação de ordenação de vetores de números inteiros de larga dimensão.
Description: Tese de Doutoramento em Engenharia Informática apresentada à Faculdade de Ciências e Tecnologia da Universidade de Coimbra
URI: https://hdl.handle.net/10316/24220
Rights: embargoedAccess
Appears in Collections:FCTUC Eng.Informática - Teses de Doutoramento

Files in This Item:
Show full item record

Google ScholarTM

Check


Items in DSpace are protected by copyright, with all rights reserved, unless otherwise indicated.