SlideShare a Scribd company logo
Implement Checkpointing for
          Android
(to speed up boot time and development process)




Kito Cheng ( 程皇嘉 ) <kito@0xlab.org>
Jim Huang ( 黃敬群 ) <jserv@0xlab.org>
Developer, 0xlab
                              Jun 12, 2012 / FeeedomHEC
Rights to copy
                                                                    © Copyright 2012 0xlab
                                                                           http://0xlab.org/
                                                                            contact@0xlab.org
Attribution – ShareAlike 3.0
                                                Corrections, suggestions, contributions and translations
You are free                                                                              are welcome!
   to copy, distribute, display, and perform the work
   to make derivative works                                                 Latest update:Jun 12, 2012
   to make commercial use of the work
Under the following conditions
      Attribution. You must give the original author credit.
      Share Alike. If you alter, transform, or build upon this work, you may distribute the
      resulting work only under a license identical to this one.
   For any reuse or distribution, you must make clear to others the license terms of this work.
   Any of these conditions can be waived if you get permission from the copyright holder.
Your fair use and other rights are in no way affected by the above.
License text: http://creativecommons.org/licenses/by-sa/3.0/legalcode
Basic Idea: Process Migration

• Process Migration (in past applications)
   – Distributed Load Balancing
   – Efficient Resource Utilization
• Crash Recovery and Rollback Transaction
  – Useful to system admin

    Processes     Checkpoint   Processes   Processes
     Library                    Library     Library

     TCP/IP                     TCP/IP      TCP/IP
     Node                       Node         Node

                Communication Channel
Checkpointing
• From Wikipedia:
   – … is a technique for inserting fault tolerance into
     computing systems. It basically consists of storing a
     snapshot of the current application state, and later
     on, use it for restarting the execution in case of
     failure.
• Used in distributed shared memory systems
• Even used in reversible debugger
• Different from virtual machine level snapshot/resume
  mechanisms
   – Checkpointing emphasizes on process level.
Reversible Debugger using
            Checkpointing
Reasons to Implement Checkpointing for
                             Android
 • Resume to stored state for faster Android boot time
 • Better product field trial experience due to regular
   checkpointing
 • Deploy problematic states for engineering analysis and
   debugging transparently
 • Q&A stress test purpose
Expectations of Checkpointing

• Application-transparent
  – supports applications without modifications or recompilation

• Supports a broad class of applications
  – Databases
  – parallel / MPI apps
  – desktop apps

• Comprehensive support for user-level state, kernel-
  level state, and distributed computation and
  communication state
• Supported on unmodified Linux kernel
  – checkpoint-restart should be integrated by addons
Challenges in checkpoint and restore

  • Network stack will continue to execute even after
    application processes are stopped
  • No system call interface to read or write control state
  • No system call interface to read send socket buffers
  • No system call interface to write receive socket buffers
  • Consistency of control state and socket buffer state
Communication state checkpoint
• Acquire network stack locks to
  freeze TCP processing                             Control                             Control
• Save receive buffers using                        Timers,
                                                    Options,
                                                                     direct
                                                                     access
                                                                                        Timers,
                                                                                        Options,
  socket receive system call in                     etc.                                etc.

  peek mode
                                    copied_seq    Rh     St+1        write_seq Rt+1 Rh  X     X
                                                                                             St+1        Sh
• Save send buffers by walking           rcv_nxt Rt+1     Sh         snd_una        Rt+1      Sh

  kernel structures                                                   direct
                                               Rh               St    access       Rh               St
• Copy control state from kernel
  structures                                    .
                                                .               .
                                                                .
                                                                receive()
                                                .               .                                  Sh
                                                                                   Rt
• Modify two sequence numbers                                                    Recv          Send
  in saved state to reflect empty              Rt              Sh                buffers       buffers
                                        Recv buffers      Send buffers
  socket buffers
                                    Live Communication State                   Checkpoint State
                                           State for one socket
Communication state restart
                              To App by intercepted
                              receive system call
• Create a new socket
                                                 Control                                 Control
• Copy control state in                                             direct
                                                 Timers,                                 Timers,
  checkpoint to socket structure                 Options,
                                                                    update               Options,
                                                 etc.                                    etc.
• Restore checkpointed send
  buffer data using the socket     copied_seq Rt+1      Sh
                                                       St+1        write_seq
                                                                   snd_una
                                                                                    Rt+1       Sh
                                        rcv_nxt Rt+1    Sh                           Rt+1      Sh
  write call
• Deliver checkpointed receive        Rh                      St       write()     Rh               St

  buffer data to application on                               .
                                                              .
  demand                              Rt
                                                              .
                                                                                    Rt
                                                                                                    Sh

                                     Recv                                         Recv          Send
                                     data                    Sh                   buffers       buffers
                                                       Send buffers
                                   Live Communication State                      Checkpoint State

                                                                               State for one socket
Existing Checkpointing mechanisms

• CryoPID
  – http://cryopid.berlios.de/
• BLCR (Berkeley Lab Checkpoint/Restart)
   – https://ftg.lbl.gov/projects/CheckpointRestart/
• DMTCP
  – http://dmtcp.sourceforge.net/
Implementation Considerations

• Checkpointing can be implemented in
  – kernel modifications + helpers in userspace
  – pure userspace
• Introduce a virtualization layer groups processes into specific
  states with private virtual name space
   – Intercepts system calls to expose only virtual identifiers (e.g.,
     vpid)
   – Preserves resource names and dependencies across migration
• Mechanism to checkpoint and restart states
   – User and kernel-level state
   – Primarily uses system call handlers
   – File system not saved or restored
DMTCP

• Distributed Multi-Threaded CheckPointing.
• Works with Linux Kernel 2.6.9 and later.
• Supports sequential and multi-threaded computations
  across single/multiple hosts.
• Entirely in user space (no kernel modules or root
  privilege).
   – Transparent (no recompiling, no re-linking).
• Written in Northeastern University and MIT and under
  active development since 2006.
• License: GNU LGPL (allows freely using and linking)
Process Structure
CT = DMTCP checkpoint thread
T = User Thread                   Coordinator           Signal (USR2)

                                                          DMTCP

                      CT                         CT
        Process 1                                         Process N
                    T1                          T1 T2
                               Network Socket

  dmtcp_checkpoint <EXE> # starts coordinator
  dmtcp_command –c                 # talks to coordinator
  dmtcp_restart ckpt_<EXE>-*.dmtcp
• Coordinator: a stateless synchronization server for the
  distributed checkpointing algorithm.
• Checkpoint/Restart performance related to size of memory,
  disk write speed, and synchronization.
How DMTCP works                                 (1/4)


       • MTCP : component for checkpoint single-process
       • SIGUSR2: Used internally from checkpoint thread to
         user threads.

Checkpoint thread


                                    CT
                                                     1. CT send SIGUSR2 to
                                                     each threads for suspend
                               T1        T2
2. Write checkpoint image
          to disk           User program


                                         3. Exit SIGUSR2 handler,
                                                 and resume.
How DMTCP works                           (2/4)


      • LD_PRELOAD: Transparently preloads checkpoint libraries
        `dmtcphijack.so` which installs libc wrappers and checkpointing
        code.
      • Wrappers: Only on less heavily used calls to libc
          – open, fork, exec, system, pipe, bind, listen,
            setsockopt, connect, accept, clone, close, ptsname,
            openlog, closelog, signal, sigaction, sigvec,
            sigblock, sigsetmask, sigprocmask, rt_sigprocmask,
            pthread_sigmask
          – Overhead is negligible.


                   int open(const char *path,   int open(const char *path,
                            int flags){                  int flags){
...                ...                          ...
fd = open(path,    funcs[_open](path, flags);   }
         flags);   ...
                   }
...                                                   libc.so
   User Program                dmtcphijack.so
How DMTCP works                          (3/4)


    • Additional wrappers when process id & thread id
      virtualization is enabled
        – getpid, getppid, gettid, tcgetpgrp,
          tcsetprgrp, getgrp, setpgrp, getsid,
          setsid, kill, tkill, tgkill, wait, waitpid,
          waitid, wait3, wait4



                                                  int getpid(){
                   int getpid(){                  ...
...                ...                            }
pid = getpid();    real_pid = funcs[_getpid]();
...                return pid_table[real_pid];
                   }
                                                    libc.so
    User Program
                        dmtcphijack.so
How DMTCP works                   (4/4)


• Checkpoint image compression on-the-fly (default).
• Currently only supports dynamically linking to libc.so.
  Support for static libc.a is feasible, but not
  implemented.
