and ofnorm/508/2007w1/summaries/paper21/ttvm.pdf · 5 1 slides ppt5_1.slides.ppt. cyclic debugging...

61
SamuelT. King, George W. Dunlap, and Peter M. Chen University of Michigan Presented by: Zhiyong (Ricky) Cheng

Upload: others

Post on 26-Jan-2021

8 views

Category:

Documents


0 download

TRANSCRIPT

  • Samuel T. King, George W. Dunlap, and Peter M. ChenUniversity of Michigan

    Presented by: Zhiyong (Ricky) Cheng

  • OutlineOutlineOutlineOutline

    Background IntroductionIntroductionVirtual Machine ModelTime‐traveling Virtual MachineTTVM‐aware GDBTTVM‐aware GDBPerformanceConclusionQuestionsQuestions

  • BackgroundBackgroundBackgroundBackground

    The paper was published in USENIX 2005 , and won the best paper rewardand won the best paper reward.The name of research group was CoVirt. Now th  f    “Vi t l hi  b d they focus on “Virtual‐machine based security services .”  Link: http://www.eecs.umich.edu/virtual/The main author of the paper, Sam King, had p p , g,graduated and now teaching “Hot topics in virtualization and security” course at UIUC.virtualization and security  course at UIUC.

  • Background (cont’d)Background (cont’d)Background (contd)Background (contd)

    Although this paper and the previous paper are come from the same research group, this paper come from the same research group, this paper is more like a “by‐product”.

    Cannot find source code;Cannot find source code;Doesn’t match main research interests of the group.Actually  it is the only paper related to OS debuggingActually, it is the only paper related to OS debugging.

    I borrowed some slides from the original presentation: presentation: http://www.eecs.umich.edu/virtual/papers/king05 1 slides ppt5_1.slides.ppt

  • Cyclic debuggingCyclic debuggingCyclic debuggingCyclic debugging

    Iterate  revisit previous statesIterate, revisit previous statesInspect state of the system at each point

  • Problems with cyclic debuggingProblems with cyclic debuggingProblems with cyclic debuggingProblems with cyclic debugging

    Long runsEach iteration costlyy

    Non‐determinismCode might take different path each time bug g p gexecutedBug may not be triggered at all

    Especially relevant for multithreaded apps, Operating SystemsDebugging is a combination of detective work, guesswork, and systematic search.

  • Example: NULL Example: NULL pointerpointerExample: NULL Example: NULL pointerpointer

    ptr == NULL?

    Detective work: Investigating crash pointGuesswork: Caused by the NULL pointer?What should we do next?

  • Example: NULL pointerExample: NULL pointerExample: NULL pointerExample: NULL pointer

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

    Set a conditional watchpoint (Systematic h) search) 

    ptr might change often Long runs!

  • Example: NULL pointerExample: NULL pointerExample: NULL pointerExample: NULL pointer

    C diti l  t h i tConditional watchpointDifferent code path, variable never set to NULL

    All these are trying to find the LAST d fmodification

  • Solution: Debugging with time traveling virtual Solution: Debugging with time traveling virtual Solution: Debugging with time traveling virtual Solution: Debugging with time traveling virtual machine (TTVM)machine (TTVM)

    Running the OS inside a virtual machine (Virtual machine)

    Debugging without perturbing its state.Able to navigate backward and forward arbitrarily through the execution history. (Time traveling)

    G   b k t  th   i   i tGo  back to the prior points;Fast forward to the crash point;Work in presentence of non determinismWork in presentence of non‐determinism.No need to repeat the entire run. (Comparing to the cyclic debugging)y gg g)

  • Debugging Debugging with time traveling virtual with time traveling virtual machinemachineDebugging Debugging with time traveling virtual with time traveling virtual machinemachine

    P id   h t  li  d b i  t i  t  Provide what cyclic debugging trying to approx.

    ptr = NULL!

  • Debugging with time traveling virtual Debugging with time traveling virtual machinesmachinesDebugging with time traveling virtual Debugging with time traveling virtual machinesmachines

    Reverse equivalent to any debugger motion functionReverse stepReverse breakpointpReverse watchpoint

    Implement using time travel to previous Implement using time travel to previous statesMust be identical to “buggy” runggyInstruction level granularity

  • Typical OS level debuggingTypical OS level debuggingTypical OS level debuggingTypical OS level debugging

    Requires two computersOS state and debugger state are in same protection domain

    crashing OS may hang the debugger

    application applicationkerneldebuggerapplication application

    operating system

    debugger

    operating system

    host machine

    p g ydebugging stub

    host machine

    p g y

    host machine host machine

  • Using virtualUsing virtual‐‐machines for debuggingmachines for debuggingapplicationapplication

    operating system kerneldebugger

    virtual machine monitor[UML: includes host operating system]

    debugging stub

    host machine

    [UML: includes host operating system]

    Guest OS, operating system running inside virtual machineDebugger functions without any help from target OSDebugger functions without any help from target OS

    Works even when guest kernel corrupted

    Leverage convenient abstractions provided by VM – the interface of physical machine.

  • System Structure from paperSystem Structure from paper

    gdbguest‐userhost process

    guest‐kernelhost processgdb host process host process

    TTVM functionality(checkpointing, logging, replay)

    host OS

    Notice the difference ?Where is the debugging stub?gg g

  • Guest OS and host OSGuest OS and host OSGuest OS and host OSGuest OS and host OS

    Want guest OS to be similar to host OS so bugs are portable.g pDifferences  are not fundamental, result of VM platform we use (UMLinux):92%  of code are architecture independent.Architecture dependent code different between 

    t OS  d h t OS (8% t t l)guest OS and host OS (8% total)Low‐level trap handlingMMU functionalityMMU functionalityDevice drivers  (6% total)

  • Guest OS and host OS (cont’d)Guest OS and host OS (cont’d)Guest OS and host OS (contd)Guest OS and host OS (contd)

    Use the same host driver in guestTrap and forward privileged instructions from Trap and forward privileged instructions from guest (Discuss later)IN/OUT instructions/Memory mapped I/OInterruptsInterruptsDMA

    98% of Linux code runs unmodified in User‐98% of Linux code runs unmodified in User‐Mode Linux. Therefore can be debugged.

  • Logging  and replaying a VM – ReVirt

    H  d i  d i  i   h    OSHost device drivers in the guest OS

    CheckpointingCheckpointing

    Expected usage model

  • Logging and replaying a VMLogging and replaying a VMLogging and replaying a VMLogging and replaying a VM

    Based on the previous paper ‐ ReVirt (Dunlap02).Re‐executes any part of the prior run, instruction y p p ,by instructionRe‐creates all state at any prior point in the runLogs all sources of non‐determinism

    external input (keyboard, mouse, network card, clock)i t t  i tinterrupt point

    Researchers are investigating ways to support replay on multiprocessors  (Lots of questions)replay on multiprocessors. (Lots of questions)

    Reference 29: A Flight Data Recorder for Enabling Full‐system Multiprocessor Deterministic Replayy p p y

  • Host device drivers in guest OSHost device drivers in guest OSHost device drivers in guest OSHost device drivers in guest OS

    Problem: VMM only export a limited set of virtual devices to guest OSvirtual devices to guest OS.

    Good for general purposes because it frees guest OSs from needing device driversOSs from needing device drivers.Bad for debugging OSs because cannot work on real device driversreal device drivers.

    Two approaches to solve the problem:Provide software emulators for the real devices.Extend Revirt and modify VMM.

  • Host device drivers in guest OS (cont’d)Host device drivers in guest OS (cont’d)Host device drivers in guest OS (contd)Host device drivers in guest OS (contd)

    Software emulator approach:Device driver issues I/O instruction to VMM.VMM traps instructions and forward to emulator.Must find an accurate software emulator.

    S d  h Second approach :Extend ReVirt to log and replay the data returned by IN instructions, memory‐mapped I/O instructions and st uct o s, e o y apped /O st uct o s a dDMA memory loads.VMM must be modified to support x86 IN/OUT instructions and memory mapped I/O and DMAinstructions and memory‐mapped I/O and DMA.Extra traps and logging operations.Possible to corrupt host’s physical memory.p p y y

  • CheckpointingCheckpointingCheckpointingCheckpointing

    Periodic checkpoints for coarse grained time travel.Save complete copy of virtual‐machine state: simple but inefficient. (Like full backup)p p

    CPU registersvirtual machine’s physical memory imagevirtual machine’s disk image

    Instead, use copy‐on‐write and undo/redo logging. (Like differential backup)

    Technique applied both to memory and disk

  • How to time travel backwardHow to time travel backwardHow to time travel backwardHow to time travel backward

    checkpoint 1

    Write A

    A

    Write A

    B

    B

    redolog

    undolog

  • Checkpointing  (Cont’d)Checkpointing  (Cont’d)Checkpointing  (Contd)Checkpointing  (Contd)

    checkpoint1 checkpoint3checkpoint2

    write writewrite writewritewriteA EDACB

    A AA A

    C

    B

    E

    D

    C

    B

    E

    D

    C E

    redo undo

    C

    undo

    E

    redolog loglog log

  • Adding and deleting checkpointsAdding and deleting checkpointsAdding and deleting checkpointsAdding and deleting checkpoints

    Imagine that checkpoints are nodes of doubly linked list and linked by undo/redo logs  linked list and linked by undo/redo logs. Then adding and deleting checkpoints is just 

        ddi /d l ti     d  t /f  th  same as adding/deleting a node to/from the doubly linked list.

    So far  TTVM is ReVirt + checkpointingSo far, TTVM is ReVirt + checkpointing

  • Expected usage modelExpected usage modelExpected usage modelExpected usage model

    In phase 1, the programmer runs a test to trigger an error. This phase may last a long time.p y gIn phase 2, the programmer attaches the debugger, switches the system from logging to gg y gg greplay, and prepares to debug the error.In phase 3, the programmer debugs the error by p 3 p g g ytime traveling forward and backward through the run.Comparing to traditional debugging process, do you notice the difference?

  • Time travel with gdb

    TTVM/debugger interactions

    TTVM on guest applicationsTTVM on guest applications

    Reverse gdb implementationg p

  • Time travel within Time travel within gdbgdbTime travel within Time travel within gdbgdb

    Traditional way of reverse debugging: reverse execution.

    Gain control when crash occursTraverse up the call stackOr re‐run the system with a watchpoint set on the point variable. (only works if the bug is deterministic)

    D b kDrawbacksNon‐deterministic bugsWh  if  h   k i   d? What if the stack is corrupted? 

    Adding reverse commands to gdb can solve the blproblem

  • Time travel within Time travel within gdbgdb(cont’d)(cont’d)Time travel within Time travel within gdbgdb(contd)(contd)

    Adding reverse commands to gdb can solve the problem.

    Reverse continueReverse stepG t (  ti  i  th   ti )Goto (any time in the execution)

    Reverse continue takes the virtual machine back to a previous point   For example  the programmer set a previous point.  For example, the programmer set a watchpoint on the pointer variable and issue the reverse continue command. After executing this gcommand, the debugger would return control to the programmer at the last time the variable was modifiedmodified.

  • Time travel within Time travel within gdbgdb(cont’d)(cont’d)Time travel within Time travel within gdbgdb(contd)(contd)

    h k icheckpoint

    1 2 3 41 2 3 4

    Example: reverse continueFirst pass: count breakpoints; at the end, the programmer sees a list of breakpoints.Second pass: the programmer pick one bp , and ttvmt   t th  b d  t   t l t  stops at the bp and return control to programmer.

  • TTVM/debugger interactionsTTVM/debugger interactionsTTVM/debugger interactionsTTVM/debugger interactions

    Problem: gdbmingles debugging state and virtual machine state. (gdb doesn’t know the 

    i t   f  i t l  hi )existence of virtual machine)So, TTVM must track all modifications gdbmakes to the virtual state  Then  TTVM can make makes to the virtual state. Then, TTVM can make debugging state persistent across checkpoint restores by manually restoring the debugging y y g gg gstate after the checkpoint is restored. Also, TTVM removes any modifications caused b  th  d b  b f  t ki     h k i t    by the debugger before taking a checkpoint, so that the checkpoint includes only the original vitural‐machine state. (make ReVirt happy). vitural machine state. (make ReVirt happy). 

  • TTVM on guest applicationsTTVM on guest applicationsTTVM on guest applicationsTTVM on guest applications

    TTVM can also be used to debug multi‐threaded guest applicationsthreaded guest applications.Challenges:

    Detecting the current guest processUnderstand guest kernel task structs.

    This part of implementation is VMM‐specific.

  • Reverse Reverse gdbgdbimplementationimplementationReverse Reverse gdbgdbimplementationimplementation

    Gdb and TTVM communicate via gdb remote serial protocol.pImplemented as host kernel device driver. (as a stub, must support the `g', `G', `m', `M', `c', and pp g`s‘  gdb commands)Gdb need not be modified.Virtual machine is out of scene –These reads and writes are transparent to VM.pSo, is this gdb a real debugger?

  • Reverse Reverse gdbgdbimplementation (cont’d)implementation (cont’d)Reverse Reverse gdbgdbimplementation (contd)implementation (contd)

    In my opinion, it is not a real debugger.The TTVM acts as a remote debugger stub and ggcommunicate with gdb via gdb remote serial protocol.Th   db (TTVM )  d   d  t  The gdb (TTVM‐aware) sends commands to TTVM and displays whatever is transferred back from TTVM, like a terminal.from TTVM, like a terminal.Therefore, gdb is just like a remote controller for the VM logging/replaying system – ReVirt, and gg g p y g y ,TTVM is just like the IR receiver in the middle.If this is the case, why not write a dedicated li t  l i   ft ? client replaying software? 

  • Performance  Performance  –– Testing environmentTesting environmentPerformance  Performance   Testing environmentTesting environment

    Machine: Uniprocessor 3 Ghz Pentium 4, 1 GB memory,1 GB memory,120 GB Hitachi Deskstar GXP disk

    Host OS: Linux 2 4 18 with UML running with SKAS(Separate Kernel Address Linux 2.4.18 with UML running with SKAS(Separate Kernel Address Space) extensionTTVM modifications. (device driver hacks, communication with gdb)

    Guest OS: Guest OS: UML port of Linux 2.4.20Drivers for the USB and sound card devices256 MB memory5 y5 GB disk.

    Both guest and host file systems initialized from RedHat 9 distribution.d st but o

  • Performance  Performance  –– guest workloadsguest workloadsPerformance  Performance   guest workloadsguest workloads

    Three guest workloads measured:SPEC99web using Apache (Spec99web is SPEC99web using Apache (Spec99web is benchmark for evaluating performance of 

    b  ) web servers) 3 successive builds of linux 2.4 kernel where each build executes make clean; make dep; make bzImage;g ;PostMark – filesystem benchmark.

  • Performance  Performance  –– overheadsoverheadsPerformance  Performance   overheadsoverheads

    Time and space overhead of loggingLogging without checkpointingLogging without checkpointing:

    Time overhead Space overhead

    Spec99web 12% 85KB/sec

    Kernel build 11% 7KB/sec

    PostMark 3% 2KB/sec

    Replay without checkpointing:1 – 3 % longer for all three workloads1  3 % longer for all three workloads

  • Performance  (cont’d)Performance  (cont’d)Performance  (contd)Performance  (contd)Running time with checkpointing:Running times are normalized to running the workload withoutRunning times are normalized to running the workload withoutany checkpoints

  • Performance  (cont’d)Performance  (cont’d)Performance  (contd)Performance  (contd)

    Space overhead of checkpointing

  • Performance  (cont’d)Performance  (cont’d)Performance  (contd)Performance  (contd)Time to restore a checkpoint

    The large jump at a restore distance of 600 seconds for PostMarkThe large jump at a restore distance of 600 seconds for PostMarkis due to restore  enough data to trash the host memory.

  • Experiences with TTVMExperiences with TTVMExperiences with TTVMExperiences with TTVM

    Corrupted debugging informationTTVM still effective when stack was corruptedTTVM still effective when stack was corrupted

    Device driver bugsHandles long runsNon‐determinismDevice timing issues

    Race condition bugsRace condition bugsMremap bug

  • ConclusionsConclusionsConclusionsConclusions

    This paper presents a creative application of virtual‐machine logging /replay systems such as R Vi t  “TTVM i  th  fi t  t  th t  id  ReVirt. “TTVM is the first system that provides practical reverse debugging for long‐running, multi‐threaded programs such as an operating multi threaded programs such as an operating system.”However, TTVM is unlikely to beat the current , ydebugging techniques in a short period.

    First, TTVM relies on the accuracy of other  systems such as VMM ReVirt and their extensions/hacks  If any such as VMM,ReVirt and their extensions/hacks. If any of these systems goes wrong, TTVM cannot give the accurate debug information.

  • Conclusions (cont’d)Conclusions (cont’d)Conclusions (contd)Conclusions (contd)

    Second, I’ll put a question mark on TTVM’s  efficiency. The paper says that “Taking a reverse single step took about 12 seconds on average” without mentioning the size of g glogging data. Also, no information of goto command’s efficiency.PostMark is able to trash the host memory during the reply PostMark is able to trash the host memory during the reply tests. So, how long can we “time travel” using TTVM?

    I don’t know why they choose to hack/extend gdbinstead of implementing a dedicated replay client instead of implementing a dedicated replay client software. The first approach apparently will add more overheads and constraints:

    Must follow gdb remote serial protocolTwo execution passes for reverse commandsAnd moreAnd more…

  • Virtual machine modelVirtual machine modelVirtual machine modelVirtual machine model

    The authors claim that 98% of the host OS code base can be debugged in the guest OS. How did they come up with this number? What kind of 

    d i h l % d h i by p

    code is the last 2%, and why can it not be debugged? 

    The authors state that "applying the techniques in this paper to a non para‐virtualized VMM such as VMware would enable reverse debugging to 

    k f    h  OS b "  Wh   d h ? gg g

    work for any host OS bug."  Why and how? Would "any host OS bug" include timing‐dependent bugs?  Are fully virtualized VMMs likely to be more similar to the OS that runs on likely to be more similar to the OS that runs on the hardware than a para‐virtualized VMM (a possible reason)?  Does VMware provide reverse debugging? debugging? 

  • Virtual machine modelVirtual machine modelVirtual machine modelVirtual machine model

    Does the fact that the OS being debugged is running on top of a virtual machine and g panother OS affect the bugs and debugging?In terms of reverse debugging, what are the 

    /   f  d i      OS lik  UML pros/cons of adopting a guest OS like UML that creates a separate host process for guest processes compared to UMLinux that creates processes compared to UMLinux that creates a single host process that encompasses both guest OS and guest processes?g g p

  • PerformancePerformancePerformancePerformance

    It is never mentioned what is a typical period of time their technique is capable of logging, q p gg g,could this be due poor results?It is mentioned that the space overhead of It is mentioned that the space overhead of iterative checkpointing is reasonable (2‐6 MB/sec at 25 seconds checkpoints, and about MB/sec at 25 seconds checkpoints, and about 4‐7 MB/sec at 10 seconds). What is unreasonable? I thought these numbers are ghuge, am I missing something? (Maybe the Halloween Party J)y

  • PerformancePerformancePerformancePerformance

    They say the space overhead for time travel is low  but if we take an average case of low, but if we take an average case of 40KB/sec and run it for a day, it's already at 3 3GB  Do that for a year and it's 1 2TB 3.3GB. Do that for a year and it s 1.2TB (worst‐case is ~2.5TB)! Is it just me or does thi    lik    hi h    h d?this seem like a high space overhead?

  • Multiprocessors / ExtensibilityMultiprocessors / ExtensibilityMultiprocessors / ExtensibilityMultiprocessors / Extensibility

    Like ReVirt, this solution's major hindrance is the lack of multiprocessor support.  Since this paper 

      bli h d  ithi  th  l t     it     h  was published within the last 2 years, its a shame the authors didn't engineer a solution that would apply to current generation hardware; they apply to current generation hardware; they didn't even list it as potential future work but did make a brief comment on page 4.  Is it just too 

     t  t k th  fi i d i t l i  onerous to track the fine‐grained interleaving order of memory operations of these multiprocessor architectures?multiprocessor architectures?Is this technique scalable to a distributed system?y

  • Multiprocessors / ExtensibilityMultiprocessors / ExtensibilityMultiprocessors / ExtensibilityMultiprocessors / Extensibility

    The authors say that “researchers are investigating The authors say that  researchers are investigating ways to support replay on multiprocessors.” (p4)  With today’s computers commonly having multiple y p y g pprocessors, it is completely unimportant if it can’t support them.  What advances have been made to 

    t  lti l   ?support multiple processors?A big problem to debuggers for multi‐processor/ multi thread system is the time stamp of the multi‐thread system is the time stamp of the application. In another word, it is very difficult to replay what happened at the bugging point. The p y pp gg g plittle difference of running on different PE or the reduce power schedule will change the situation of 

    li i   i  Did TTVM  l   hi   bl ?application running. Did TTVM solve this problem?

  • Multiprocessors / ExtensibilityMultiprocessors / ExtensibilityMultiprocessors / ExtensibilityMultiprocessors / Extensibility

    Ch k i ti  d   t  hCheckpointing does not changeMust be able to support replay

    Topic of ongoing researchSupport at hardware level, flight data recorder ()Support at hardware level, flight data recorder ()Fast, limited amount of time recorded

    Software level  page protections to track Software level, page protections to track sharing

    Mi h  b   l ?Might be slow?

    Might not allocate all processors to one OS

  • FeasibilityFeasibilityFeasibilityFeasibility

    Running a debugger on a virtual machine below Running a debugger on a virtual machine below the OS seems like a great idea and this paper models it well   Has this been implemented?  models it well.  Has this been implemented?  Would this be used only for developers while trying to debug their OS or could it be extended y g gto run on every machine where it would automatically pick up bugs and send the logs to the developers to be debugged (similar to Microsoft’s error reporting but much more in d th)?  C ld thi  b   t d d   f th  t  depth)?  Could this be extended even further to automatically pick up bugs and automatically learn to fix common ones?learn to fix common ones?

  • FeasibilityFeasibilityFeasibilityFeasibility

    They keep stating that they found their They keep stating that they found their debugger easy to use etc. but they're the ones who created the tool! (Of course they would find yit intuitive!)Do people use this TTVM debugger? Do others exist?Ok  it'  b   ti d   ti  th t Ok, it's been mentioned many times that debugging operating systems is a very tough thing to do (and hurray for printf). This paper was thing to do (and hurray for printf). This paper was released in 2005... so... what are the limitations of this method? (it requires the use of a VM?)This paper is fairly new (2005), how did people conduct OS debugging before using VMs? What were the most effective and competing were the most effective and competing methods?