techniques for efficiently recording state changes of a computer environment to support reversible...

Post on 13-Dec-2015

214 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

TECHNIQUES FOR EFFICIENTLY RECORDING TECHNIQUES FOR EFFICIENTLY RECORDING STATE CHANGES OF A COMPUTER ENVIRONMENT STATE CHANGES OF A COMPUTER ENVIRONMENT

TO SUPPORT REVERSIBLE DEBUGGINGTO SUPPORT REVERSIBLE DEBUGGING

Steve Lewis

Outline of PresentationOutline of Presentation

Introduction to Reversible DebuggingRelated WorkState History Recording TechniquesFuture WorkJ.I.M.S. Demonstration

IntroductionIntroduction What is reversible

debugging?– Reverse Execution– Undo

Why is it useful?– Learning tool– Reduce debugging time– Parallel Programs

Related WorkRelated Work EXDAMS (Balzer)

– Flowback Analysis, History Tape IGOR (Fieldman, Brown)

– Incremental Checkpoints, Modified Memory Pages SPYDER (Agrawal, DeMillo, Spafford)

– Execution-History Backtracking vs. Structured Backtracking LEONARDO (Demetrescu, Finocchi)

– Reversible virtual CPU, virtual O/S, history recording Bidirectional Debugging (Bob Boothe)

– Event counters which facilitate re-execution

History Logging TechniquesHistory Logging Techniques

Data Representation of State ChangesCheckpoint CreationWhen to Create CheckpointsCheckpoint Culling Algorithm

Data Representation of State ChangesData Representation of State Changes

Checkpoints record the entire state of the machine at some time index t.

State change records record incremental changes to the state of the machine.

Data Representation of State ChangesData Representation of State Changes

Data Representation of State ChangesData Representation of State Changes

Checkpoint CreationCheckpoint Creation

Checkpoint CreationCheckpoint Creation

When to Create CheckpointsWhen to Create CheckpointsCompromise between…

– Space conserved by using checkpoints– Distance between checkpoints

When to Create CheckpointsWhen to Create CheckpointsIf (StateHistorySize >= K * CheckpointSize) Then createCheckpoint()

Requires estimating size of next checkpoint Perform every cycle? What is a good value for K? Larger values of K…

– Decrease the growth rate of state history– Increase the distance between checkpoints

Checkpoint Culling AlgorithmCheckpoint Culling Algorithm

Motivation– Maintain the condition that the time to go

backwards u steps is proportional to u.– Reduce state history growth rate from a linear

function to a logarithmic function.

Checkpoint Culling AlgorithmCheckpoint Culling Algorithm

Checkpoint Culling AlgorithmCheckpoint Culling Algorithm

State History GrowthState History GrowthByte Size of State History Over Time (SORT program)

4000

9000

14000

19000

100 1100 2100 3100 4100 5100 6100 7100 8100 9100 10100

Cycle Index

Siz

e o

f S

tate

His

tory

(byte

s)

Byte Size of State History

Byte Size of State History Over Time (FACTOR program)

5000

6000

7000

8000

9000

1 3 5 7 9 11

13

15

17

19

21

23

25

27

29

31

Cycle Index (x1000)

Siz

e o

f S

tate

His

tory

(byte

s)

Byte Size of State History

Future WorkFuture Work Merging checkpoints

– Save space by storing checkpoint deltas and still be able to use the Checkpoint Culling Algorithm

Investigate alternative methods for deciding when to create checkpoints

Implement circular state history record buffer– Necessary to maintain O(u) runtime for undo operation

More work on JIMS– More authentic simulation (e.g. memory mapped I/O)– Improved GUI (threads, exceptions)

Case study – To find patterns regarding the use of undo.

top related