Checkpoint under DMTCP(1/7)

        • dmtcphijack.so and libmtcp.so present in executable’s
          memory.
               – dmtcp_checkpoint <EXE>




                 Coordinator


                                Connect to exist coordinator
                                or create a new coordinator

      CT            CT

    T1 T2         T1 T2

User program     User program
Checkpoint under DMTCP(2/7)

        • Ask coordinator process for checkpoint via
          dmtcp_command.
               – dmtcp_command -c
        • DMTCP also provides API to send command or query
          status

                 Coordinator    Send checkpoint
                                   command




      CT            CT
                                command
    T1 T2         T1 T2

User program     User program
Checkpoint under DMTCP(3/7)

        • Suspend user threads with SIGUSR2.



                              1. send command
                                  for prepare
                                  checkpoint
               Coordinator




      CT          CT                 2. CT send SIGUSR2 to
                                     each threads for suspend
    T1 T2       T1 T2

User program   User program
Checkpoint under DMTCP(4/7)

        • Pre-checkpoint stage
        • Synchronize every node and elect shared file
          descriptor leaders.
        • Drain kernel buffers and do network handshake with
          peers.
                               Wait until all node are ready.

               Coordinator
                                       1. Report all thread
                                    except CT are suspended



      CT          CT
                                         2. Drain buffers
    T1 T2       T1 T2

User program   User program
Checkpoint under DMTCP(5/7)

        • Write checkpoint to disk
               – One checkpoint file per process
               – ckpt_<EXE>_<uid>.dmtcp

                                          Wait until all node
                                         checkpoint are done

                 Coordinator




      CT             CT                       Write checkpoint to
                                                disk seprately
    T1 T2          T1 T2

User program      User program
Checkpoint under DMTCP(6/7)

        • Post-Checkpint stage
        • Refill kernel buffers


                                     Wait until all node
                                  post-checkpoint are done

               Coordinator




      CT          CT                      Refill buffer and
                                      re-handshake with peers.
    T1 T2       T1 T2

User program   User program
Checkpoint under DMTCP(7/7)

        • Resume user threads.




                                 Send resume command

               Coordinator




      CT          CT
                                          Resume!
    T1 T2       T1 T2

User program   User program
Restart under DMTCP(1/6)

• Restart Process loads in memory.
  – dmtcp_restart ckpt_<EXE>_<uid>.dmtcp




     Coordinator


                     1. Connect to exist coordinator
                     or create a new coordinator

        CT

                         2. Load process to memroy
     dmtcp_restart
Restart under DMTCP(2/6)

        • Fork user program




                Coordinator




      CT           CT



dmtcp_restart   dmtcp_restart
Restart under DMTCP(3/6)

        • Reopen files and recreate ptys
        • Recreate and reconnect sockets
        • Rearrange file descriptors to initial layout



                Coordinator          Wail all node recreate socket
                                             and reopen file


                                    1. Reopen file/ptys/sockets
      CT           CT

                                    2. Rearrange FD via dup2
dmtcp_restart   dmtcp_restart
Restart under DMTCP(4/6)

        • Restore memory content.
        • Restore stack status for checkpoint thread.
                                                FDs will preserved across execve!

                                dmtcp_restart
                                        execve
                Coordinator     mtcp_restart                   Coordinator
                                        mmap + magic!!
                                User program


      CT           CT                                 CT          CT



dmtcp_restart   dmtcp_restart                   User program   User program
Restart under DMTCP(5/6)

        • Restore other threads.
          – Recreate thread and restore stack and context.
          – Restore back to the post-checkpint stage
        • Refill kernel buffer

               Coordinator
                                   Wail all node restore done


                                     1. Memory and thread
                                        come back now!
      CT          CT

    T1 T2       T1 T2                   2. Refill buffers
User program   User program
Restart under DMTCP(6/6)

        • Resume user threads

                                stopthisthread
                                <sig-handler>
                                                  ...
                                <user_funcN>      while (mtcp_state_value(&thread -> state)



                                    ...
                                                           == ST_SUSPENDED) {
                                                    mtcp_state_futex (&(thread -> state),
                                <user_func2>                          FUTEX_WAIT,
                                                                      ST_SUSPENDED,
               Coordinator      <user_func1>                          NULL);
                                                  }
                              Thread Call Stack   ...




      CT          CT                                   Resume!

    T1 T2       T1 T2

User program   User program
DMTCP Workflow
                  Start with dmtcp
    Restart
                      wrapper




 Re-open FDs            Run


                                     Get checkpoint
                                       command
Restore memory    Pre-Checkpoint




Restore threads     Checkpoint

                                     Provide hook
                                        point!
                  Post-Checkpoint
OS Features supported by DMTCP

• Threads, mutexes/semaphores, fork, exec
• Shared memory (via mmap), TCP/IP sockets, UNIX
  domain sockets, pipes, ptys, terminal modes,
  ownership of controlling terminals, signal handlers,
  open and/or shared fds, I/O (including the readline
  library), parent-child process relationships, process id
  & thread id virtualization, session and process group
  ids, and more…
DMTCP/Android: Additional Features
                      (LGPL; separated from Android)
 • Binder IPC
   – Client-part: supported
   – Server-part: not supported

 • Ashmem
   – Supported

 • Logger
   – Supported
 • Properties
   – Supported

 • Wakelocks
   – Not supported
Support new FD type in DMTCP

• In DMTCP, every FD has a corresponding
  `Connection`
  – TcpConnection, FileConnection, PtyConnection

• Implement a new subclass of Connection if you want to
  support a new FD type for Android:
   ●   AshmemConnection, BinderConnection,
       LoggerConnection, PropertyConnection

• And implement the preCheckpoint,
  postCheckpint, and any others if needed.
Interface of Connection
class Connection {
   public:
     virtual void preCheckpoint (const dmtcp::vector<int>&,
                                  KernelBufferDrainer&);
     virtual void postCheckpoint (const dmtcp::vector<int>&,
                                   bool);
     virtual void restore (const dmtcp::vector<int>&,
                           ConnectionRewirer *);
     virtual bool isDupConnection (const Connection&,
                                   dmtcp::ConnectionToFds&);
     virtual void doLocking (const dmtcp::vector<int>&);
     virtual void saveOptions (const dmtcp::vector<int>&);
     virtual void restoreOptions (const dmtcp::vector<int>& );
     virtual void doSendHandshakes (const dmtcp::vector<int>&,
                                    const dmtcp::UniquePid&);
     virtual void doRecvHandshakes (const dmtcp::vector<int>&,
                                    const dmtcp::UniquePid&);
     virtual void restartDup2 (int, int);
   protected:
     virtual void serializeSubClass (jalib::JBinarySerializer&);
};
Binder support for DMTCP

• BinderConnection
   – Reopen /dev/binder and reset option which is set via ioctl.
   – Restore the mmap region

• Hijack the whole libbinder!
   – Prevent libbinder from interpreting data twice
   – Implement necessary DMTCP hooks: preCheckpoint,
     postCheckpoint, postRestart
      • Re-initialize libbinder in postRestart
• The server part is not supported at the moment
  because binder server will call a blocked ioctl and block
  the whole checkpoint process.
   – We'll implement an early checkpoint stage to suspend
     such kind of thread soon.
Checkpoint for Zygote
• Experiment environment:
   – Android-x86 ICS emulated by VirtualBox
   – Host: Thinkpad x200 (Intel Core 2 Due @ 2.4 GHz)

                       with gzip         without gzip

                               ~10s               ~5.5s
  Checkpoint time

                               ~0.5s              ~0.2s
  Restart time

                                   ~3M            ~17M
  Image size
Observations from logcat
--------- beginning of /dev/log/system                                   --------- beginning of /dev/log/system
I/Vold ( 1270): Vold 2.1 (the revenge) firing up                         I/Vold ( 1270): Vold 2.1 (the revenge) firing up
                                                                         D/Vold ( 1270): Volume usb state changing -1 (Initializing) -> 0 (No-Media)
D/Vold ( 1270): Volume usb state changing -1 (Initializing) -> 0 (No-Media)
I/Netd ( 1271): Netd 1.0 starting                                        I/Netd ( 1271): Netd 1.0 starting
I/      ( 1275): ServiceManager: 0x8062b50                               I/      ( 1275): ServiceManager: 0x8062b50
I/      ( 1276): ServiceManager: 0x804fb98                               I/      ( 1276): ServiceManager: 0x804fb98
                                                                         I/AudioFlinger( 1276): Loaded primary audio interface from LEGACY Audio HW
