Details

Preparing for replay

by Huselius, Joel

Abstract (Summary)
Cyclic debugging is the process normally used for examining and removing bugs in computer systems. For this process, the possibility to deterministically repeat executions is a requirement - without repeatible experiments, it is not certain that existing bugs can be located. Thus, in order to debug realtime systems, which normally do not allow repeatable experiments, additional methods are needed to provide repeatability. Several solutions based on a resource demanding record/replay approach have been proposed: By recording data describing the occurencies of non-deterministic events during a reference execution, and then using this data to force a consequtive replay excecution to perform in the same way as the reference, repeatability in experiments is achieved. We adhere to the previous work on deterministic replay by Thane et al. The method assumes that memory resources have limited capacity compared to the amount of data recorded. This assumption leads to that data available after the completion of the reference execution does not cover the reference execution in its entirety, wherefore replay must be started from a state which is not the initial state of the system. To facilitate this, at predefined locations in the code, checkpoints are taken of the individual task-states. In order to reduce the overhead imposed on the system, checkpoints are not required to be exhaustive, only to cover the parts of the data-space with non-deterministic properties. The combination of these factors leads to an environment that requires new methods for initiating replay - one of the contribution of this thesis is such a method. By treating each task in the system independently, we show (by means of an industrial case-study) that a restarted version of the system can be made to look like the reference execution. In order to guarantee that a replay execution can always be performed, the addition of this new method triggers the requirement of new dynamic methods for managing data during recording. The second contribution of this thesis is a dynamic memory manager that fills this gap and is also shown to improve memory utilization in sporadic real-time systems. Abstract Cyklisk debuggning är en vanlig process för att debugga datorsystem. Processen kräver ofta repeterade experiment (därav namnet), vilket endast är möjligt om exekveringen av systemet är möjligt att reproducera - eftersom att parallella och/eller realtidssystem normalt inte kan garantera detta krävs en speciell lösning. Record/replay är en ofta använd sådan, vilken i stort fungerar som en videobandspelare; genom att först spela in en referensexekvering av systemet kan denna sedan deterministiskt återskapas om och om igen i en modell av systemplattformen. En stor nackdel med denna lösning är att resursåtgången för att spela in en exekvering är stor - både vad gäller minnes- och tidsåtgång. Tidigare lösningar har använt checkpoints för att slippa spara inspelningar som sträcker sig över hela systemets exekveringstid (vilken kan vara dagar, till och med år). Vi har i detta arbete vidareutvecklat en lösning av Thane et al. vilken använder icke-kompletta checkpoints för att ytterligare minska minnesåtgången vid inspelning. Genom att utesluta de deterministiska elementen från checkpoints så kan resurser sparas. Dock, användandet av sådana checkpoints leder till ett behov av nya metoder som kan starta exekveringen av systemet i ett tillstånd som inte är systemets initialtillstånd. I denna uppsats presenterar vi en sådan metod vilken fungerar genom att behandla var task (eller process) för sig; genom en case-study utförd i industrin visar vi att metoden verkligen kan få ett återstartat system att se ut som referensexekveringen. Det visar sig dock att användandet av metoden kräver nya dynamiska metoder för att hantera minnesutrymmet allokerat för data inspelat under referensexekveringen. Utan en sådan metod kan inga garantier ges för att exekveringen kan återskapas. Vidare krävs av denna metod att den har en konstant exekveringstid; utan konstant exekveringstid kommer jittret i systemet att öka vilket leder till att systemet blir mer yttermera svårt att testa. Vi presenterar även en sådan metod, med konstant exekveringstid, och visar i en utvärdering att den, förutom att som första metod fylla samtliga av de uppställda kraven på en sådan metod, även ger ett bättre resultat i sporadiska realtidssystem än tidigare kända metoder. Till Rebecca
Bibliographical Information:

Advisor:

School:Mälardalens högskola

School Location:Sweden

Source Type:Master's Thesis

Keywords:

ISBN:91-88834-15-8

Date of Publication:01/01/2003

© 2009 OpenThesis.org. All Rights Reserved.