virtual machine services

27
Debugging operating systems Debugging operating systems with time-traveling virtual with time-traveling virtual machines machines Sam King Sam King George Dunlap George Dunlap Peter Chen Peter Chen CoVirt Project, University of Michigan CoVirt Project, University of Michigan

Upload: cameroon45

Post on 28-Jan-2015

116 views

Category:

Technology


1 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Virtual Machine Services

Debugging operating systems with Debugging operating systems with time-traveling virtual machinestime-traveling virtual machines

Sam KingSam King

George DunlapGeorge Dunlap

Peter ChenPeter Chen

CoVirt Project, University of MichiganCoVirt Project, University of Michigan

Page 2: Virtual Machine Services

Sam King University of Michigan 2 of 21

Cyclic debuggingCyclic debugging

Iterate, revisit previous states• Inspect state of the system at each point

Page 3: Virtual Machine Services

Sam King University of Michigan 3 of 21

Problems with cyclic debuggingProblems with cyclic debugging

Long runs• Each iteration costly

Non-determinism• Code might take different path each time bug executed

• Bug may not be triggered at all

Especially relevant for multithreaded apps, OS

Page 4: Virtual Machine Services

Sam King University of Michigan 4 of 21

Example: NULL pointerExample: NULL pointer

Walk call stack• Variable not modified

ptr == NULL?

Page 5: Virtual Machine Services

Sam King University of Michigan 5 of 21

Example: NULL pointerExample: NULL pointer

Set a conditional watchpoint• ptr might change often

ptr == NULL?ptr == NULL?ptr == NULL?

Page 6: Virtual Machine Services

Sam King University of Michigan 6 of 21

Example: NULL pointerExample: NULL pointer

Conditional watchpoint• Different code path, variable never set to NULL

All these are trying to find the LAST modification

Page 7: Virtual Machine Services

Sam King University of Michigan 7 of 21

Debugging with time traveling virtual Debugging with time traveling virtual machinesmachines

Provide what cyclic debugging trying to approx.

ptr = NULL!

Page 8: Virtual Machine Services

Sam King University of Michigan 8 of 21

Debugging with time traveling virtual Debugging with time traveling virtual machines (TTVM)machines (TTVM)

Reverse equivalent to any debugger motion function• Reverse watchpoint, breakpoint, step

Implement using time travel to previous states• Must be identical to “buggy” run• Instruction level granularity

Page 9: Virtual Machine Services

Sam King University of Michigan 9 of 21

OverviewOverview

Virtual machine platform

Efficient checkpoints and time travel

ReVirt: virtual machine replay system

Using time travel for debugging

Live demo

Conclude

Page 10: Virtual Machine Services

Sam King University of Michigan 10 of 21

Typical OS level debuggingTypical OS level debugging

Requires two computers

OS state and debugger state are in same protection domain• crashing OS may hang the debugger

host machine

application application

operating system

debugging stub

host machine

kerneldebugger

operating system

Page 11: Virtual Machine Services

Sam King University of Michigan 11 of 21

Using virtual-machines for debuggingUsing virtual-machines for debugging

host machine

application

operating system

application

kerneldebugger

virtual machine monitor[UML: includes host operating system]

debugging stub

Guest OS, operating system running inside virtual machine Debugger functions without any help from target OS

• Works even when guest kernel corrupted Leverage convenient abstractions provided by VM How similar is the guest OS?

Page 12: Virtual Machine Services

Sam King University of Michigan 12 of 21

Similarity of guest OSSimilarity of guest OS Want guest OS to be similar to host OS so bugs are portable

Differences not fundamental, result of VM platform we use

Architecture dependent code different between guest OS• Low-level trap handling• MMU functionality• Device drivers

Use the same host driver in guest

Trap and forward privileged instructions from guest• IN/OUT instructions• Memory mapped I/O• Interrupts• DMA

98% of Linux code runs unmodified in User-Mode Linux

Page 13: Virtual Machine Services

Sam King University of Michigan 13 of 21

Checkpoints: coarse grained time travelCheckpoints: coarse grained time travel

Periodic checkpoints for coarse grained time travel

Save complete copy of virtual-machine state: simple but inefficient• CPU registers

• virtual machine’s physical memory image

• virtual machine’s disk image

Instead, use copy-on-write and undo/redo logging• Technique applied both to memory and disk

Page 14: Virtual Machine Services

Sam King University of Michigan 14 of 21

How to time travel backwardHow to time travel backward

checkpoint 1

redolog

undolog

Page 15: Virtual Machine Services

Sam King University of Michigan 15 of 21

ReVirt: fine grained time travelReVirt: fine grained time travel

Based on previous work (Dunlap02)

Re-executes any part of the prior run, instruction by instruction

Re-creates all state at any prior point in the run

Logs all sources of non-determinism• external input (keyboard, mouse, network card, clock)

• interrupt point

Low space and time overhead• SPECweb, PostMark, kernel compilation

• logging adds 3-12% time overhead

• logging adds 2-85 KB/sec

Page 16: Virtual Machine Services

Sam King University of Michigan 16 of 21

How to time travel backwardHow to time travel backward

checkpoint 1

redolog

undolog

Page 17: Virtual Machine Services

Sam King University of Michigan 17 of 21

Using time travel to implement reverse Using time travel to implement reverse watchpointswatchpoints

Example: reverse watchpoint

First pass: count watchpoints

Second pass: wait for the last watchpoint before current time

checkpoint

1 2 3 41 2 3 4

Page 18: Virtual Machine Services

Sam King University of Michigan 18 of 21

Using TTVMUsing TTVM

Checkpoint at moderate intervals (e.g., 25 seconds)• < 4% time overhead

• < 6 MB/s space overhead

Exponentially thin out prior checkpoints (Boothe 00)

Take checkpoints at short intervals (e.g., 10 seconds)• < 27% time overhead

• < 7 MB/s space overhead

Page 19: Virtual Machine Services

Sam King University of Michigan 19 of 21

Experiences with TTVMExperiences with TTVM

Corrupted debugging information• TTVM still effective when stack was corrupted

Device driver bugs• Handles long runs

• Non-determinism

• Device timing issues

Race condition bugs• Live demo

Page 20: Virtual Machine Services

Sam King University of Michigan 20 of 21

Live demoLive demo

Page 21: Virtual Machine Services

Sam King University of Michigan 21 of 21

ConclusionsConclusions

Programmers want to debug in reverse

Current debugging techniques are poor substitutes for reverse debugging

Time traveling virtual machines efficient and effective mechanism for implementing reverse debugging

Page 22: Virtual Machine Services

Sam King University of Michigan 22 of 21

QuestionsQuestions

Page 23: Virtual Machine Services

Sam King University of Michigan 23 of 21

Multi-processor supportMulti-processor support

Checkpointing does not change

Must be able to support replay• Topic of ongoing research

• Support at hardware level, flight data recorder ()– Fast, limited amount of time recorded

• Software level, page protections to track sharing– Might be slow?

Might not allocate all processors to one OS

Page 24: Virtual Machine Services

Sam King University of Michigan 24 of 21

Page 25: Virtual Machine Services

Sam King University of Michigan 25 of 21

Page 26: Virtual Machine Services

Sam King University of Michigan 26 of 21

Page 27: Virtual Machine Services

Sam King University of Michigan 27 of 21