I/AudioFlinger( 1276): Loaded primary audio interface from LEGACY Audio HW HAL (audio)
I/AudioFlinger( 1276): Using 'LEGACY Audio HW HAL' (audio.primary) as I/AudioFlinger( 1276): Using 'LEGACY Audio HW HAL' (audio.primary) as the
                                                                          the primary audio interface
...                                                                      ….
D/AudioHardware( 1276): ### setVoiceVolume: 1.000000                     D/AudioHardware( 1276): ### setVoiceVolume: 1.000000
                                                                         I/AudioPolicyService( 1276): [1276]Loaded audio policy from LEGACY Audio P
I/AudioPolicyService( 1276): [1276]Loaded audio policy from LEGACY Audio Policy HAL (audio_policy)
E/BatteryService( 1382): usbOnlinePath not found                         D/dalvikvm( 1373): GC_EXPLICIT freed 14K, 1% free 6418K/6467K, paused 0
D/AndroidRuntime( 1902):                                                 D/dalvikvm( 1373): GC_EXPLICIT freed 5K, 1% free 6412K/6467K, paused 0m
                                                                         D/dalvikvm( 1373): GC_EXPLICIT freed <1K, 1% free 6412K/6467K, paused 0
D/AndroidRuntime( 1902): >>>>>> AndroidRuntime START com.android.internal.os.ZygoteInit <<<<<<
D/AndroidRuntime( 1902): CheckJNI is ON                                  I/dalvikvm( 1373): System server process 1382 has been created
I/SamplingProfilerIntegration( 1902): Profiling disabled.
I/Zygote ( 1902): Preloading classes...
D/dalvikvm( 1902): GC_EXPLICIT freed 35K, 85% free 399K/2560K, paused 0ms+0ms
...
I/Zygote ( 1902): ...preloaded 379 resources in 548ms.
D/dalvikvm( 1902): GC_EXPLICIT freed 20K, 1% free 6417K/6467K, paused 0ms+0ms
I/Zygote ( 1902): ...preloaded 31 resources in 13ms.
D/dalvikvm( 1902): GC_EXPLICIT freed 14K, 1% free 6418K/6467K, paused 0ms+0ms
D/dalvikvm( 1902): GC_EXPLICIT freed 5K, 1% free 6412K/6467K, paused 0ms+0ms
D/dalvikvm( 1902): GC_EXPLICIT freed <1K, 1% free 6412K/6467K, paused 0ms+2ms
I/dalvikvm( 1902): System server process 1911 has been created



  Normal bootup log message                                                 Bootup log message with restart
Android Boottime with DMTCP
              1     2     3      4     5     6     7     8     9    10    avg

             27.96 27.95 32.89 26.59 32.33 32.36 33.22 32.99 36.47 32.85 31.56
Boottime


Boottime     15.02 15.86 15.13 14.88 14.57 14.43 14.73 14.22 13.97 14.61 14.74
with DMTCP
(w/ gzip)
Boottime     14.98 15.13 14.61 13.90 14.72 14.84 15.46 15.06 15.32 15.39 14.94
with DMTCP
(w/o gzip)




  Measured by uptime in onStart() of Launcher2
Reversible Debugger based on DMTCP

• URDB is a universal reversible debugger that can add
  reversibility gained through the use of DMTCP.
• A user debugging with gdb would then ask URDB to go
  back to a point in time to when:
   – the expression had a correct value
   – the next statement would cause the expression to
     take on an incorrect value.
• Project page: http://sourceforge.net/projects/urdb/
Reference
• “DMTCP: An New Linux Checkpointing Mechanism for Vanilla
  Universe Job”, Condor Project, University of Wisconsin-
  Madison
• “Checkpointing using DMTCP, Condor, Matlab and FReD”,
  Gene Cooperman Northeastern University, Boston
• URDB: Universal Reversible Debugger
  http://arxiv.org/abs/0910.5046
• Cruz: Application-Transparent Distributed Checkpoint-Restart
  on Standard Operating Systems, G. (John) Janakiraman, Jose
  Renato Santos, Dinesh Subhraveti, Yoshio Turner, HP Labs
http://0xlab.org

More Related Content

What's hot

Channel in Go
Channel in GoChannel in Go
Channel in Go
Jaych Su
 
DeathNote of Microsoft Windows Kernel
DeathNote of Microsoft Windows KernelDeathNote of Microsoft Windows Kernel
DeathNote of Microsoft Windows Kernel
Peter Hlavaty
 
Git with bitbucket
Git with bitbucketGit with bitbucket
Git with bitbucket
Sumin Byeon
 
Git branching strategies
Git branching strategiesGit branching strategies
Git branching strategies
jstack
 
Springboot introduction
Springboot introductionSpringboot introduction
Springboot introduction
Sagar Verma
 
Dependency injection using Google guice
Dependency injection using Google guiceDependency injection using Google guice
Dependency injection using Google guice
Aman Verma
 
Solrcloud Leader Election
Solrcloud Leader ElectionSolrcloud Leader Election
Solrcloud Leader Election
ravikgiitk
 
Introduction to Version Control and Configuration Management
Introduction to Version Control and Configuration ManagementIntroduction to Version Control and Configuration Management
Introduction to Version Control and Configuration Management
Philip Johnson
 
Hld and lld
Hld and lldHld and lld
Hld and lld
SubhashiniSukumar
 
Overview of Android binder IPC implementation
Overview of Android binder IPC implementationOverview of Android binder IPC implementation
Overview of Android binder IPC implementation
Chethan Pchethan
 
REST and Microservices
REST and MicroservicesREST and Microservices
REST and Microservices
Shaun Abram
 
Shell scripting
Shell scriptingShell scripting
Shell scripting
Manav Prasad
 
C sharp
C sharpC sharp
C sharp
sanjay joshi
 
Jenkins Tutorial.pdf
Jenkins Tutorial.pdfJenkins Tutorial.pdf
Jenkins Tutorial.pdf
devtestervicky
 
[若渴計畫] Challenges and Solutions of Window Remote Shellcode
[若渴計畫] Challenges and Solutions of Window Remote Shellcode[若渴計畫] Challenges and Solutions of Window Remote Shellcode
[若渴計畫] Challenges and Solutions of Window Remote Shellcode
Aj MaChInE
 
Jenkins
JenkinsJenkins
Jenkins
Roger Xia
 
F9: A Secure and Efficient Microkernel Built for Deeply Embedded Systems
F9: A Secure and Efficient Microkernel Built for Deeply Embedded SystemsF9: A Secure and Efficient Microkernel Built for Deeply Embedded Systems
F9: A Secure and Efficient Microkernel Built for Deeply Embedded Systems
National Cheng Kung University
 
Q4.11: Porting Android to new Platforms
Q4.11: Porting Android to new PlatformsQ4.11: Porting Android to new Platforms
Q4.11: Porting Android to new Platforms
Linaro
 
FHIR Server 安裝與使用
FHIR Server 安裝與使用FHIR Server 安裝與使用
FHIR Server 安裝與使用
Lorex L. Yang
 
The Android graphics path, in depth
The Android graphics path, in depthThe Android graphics path, in depth
The Android graphics path, in depth
Chris Simmonds
 

What's hot (20)

Channel in Go
Channel in GoChannel in Go
Channel in Go
 
DeathNote of Microsoft Windows Kernel
DeathNote of Microsoft Windows KernelDeathNote of Microsoft Windows Kernel
DeathNote of Microsoft Windows Kernel
 
Git with bitbucket
Git with bitbucketGit with bitbucket
Git with bitbucket
 
Git branching strategies
Git branching strategiesGit branching strategies
Git branching strategies
 
Springboot introduction
Springboot introductionSpringboot introduction
Springboot introduction
 
Dependency injection using Google guice
Dependency injection using Google guiceDependency injection using Google guice
Dependency injection using Google guice
 
Solrcloud Leader Election
Solrcloud Leader ElectionSolrcloud Leader Election
Solrcloud Leader Election
 
Introduction to Version Control and Configuration Management
Introduction to Version Control and Configuration ManagementIntroduction to Version Control and Configuration Management
Introduction to Version Control and Configuration Management
 
Hld and lld
Hld and lldHld and lld
Hld and lld
 
Overview of Android binder IPC implementation
Overview of Android binder IPC implementationOverview of Android binder IPC implementation
Overview of Android binder IPC implementation
 
REST and Microservices
REST and MicroservicesREST and Microservices
REST and Microservices
 
Shell scripting
Shell scriptingShell scripting
Shell scripting
 
C sharp
C sharpC sharp
C sharp
 
Jenkins Tutorial.pdf
Jenkins Tutorial.pdfJenkins Tutorial.pdf
Jenkins Tutorial.pdf
 
[若渴計畫] Challenges and Solutions of Window Remote Shellcode
[若渴計畫] Challenges and Solutions of Window Remote Shellcode[若渴計畫] Challenges and Solutions of Window Remote Shellcode
[若渴計畫] Challenges and Solutions of Window Remote Shellcode
 
Jenkins
JenkinsJenkins
Jenkins
 
F9: A Secure and Efficient Microkernel Built for Deeply Embedded Systems
F9: A Secure and Efficient Microkernel Built for Deeply Embedded SystemsF9: A Secure and Efficient Microkernel Built for Deeply Embedded Systems
F9: A Secure and Efficient Microkernel Built for Deeply Embedded Systems
 
Q4.11: Porting Android to new Platforms
Q4.11: Porting Android to new PlatformsQ4.11: Porting Android to new Platforms
Q4.11: Porting Android to new Platforms
 
FHIR Server 安裝與使用
FHIR Server 安裝與使用FHIR Server 安裝與使用
FHIR Server 安裝與使用
 
The Android graphics path, in depth
The Android graphics path, in depthThe Android graphics path, in depth
The Android graphics path, in depth
 

Viewers also liked

Develop Community-based Android Distribution and Upstreaming Experience
Develop Community-based Android Distribution and Upstreaming Experience Develop Community-based Android Distribution and Upstreaming Experience
Develop Community-based Android Distribution and Upstreaming Experience
National Cheng Kung University
 
Discover System Facilities inside Your Android Phone
Discover System Facilities inside Your Android Phone Discover System Facilities inside Your Android Phone
Discover System Facilities inside Your Android Phone
National Cheng Kung University
 
軟體又熱又平又擠:淺談開放原始碼軟體衝擊下的新思維
軟體又熱又平又擠:淺談開放原始碼軟體衝擊下的新思維 軟體又熱又平又擠:淺談開放原始碼軟體衝擊下的新思維
軟體又熱又平又擠:淺談開放原始碼軟體衝擊下的新思維 National Cheng Kung University
 
ARM and SoC Traning Part II - System
ARM and SoC Traning Part II - SystemARM and SoC Traning Part II - System
ARM and SoC Traning Part II - System
National Cheng Kung University
 
Design and Concepts of Android Graphics
Design and Concepts of Android GraphicsDesign and Concepts of Android Graphics
Design and Concepts of Android Graphics
National Cheng Kung University
 
Making Linux do Hard Real-time
Making Linux do Hard Real-timeMaking Linux do Hard Real-time
Making Linux do Hard Real-time
National Cheng Kung University
 
ARM and SoC Traning Part I -- Overview
ARM and SoC Traning Part I -- OverviewARM and SoC Traning Part I -- Overview
ARM and SoC Traning Part I -- Overview
National Cheng Kung University
 

Viewers also liked (7)

Develop Community-based Android Distribution and Upstreaming Experience
Develop Community-based Android Distribution and Upstreaming Experience Develop Community-based Android Distribution and Upstreaming Experience
Develop Community-based Android Distribution and Upstreaming Experience
 
Discover System Facilities inside Your Android Phone
Discover System Facilities inside Your Android Phone Discover System Facilities inside Your Android Phone
Discover System Facilities inside Your Android Phone
 
軟體又熱又平又擠:淺談開放原始碼軟體衝擊下的新思維
軟體又熱又平又擠:淺談開放原始碼軟體衝擊下的新思維 軟體又熱又平又擠:淺談開放原始碼軟體衝擊下的新思維
軟體又熱又平又擠:淺談開放原始碼軟體衝擊下的新思維
 
ARM and SoC Traning Part II - System
ARM and SoC Traning Part II - SystemARM and SoC Traning Part II - System
ARM and SoC Traning Part II - System
 
Design and Concepts of Android Graphics
Design and Concepts of Android GraphicsDesign and Concepts of Android Graphics
Design and Concepts of Android Graphics
 
Making Linux do Hard Real-time
Making Linux do Hard Real-timeMaking Linux do Hard Real-time
Making Linux do Hard Real-time
 
ARM and SoC Traning Part I -- Overview
ARM and SoC Traning Part I -- OverviewARM and SoC Traning Part I -- Overview
ARM and SoC Traning Part I -- Overview
 

Similar to Implement Checkpointing for Android

Implement Checkpointing for Android (ELCE2012)
Implement Checkpointing for Android (ELCE2012)Implement Checkpointing for Android (ELCE2012)
Implement Checkpointing for Android (ELCE2012)
National Cheng Kung University
 
Cruz: Application-Transparent Distributed Checkpoint-Restart on Standard Oper...
Cruz:Application-Transparent Distributed Checkpoint-Restart on Standard Oper...Cruz:Application-Transparent Distributed Checkpoint-Restart on Standard Oper...
Cruz: Application-Transparent Distributed Checkpoint-Restart on Standard Oper...
Mark J. Feldman
 
XenTT: Deterministic Systems Analysis in Xen
XenTT: Deterministic Systems Analysis in XenXenTT: Deterministic Systems Analysis in Xen
XenTT: Deterministic Systems Analysis in Xen
The Linux Foundation
 
Springone2gx 2014 Reactive Streams and Reactor
Springone2gx 2014 Reactive Streams and ReactorSpringone2gx 2014 Reactive Streams and Reactor
Springone2gx 2014 Reactive Streams and Reactor
Stéphane Maldini
 
#lspe: Dynamic Scaling
#lspe: Dynamic Scaling #lspe: Dynamic Scaling
#lspe: Dynamic Scaling
steveshah
 
Thoughts on consistency models
Thoughts on consistency modelsThoughts on consistency models
Thoughts on consistency models
rogerbodamer
 
Sharam salamian
Sharam salamianSharam salamian
Sharam salamian
Obsidian Software
 
The Case for a Signal Oriented Data Stream Management System
The Case for a Signal Oriented Data Stream Management SystemThe Case for a Signal Oriented Data Stream Management System
The Case for a Signal Oriented Data Stream Management System
Reza Rahimi
 
Realtime olap architecture in apache kylin 3.0
Realtime olap architecture in apache kylin 3.0Realtime olap architecture in apache kylin 3.0
Realtime olap architecture in apache kylin 3.0
Shi Shao Feng
 
Introduction to Databus
Introduction to DatabusIntroduction to Databus
Introduction to Databus
Amy W. Tang
 
Ph.D. Dissertation
Ph.D. DissertationPh.D. Dissertation
Ph.D. Dissertation
Sumant Tambe
 
Always On - Wydajność i bezpieczeństwo naszych danych - High Availability SQL...
Always On - Wydajność i bezpieczeństwo naszych danych - High Availability SQL...Always On - Wydajność i bezpieczeństwo naszych danych - High Availability SQL...
Always On - Wydajność i bezpieczeństwo naszych danych - High Availability SQL...
SQLExpert.pl
 
The sFlow Standard: Scalable, Unified Monitoring of Networks, Systems and App...
The sFlow Standard: Scalable, Unified Monitoring of Networks, Systems and App...The sFlow Standard: Scalable, Unified Monitoring of Networks, Systems and App...
The sFlow Standard: Scalable, Unified Monitoring of Networks, Systems and App...
netvis
 
Know More About Rational Performance - Snehamoy K
Know More About Rational Performance - Snehamoy KKnow More About Rational Performance - Snehamoy K
Know More About Rational Performance - Snehamoy K
Roopa Nadkarni
 
3 know more_about_rational_performance_tester_8-1-snehamoy_k
3 know more_about_rational_performance_tester_8-1-snehamoy_k3 know more_about_rational_performance_tester_8-1-snehamoy_k
3 know more_about_rational_performance_tester_8-1-snehamoy_k
IBM
 
[Hic2011] using hadoop lucene-solr-for-large-scale-search by systex
[Hic2011] using hadoop lucene-solr-for-large-scale-search by systex[Hic2011] using hadoop lucene-solr-for-large-scale-search by systex
[Hic2011] using hadoop lucene-solr-for-large-scale-search by systex
James Chen
 
Realtime Statistics based on Apache Storm and RocketMQ
Realtime Statistics based on Apache Storm and RocketMQRealtime Statistics based on Apache Storm and RocketMQ
Realtime Statistics based on Apache Storm and RocketMQ
Xin Wang
 
Ultimate SharePoint Infrastructure Best Practices Session - Live360 Orlando 2012
Ultimate SharePoint Infrastructure Best Practices Session - Live360 Orlando 2012Ultimate SharePoint Infrastructure Best Practices Session - Live360 Orlando 2012
Ultimate SharePoint Infrastructure Best Practices Session - Live360 Orlando 2012
Michael Noel
 
Sql server 2012 - always on deep dive - bob duffy
Sql server 2012 - always on deep dive - bob duffySql server 2012 - always on deep dive - bob duffy
Sql server 2012 - always on deep dive - bob duffy
Anuradha
 
PostgreSQL Query Cache - "pqc"
PostgreSQL Query Cache - "pqc"PostgreSQL Query Cache - "pqc"
PostgreSQL Query Cache - "pqc"
Uptime Technologies LLC
 

Similar to Implement Checkpointing for Android (20)

Implement Checkpointing for Android (ELCE2012)
Implement Checkpointing for Android (ELCE2012)Implement Checkpointing for Android (ELCE2012)
Implement Checkpointing for Android (ELCE2012)
 
Cruz: Application-Transparent Distributed Checkpoint-Restart on Standard Oper...
Cruz:Application-Transparent Distributed Checkpoint-Restart on Standard Oper...Cruz:Application-Transparent Distributed Checkpoint-Restart on Standard Oper...
Cruz: Application-Transparent Distributed Checkpoint-Restart on Standard Oper...
 
XenTT: Deterministic Systems Analysis in Xen
XenTT: Deterministic Systems Analysis in XenXenTT: Deterministic Systems Analysis in Xen
XenTT: Deterministic Systems Analysis in Xen
 
Springone2gx 2014 Reactive Streams and Reactor
Springone2gx 2014 Reactive Streams and ReactorSpringone2gx 2014 Reactive Streams and Reactor
Springone2gx 2014 Reactive Streams and Reactor
 
#lspe: Dynamic Scaling
#lspe: Dynamic Scaling #lspe: Dynamic Scaling
#lspe: Dynamic Scaling
 
Thoughts on consistency models
Thoughts on consistency modelsThoughts on consistency models
Thoughts on consistency models
 
Sharam salamian
Sharam salamianSharam salamian
Sharam salamian
 
The Case for a Signal Oriented Data Stream Management System
The Case for a Signal Oriented Data Stream Management SystemThe Case for a Signal Oriented Data Stream Management System
The Case for a Signal Oriented Data Stream Management System
 
Realtime olap architecture in apache kylin 3.0
Realtime olap architecture in apache kylin 3.0Realtime olap architecture in apache kylin 3.0
Realtime olap architecture in apache kylin 3.0
 
Introduction to Databus
Introduction to DatabusIntroduction to Databus
Introduction to Databus
 
Ph.D. Dissertation
Ph.D. DissertationPh.D. Dissertation
Ph.D. Dissertation
 
Always On - Wydajność i bezpieczeństwo naszych danych - High Availability SQL...
Always On - Wydajność i bezpieczeństwo naszych danych - High Availability SQL...Always On - Wydajność i bezpieczeństwo naszych danych - High Availability SQL...
Always On - Wydajność i bezpieczeństwo naszych danych - High Availability SQL...
 
The sFlow Standard: Scalable, Unified Monitoring of Networks, Systems and App...
The sFlow Standard: Scalable, Unified Monitoring of Networks, Systems and App...The sFlow Standard: Scalable, Unified Monitoring of Networks, Systems and App...
The sFlow Standard: Scalable, Unified Monitoring of Networks, Systems and App...
 
Know More About Rational Performance - Snehamoy K
Know More About Rational Performance - Snehamoy KKnow More About Rational Performance - Snehamoy K
Know More About Rational Performance - Snehamoy K
 
3 know more_about_rational_performance_tester_8-1-snehamoy_k
3 know more_about_rational_performance_tester_8-1-snehamoy_k3 know more_about_rational_performance_tester_8-1-snehamoy_k
3 know more_about_rational_performance_tester_8-1-snehamoy_k
 
[Hic2011] using hadoop lucene-solr-for-large-scale-search by systex
[Hic2011] using hadoop lucene-solr-for-large-scale-search by systex[Hic2011] using hadoop lucene-solr-for-large-scale-search by systex
[Hic2011] using hadoop lucene-solr-for-large-scale-search by systex
 
Realtime Statistics based on Apache Storm and RocketMQ
Realtime Statistics based on Apache Storm and RocketMQRealtime Statistics based on Apache Storm and RocketMQ
Realtime Statistics based on Apache Storm and RocketMQ
 
Ultimate SharePoint Infrastructure Best Practices Session - Live360 Orlando 2012
Ultimate SharePoint Infrastructure Best Practices Session - Live360 Orlando 2012Ultimate SharePoint Infrastructure Best Practices Session - Live360 Orlando 2012
Ultimate SharePoint Infrastructure Best Practices Session - Live360 Orlando 2012
 
Sql server 2012 - always on deep dive - bob duffy
Sql server 2012 - always on deep dive - bob duffySql server 2012 - always on deep dive - bob duffy
Sql server 2012 - always on deep dive - bob duffy
 
PostgreSQL Query Cache - "pqc"
PostgreSQL Query Cache - "pqc"PostgreSQL Query Cache - "pqc"
PostgreSQL Query Cache - "pqc"
 

More from National Cheng Kung University

PyPy's approach to construct domain-specific language runtime
PyPy's approach to construct domain-specific language runtimePyPy's approach to construct domain-specific language runtime
PyPy's approach to construct domain-specific language runtime
National Cheng Kung University
 
2016 年春季嵌入式作業系統課程說明
2016 年春季嵌入式作業系統課程說明2016 年春季嵌入式作業系統課程說明
2016 年春季嵌入式作業系統課程說明
National Cheng Kung University
 
Interpreter, Compiler, JIT from scratch
Interpreter, Compiler, JIT from scratchInterpreter, Compiler, JIT from scratch
Interpreter, Compiler, JIT from scratch
National Cheng Kung University
 
進階嵌入式作業系統設計與實做 (2015 年秋季 ) 課程說明
進階嵌入式作業系統設計與實做 (2015 年秋季 ) 課程說明進階嵌入式作業系統設計與實做 (2015 年秋季 ) 課程說明
進階嵌入式作業系統設計與實做 (2015 年秋季 ) 課程說明
National Cheng Kung University
 
Construct an Efficient and Secure Microkernel for IoT
Construct an Efficient and Secure Microkernel for IoTConstruct an Efficient and Secure Microkernel for IoT
Construct an Efficient and Secure Microkernel for IoT
National Cheng Kung University
 
The Internals of "Hello World" Program
The Internals of "Hello World" ProgramThe Internals of "Hello World" Program
The Internals of "Hello World" Program
National Cheng Kung University
 
How A Compiler Works: GNU Toolchain
How A Compiler Works: GNU ToolchainHow A Compiler Works: GNU Toolchain
How A Compiler Works: GNU Toolchain
National Cheng Kung University
 
Virtual Machine Constructions for Dummies
Virtual Machine Constructions for DummiesVirtual Machine Constructions for Dummies
Virtual Machine Constructions for Dummies
National Cheng Kung University
 
給自己更好未來的 3 個練習:嵌入式作業系統設計、實做,與移植 (2015 年春季 ) 課程說明
給自己更好未來的 3 個練習:嵌入式作業系統設計、實做,與移植 (2015 年春季 ) 課程說明給自己更好未來的 3 個練習:嵌入式作業系統設計、實做,與移植 (2015 年春季 ) 課程說明
給自己更好未來的 3 個練習:嵌入式作業系統設計、實做,與移植 (2015 年春季 ) 課程說明
National Cheng Kung University
 
從線上售票看作業系統設計議題
從線上售票看作業系統設計議題從線上售票看作業系統設計議題
從線上售票看作業系統設計議題
National Cheng Kung University
 
進階嵌入式系統開發與實做 (2014 年秋季 ) 課程說明
進階嵌入式系統開發與實做 (2014 年秋季 ) 課程說明進階嵌入式系統開發與實做 (2014 年秋季 ) 課程說明
進階嵌入式系統開發與實做 (2014 年秋季 ) 課程說明
National Cheng Kung University
 
Xvisor: embedded and lightweight hypervisor
Xvisor: embedded and lightweight hypervisorXvisor: embedded and lightweight hypervisor
Xvisor: embedded and lightweight hypervisor
National Cheng Kung University
 
Making Linux do Hard Real-time
Making Linux do Hard Real-timeMaking Linux do Hard Real-time
Making Linux do Hard Real-time
National Cheng Kung University
 
Implement Runtime Environments for HSA using LLVM
Implement Runtime Environments for HSA using LLVMImplement Runtime Environments for HSA using LLVM
Implement Runtime Environments for HSA using LLVM
National Cheng Kung University
 
Priority Inversion on Mars
Priority Inversion on MarsPriority Inversion on Mars
Priority Inversion on Mars
National Cheng Kung University
 
Develop Your Own Operating Systems using Cheap ARM Boards
Develop Your Own Operating Systems using Cheap ARM BoardsDevelop Your Own Operating Systems using Cheap ARM Boards
Develop Your Own Operating Systems using Cheap ARM Boards
National Cheng Kung University
 
Lecture notice about Embedded Operating System Design and Implementation
Lecture notice about Embedded Operating System Design and ImplementationLecture notice about Embedded Operating System Design and Implementation
Lecture notice about Embedded Operating System Design and Implementation
National Cheng Kung University
 
Explore Android Internals
Explore Android InternalsExplore Android Internals
Explore Android Internals
National Cheng Kung University
 
中輟生談教育: 完全用開放原始碼軟體進行 嵌入式系統教學
中輟生談教育: 完全用開放原始碼軟體進行 嵌入式系統教學中輟生談教育: 完全用開放原始碼軟體進行 嵌入式系統教學
中輟生談教育: 完全用開放原始碼軟體進行 嵌入式系統教學
National Cheng Kung University
 
Open Source from Legend, Business, to Ecosystem
Open Source from Legend, Business, to EcosystemOpen Source from Legend, Business, to Ecosystem
Open Source from Legend, Business, to Ecosystem
National Cheng Kung University
 

More from National Cheng Kung University (20)

PyPy's approach to construct domain-specific language runtime
PyPy's approach to construct domain-specific language runtimePyPy's approach to construct domain-specific language runtime
PyPy's approach to construct domain-specific language runtime
 
2016 年春季嵌入式作業系統課程說明
2016 年春季嵌入式作業系統課程說明2016 年春季嵌入式作業系統課程說明
2016 年春季嵌入式作業系統課程說明
 
Interpreter, Compiler, JIT from scratch
Interpreter, Compiler, JIT from scratchInterpreter, Compiler, JIT from scratch
Interpreter, Compiler, JIT from scratch
 
進階嵌入式作業系統設計與實做 (2015 年秋季 ) 課程說明
進階嵌入式作業系統設計與實做 (2015 年秋季 ) 課程說明進階嵌入式作業系統設計與實做 (2015 年秋季 ) 課程說明
進階嵌入式作業系統設計與實做 (2015 年秋季 ) 課程說明
 
Construct an Efficient and Secure Microkernel for IoT
Construct an Efficient and Secure Microkernel for IoTConstruct an Efficient and Secure Microkernel for IoT
Construct an Efficient and Secure Microkernel for IoT
 
The Internals of "Hello World" Program
The Internals of "Hello World" ProgramThe Internals of "Hello World" Program
The Internals of "Hello World" Program
 
How A Compiler Works: GNU Toolchain
How A Compiler Works: GNU ToolchainHow A Compiler Works: GNU Toolchain
How A Compiler Works: GNU Toolchain
 
Virtual Machine Constructions for Dummies
Virtual Machine Constructions for DummiesVirtual Machine Constructions for Dummies
Virtual Machine Constructions for Dummies
 
給自己更好未來的 3 個練習:嵌入式作業系統設計、實做,與移植 (2015 年春季 ) 課程說明
給自己更好未來的 3 個練習:嵌入式作業系統設計、實做,與移植 (2015 年春季 ) 課程說明給自己更好未來的 3 個練習:嵌入式作業系統設計、實做,與移植 (2015 年春季 ) 課程說明
給自己更好未來的 3 個練習:嵌入式作業系統設計、實做,與移植 (2015 年春季 ) 課程說明
 
從線上售票看作業系統設計議題
從線上售票看作業系統設計議題從線上售票看作業系統設計議題
從線上售票看作業系統設計議題
 
進階嵌入式系統開發與實做 (2014 年秋季 ) 課程說明
進階嵌入式系統開發與實做 (2014 年秋季 ) 課程說明進階嵌入式系統開發與實做 (2014 年秋季 ) 課程說明
進階嵌入式系統開發與實做 (2014 年秋季 ) 課程說明
 
Xvisor: embedded and lightweight hypervisor
Xvisor: embedded and lightweight hypervisorXvisor: embedded and lightweight hypervisor
Xvisor: embedded and lightweight hypervisor
 
Making Linux do Hard Real-time
Making Linux do Hard Real-timeMaking Linux do Hard Real-time
Making Linux do Hard Real-time
 
Implement Runtime Environments for HSA using LLVM
Implement Runtime Environments for HSA using LLVMImplement Runtime Environments for HSA using LLVM
Implement Runtime Environments for HSA using LLVM
 
Priority Inversion on Mars
Priority Inversion on MarsPriority Inversion on Mars
Priority Inversion on Mars
 
Develop Your Own Operating Systems using Cheap ARM Boards
Develop Your Own Operating Systems using Cheap ARM BoardsDevelop Your Own Operating Systems using Cheap ARM Boards
Develop Your Own Operating Systems using Cheap ARM Boards
 
Lecture notice about Embedded Operating System Design and Implementation
Lecture notice about Embedded Operating System Design and ImplementationLecture notice about Embedded Operating System Design and Implementation
Lecture notice about Embedded Operating System Design and Implementation
 
Explore Android Internals
Explore Android InternalsExplore Android Internals
Explore Android Internals
 
中輟生談教育: 完全用開放原始碼軟體進行 嵌入式系統教學
中輟生談教育: 完全用開放原始碼軟體進行 嵌入式系統教學中輟生談教育: 完全用開放原始碼軟體進行 嵌入式系統教學
中輟生談教育: 完全用開放原始碼軟體進行 嵌入式系統教學
 
Open Source from Legend, Business, to Ecosystem
Open Source from Legend, Business, to EcosystemOpen Source from Legend, Business, to Ecosystem
Open Source from Legend, Business, to Ecosystem
 

Recently uploaded

20240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 202420240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 2024
Matthew Sinclair
 
Climate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing DaysClimate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing Days
Kari Kakkonen
 
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
SOFTTECHHUB
 
A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...
sonjaschweigert1
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
Safe Software
 
By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024
Pierluigi Pugliese
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
Octavian Nadolu
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
DanBrown980551
 
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
James Anderson
 
How to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptxHow to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptx
danishmna97
 
20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
Matthew Sinclair
 
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
Neo4j
 
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
SOFTTECHHUB
 
Pushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 daysPushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 days
Adtran
 
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfUnlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Malak Abu Hammad
 
Large Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial ApplicationsLarge Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial Applications
Rohit Gautam
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
James Anderson
 
Full-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalizationFull-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalization
Zilliz
 
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
Neo4j
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance
 

Recently uploaded (20)

20240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 202420240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 2024
 
Climate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing DaysClimate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing Days
 
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
 
A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
 
By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
 
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
 
How to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptxHow to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptx
 
20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
 
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
 
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
 
Pushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 daysPushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 days
 
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfUnlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
 
Large Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial ApplicationsLarge Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial Applications
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
 
Full-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalizationFull-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalization
 
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
 

Implement Checkpointing for Android

  • 1. Implement Checkpointing for Android (to speed up boot time and development process) Kito Cheng ( 程皇嘉 ) <kito@0xlab.org> Jim Huang ( 黃敬群 ) <jserv@0xlab.org> Developer, 0xlab Jun 12, 2012 / FeeedomHEC
  • 2. Rights to copy © Copyright 2012 0xlab http://0xlab.org/ contact@0xlab.org Attribution – ShareAlike 3.0 Corrections, suggestions, contributions and translations You are free are welcome! to copy, distribute, display, and perform the work to make derivative works Latest update:Jun 12, 2012 to make commercial use of the work Under the following conditions Attribution. You must give the original author credit. Share Alike. If you alter, transform, or build upon this work, you may distribute the resulting work only under a license identical to this one. For any reuse or distribution, you must make clear to others the license terms of this work. Any of these conditions can be waived if you get permission from the copyright holder. Your fair use and other rights are in no way affected by the above. License text: http://creativecommons.org/licenses/by-sa/3.0/legalcode
  • 3. Basic Idea: Process Migration • Process Migration (in past applications) – Distributed Load Balancing – Efficient Resource Utilization • Crash Recovery and Rollback Transaction – Useful to system admin Processes Checkpoint Processes Processes Library Library Library TCP/IP TCP/IP TCP/IP Node Node Node Communication Channel
  • 4. Checkpointing • From Wikipedia: – … is a technique for inserting fault tolerance into computing systems. It basically consists of storing a snapshot of the current application state, and later on, use it for restarting the execution in case of failure. • Used in distributed shared memory systems • Even used in reversible debugger • Different from virtual machine level snapshot/resume mechanisms – Checkpointing emphasizes on process level.
  • 6. Reasons to Implement Checkpointing for Android • Resume to stored state for faster Android boot time • Better product field trial experience due to regular checkpointing • Deploy problematic states for engineering analysis and debugging transparently • Q&A stress test purpose
  • 7. Expectations of Checkpointing • Application-transparent – supports applications without modifications or recompilation • Supports a broad class of applications – Databases – parallel / MPI apps – desktop apps • Comprehensive support for user-level state, kernel- level state, and distributed computation and communication state • Supported on unmodified Linux kernel – checkpoint-restart should be integrated by addons
  • 8. Challenges in checkpoint and restore • Network stack will continue to execute even after application processes are stopped • No system call interface to read or write control state • No system call interface to read send socket buffers • No system call interface to write receive socket buffers • Consistency of control state and socket buffer state
  • 9. Communication state checkpoint • Acquire network stack locks to freeze TCP processing Control Control • Save receive buffers using Timers, Options, direct access Timers, Options, socket receive system call in etc. etc. peek mode copied_seq Rh St+1 write_seq Rt+1 Rh X X St+1 Sh • Save send buffers by walking rcv_nxt Rt+1 Sh snd_una Rt+1 Sh kernel structures direct Rh St access Rh St • Copy control state from kernel structures . . . . receive() . . Sh Rt • Modify two sequence numbers Recv Send in saved state to reflect empty Rt Sh buffers buffers Recv buffers Send buffers socket buffers Live Communication State Checkpoint State State for one socket
  • 10. Communication state restart To App by intercepted receive system call • Create a new socket Control Control • Copy control state in direct Timers, Timers, checkpoint to socket structure Options, update Options, etc. etc. • Restore checkpointed send buffer data using the socket copied_seq Rt+1 Sh St+1 write_seq snd_una Rt+1 Sh rcv_nxt Rt+1 Sh Rt+1 Sh write call • Deliver checkpointed receive Rh St write() Rh St buffer data to application on . . demand Rt . Rt Sh Recv Recv Send data Sh buffers buffers Send buffers Live Communication State Checkpoint State State for one socket
  • 11. Existing Checkpointing mechanisms • CryoPID – http://cryopid.berlios.de/ • BLCR (Berkeley Lab Checkpoint/Restart) – https://ftg.lbl.gov/projects/CheckpointRestart/ • DMTCP – http://dmtcp.sourceforge.net/
  • 12. Implementation Considerations • Checkpointing can be implemented in – kernel modifications + helpers in userspace – pure userspace • Introduce a virtualization layer groups processes into specific states with private virtual name space – Intercepts system calls to expose only virtual identifiers (e.g., vpid) – Preserves resource names and dependencies across migration • Mechanism to checkpoint and restart states – User and kernel-level state – Primarily uses system call handlers – File system not saved or restored
  • 13. DMTCP • Distributed Multi-Threaded CheckPointing. • Works with Linux Kernel 2.6.9 and later. • Supports sequential and multi-threaded computations across single/multiple hosts. • Entirely in user space (no kernel modules or root privilege). – Transparent (no recompiling, no re-linking). • Written in Northeastern University and MIT and under active development since 2006. • License: GNU LGPL (allows freely using and linking)
  • 14. Process Structure CT = DMTCP checkpoint thread T = User Thread Coordinator Signal (USR2) DMTCP CT CT Process 1 Process N T1 T1 T2 Network Socket dmtcp_checkpoint <EXE> # starts coordinator dmtcp_command –c # talks to coordinator dmtcp_restart ckpt_<EXE>-*.dmtcp • Coordinator: a stateless synchronization server for the distributed checkpointing algorithm. • Checkpoint/Restart performance related to size of memory, disk write speed, and synchronization.
  • 15. How DMTCP works (1/4) • MTCP : component for checkpoint single-process • SIGUSR2: Used internally from checkpoint thread to user threads. Checkpoint thread CT 1. CT send SIGUSR2 to each threads for suspend T1 T2 2. Write checkpoint image to disk User program 3. Exit SIGUSR2 handler, and resume.
  • 16. How DMTCP works (2/4) • LD_PRELOAD: Transparently preloads checkpoint libraries `dmtcphijack.so` which installs libc wrappers and checkpointing code. • Wrappers: Only on less heavily used calls to libc – open, fork, exec, system, pipe, bind, listen, setsockopt, connect, accept, clone, close, ptsname, openlog, closelog, signal, sigaction, sigvec, sigblock, sigsetmask, sigprocmask, rt_sigprocmask, pthread_sigmask – Overhead is negligible. int open(const char *path, int open(const char *path, int flags){ int flags){ ... ... ... fd = open(path, funcs[_open](path, flags); } flags); ... } ... libc.so User Program dmtcphijack.so
  • 17. How DMTCP works (3/4) • Additional wrappers when process id & thread id virtualization is enabled – getpid, getppid, gettid, tcgetpgrp, tcsetprgrp, getgrp, setpgrp, getsid, setsid, kill, tkill, tgkill, wait, waitpid, waitid, wait3, wait4 int getpid(){ int getpid(){ ... ... ... } pid = getpid(); real_pid = funcs[_getpid](); ... return pid_table[real_pid]; } libc.so User Program dmtcphijack.so
  • 18. How DMTCP works (4/4) • Checkpoint image compression on-the-fly (default). • Currently only supports dynamically linking to libc.so. Support for static libc.a is feasible, but not implemented.
  • 19. Checkpoint under DMTCP(1/7) • dmtcphijack.so and libmtcp.so present in executable’s memory. – dmtcp_checkpoint <EXE> Coordinator Connect to exist coordinator or create a new coordinator CT CT T1 T2 T1 T2 User program User program
  • 20. Checkpoint under DMTCP(2/7) • Ask coordinator process for checkpoint via dmtcp_command. – dmtcp_command -c • DMTCP also provides API to send command or query status Coordinator Send checkpoint command CT CT command T1 T2 T1 T2 User program User program
  • 21. Checkpoint under DMTCP(3/7) • Suspend user threads with SIGUSR2. 1. send command for prepare checkpoint Coordinator CT CT 2. CT send SIGUSR2 to each threads for suspend T1 T2 T1 T2 User program User program
  • 22. Checkpoint under DMTCP(4/7) • Pre-checkpoint stage • Synchronize every node and elect shared file descriptor leaders. • Drain kernel buffers and do network handshake with peers. Wait until all node are ready. Coordinator 1. Report all thread except CT are suspended CT CT 2. Drain buffers T1 T2 T1 T2 User program User program
  • 23. Checkpoint under DMTCP(5/7) • Write checkpoint to disk – One checkpoint file per process – ckpt_<EXE>_<uid>.dmtcp Wait until all node checkpoint are done Coordinator CT CT Write checkpoint to disk seprately T1 T2 T1 T2 User program User program
  • 24. Checkpoint under DMTCP(6/7) • Post-Checkpint stage • Refill kernel buffers Wait until all node post-checkpoint are done Coordinator CT CT Refill buffer and re-handshake with peers. T1 T2 T1 T2 User program User program
  • 25. Checkpoint under DMTCP(7/7) • Resume user threads. Send resume command Coordinator CT CT Resume! T1 T2 T1 T2 User program User program
  • 26. Restart under DMTCP(1/6) • Restart Process loads in memory. – dmtcp_restart ckpt_<EXE>_<uid>.dmtcp Coordinator 1. Connect to exist coordinator or create a new coordinator CT 2. Load process to memroy dmtcp_restart
  • 27. Restart under DMTCP(2/6) • Fork user program Coordinator CT CT dmtcp_restart dmtcp_restart
  • 28. Restart under DMTCP(3/6) • Reopen files and recreate ptys • Recreate and reconnect sockets • Rearrange file descriptors to initial layout Coordinator Wail all node recreate socket and reopen file 1. Reopen file/ptys/sockets CT CT 2. Rearrange FD via dup2 dmtcp_restart dmtcp_restart
  • 29. Restart under DMTCP(4/6) • Restore memory content. • Restore stack status for checkpoint thread. FDs will preserved across execve! dmtcp_restart execve Coordinator mtcp_restart Coordinator mmap + magic!! User program CT CT CT CT dmtcp_restart dmtcp_restart User program User program
  • 30. Restart under DMTCP(5/6) • Restore other threads. – Recreate thread and restore stack and context. – Restore back to the post-checkpint stage • Refill kernel buffer Coordinator Wail all node restore done 1. Memory and thread come back now! CT CT T1 T2 T1 T2 2. Refill buffers User program User program
  • 31. Restart under DMTCP(6/6) • Resume user threads stopthisthread <sig-handler> ... <user_funcN> while (mtcp_state_value(&thread -> state) ... == ST_SUSPENDED) { mtcp_state_futex (&(thread -> state), <user_func2> FUTEX_WAIT, ST_SUSPENDED, Coordinator <user_func1> NULL); } Thread Call Stack ... CT CT Resume! T1 T2 T1 T2 User program User program
  • 32. DMTCP Workflow Start with dmtcp Restart wrapper Re-open FDs Run Get checkpoint command Restore memory Pre-Checkpoint Restore threads Checkpoint Provide hook point! Post-Checkpoint
  • 33. OS Features supported by DMTCP • Threads, mutexes/semaphores, fork, exec • Shared memory (via mmap), TCP/IP sockets, UNIX domain sockets, pipes, ptys, terminal modes, ownership of controlling terminals, signal handlers, open and/or shared fds, I/O (including the readline library), parent-child process relationships, process id & thread id virtualization, session and process group ids, and more…
  • 34. DMTCP/Android: Additional Features (LGPL; separated from Android) • Binder IPC – Client-part: supported – Server-part: not supported • Ashmem – Supported • Logger – Supported • Properties – Supported • Wakelocks – Not supported
  • 35. Support new FD type in DMTCP • In DMTCP, every FD has a corresponding `Connection` – TcpConnection, FileConnection, PtyConnection • Implement a new subclass of Connection if you want to support a new FD type for Android: ● AshmemConnection, BinderConnection, LoggerConnection, PropertyConnection • And implement the preCheckpoint, postCheckpint, and any others if needed.
  • 36. Interface of Connection class Connection { public: virtual void preCheckpoint (const dmtcp::vector<int>&, KernelBufferDrainer&); virtual void postCheckpoint (const dmtcp::vector<int>&, bool); virtual void restore (const dmtcp::vector<int>&, ConnectionRewirer *); virtual bool isDupConnection (const Connection&, dmtcp::ConnectionToFds&); virtual void doLocking (const dmtcp::vector<int>&); virtual void saveOptions (const dmtcp::vector<int>&); virtual void restoreOptions (const dmtcp::vector<int>& ); virtual void doSendHandshakes (const dmtcp::vector<int>&, const dmtcp::UniquePid&); virtual void doRecvHandshakes (const dmtcp::vector<int>&, const dmtcp::UniquePid&); virtual void restartDup2 (int, int); protected: virtual void serializeSubClass (jalib::JBinarySerializer&); };
  • 37. Binder support for DMTCP • BinderConnection – Reopen /dev/binder and reset option which is set via ioctl. – Restore the mmap region • Hijack the whole libbinder! – Prevent libbinder from interpreting data twice – Implement necessary DMTCP hooks: preCheckpoint, postCheckpoint, postRestart • Re-initialize libbinder in postRestart • The server part is not supported at the moment because binder server will call a blocked ioctl and block the whole checkpoint process. – We'll implement an early checkpoint stage to suspend such kind of thread soon.
  • 38. Checkpoint for Zygote • Experiment environment: – Android-x86 ICS emulated by VirtualBox – Host: Thinkpad x200 (Intel Core 2 Due @ 2.4 GHz) with gzip without gzip ~10s ~5.5s Checkpoint time ~0.5s ~0.2s Restart time ~3M ~17M Image size
  • 39. Observations from logcat --------- beginning of /dev/log/system --------- beginning of /dev/log/system I/Vold ( 1270): Vold 2.1 (the revenge) firing up I/Vold ( 1270): Vold 2.1 (the revenge) firing up D/Vold ( 1270): Volume usb state changing -1 (Initializing) -> 0 (No-Media) D/Vold ( 1270): Volume usb state changing -1 (Initializing) -> 0 (No-Media) I/Netd ( 1271): Netd 1.0 starting I/Netd ( 1271): Netd 1.0 starting I/ ( 1275): ServiceManager: 0x8062b50 I/ ( 1275): ServiceManager: 0x8062b50 I/ ( 1276): ServiceManager: 0x804fb98 I/ ( 1276): ServiceManager: 0x804fb98 I/AudioFlinger( 1276): Loaded primary audio interface from LEGACY Audio HW I/AudioFlinger( 1276): Loaded primary audio interface from LEGACY Audio HW HAL (audio) I/AudioFlinger( 1276): Using 'LEGACY Audio HW HAL' (audio.primary) as I/AudioFlinger( 1276): Using 'LEGACY Audio HW HAL' (audio.primary) as the the primary audio interface ... …. D/AudioHardware( 1276): ### setVoiceVolume: 1.000000 D/AudioHardware( 1276): ### setVoiceVolume: 1.000000 I/AudioPolicyService( 1276): [1276]Loaded audio policy from LEGACY Audio P I/AudioPolicyService( 1276): [1276]Loaded audio policy from LEGACY Audio Policy HAL (audio_policy) E/BatteryService( 1382): usbOnlinePath not found D/dalvikvm( 1373): GC_EXPLICIT freed 14K, 1% free 6418K/6467K, paused 0 D/AndroidRuntime( 1902): D/dalvikvm( 1373): GC_EXPLICIT freed 5K, 1% free 6412K/6467K, paused 0m D/dalvikvm( 1373): GC_EXPLICIT freed <1K, 1% free 6412K/6467K, paused 0 D/AndroidRuntime( 1902): >>>>>> AndroidRuntime START com.android.internal.os.ZygoteInit <<<<<< D/AndroidRuntime( 1902): CheckJNI is ON I/dalvikvm( 1373): System server process 1382 has been created I/SamplingProfilerIntegration( 1902): Profiling disabled. I/Zygote ( 1902): Preloading classes... D/dalvikvm( 1902): GC_EXPLICIT freed 35K, 85% free 399K/2560K, paused 0ms+0ms ... I/Zygote ( 1902): ...preloaded 379 resources in 548ms. D/dalvikvm( 1902): GC_EXPLICIT freed 20K, 1% free 6417K/6467K, paused 0ms+0ms I/Zygote ( 1902): ...preloaded 31 resources in 13ms. D/dalvikvm( 1902): GC_EXPLICIT freed 14K, 1% free 6418K/6467K, paused 0ms+0ms D/dalvikvm( 1902): GC_EXPLICIT freed 5K, 1% free 6412K/6467K, paused 0ms+0ms D/dalvikvm( 1902): GC_EXPLICIT freed <1K, 1% free 6412K/6467K, paused 0ms+2ms I/dalvikvm( 1902): System server process 1911 has been created Normal bootup log message Bootup log message with restart
  • 40. Android Boottime with DMTCP 1 2 3 4 5 6 7 8 9 10 avg 27.96 27.95 32.89 26.59 32.33 32.36 33.22 32.99 36.47 32.85 31.56 Boottime Boottime 15.02 15.86 15.13 14.88 14.57 14.43 14.73 14.22 13.97 14.61 14.74 with DMTCP (w/ gzip) Boottime 14.98 15.13 14.61 13.90 14.72 14.84 15.46 15.06 15.32 15.39 14.94 with DMTCP (w/o gzip) Measured by uptime in onStart() of Launcher2
  • 41. Reversible Debugger based on DMTCP • URDB is a universal reversible debugger that can add reversibility gained through the use of DMTCP. • A user debugging with gdb would then ask URDB to go back to a point in time to when: – the expression had a correct value – the next statement would cause the expression to take on an incorrect value. • Project page: http://sourceforge.net/projects/urdb/
  • 42. Reference • “DMTCP: An New Linux Checkpointing Mechanism for Vanilla Universe Job”, Condor Project, University of Wisconsin- Madison • “Checkpointing using DMTCP, Condor, Matlab and FReD”, Gene Cooperman Northeastern University, Boston • URDB: Universal Reversible Debugger http://arxiv.org/abs/0910.5046 • Cruz: Application-Transparent Distributed Checkpoint-Restart on Standard Operating Systems, G. (John) Janakiraman, Jose Renato Santos, Dinesh Subhraveti, Yoshio Turner, HP Labs