Skip to content
This repository has been archived by the owner on Jul 27, 2022. It is now read-only.

google/snappy-start

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

This arg is now checked in CanHandleSyscall().
fdfc94d

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

snappy-start: Tool for process startup snapshots

snappy-start is a tool which takes a snapshot of a Linux program's process state after it has started up. It allows multiple instances of the program to be quickly launched from the snapshot.

This has two potential benefits:

  • Faster startup, if the program does a non-trivial amount of computation during startup.

  • Saving memory, because memory pages that the program writes to during startup will be shared between the instances.

Usage

First, build the tool by running make.sh (which also runs some tests).

To create a snapshot:

./out/ptracer ./out/elf_loader PROG ARGS...

To run the snapshot:

./out/restore

The program will be snapshotted when it first calls an unhandled syscall, such as getpid().

Currently, the snapshot data is written to hard-coded files out_info (containing register state and a list of memory mappings) and out_pages (data to restore using mmap()).

Example:

$ ./out/ptracer ./out/elf_loader /usr/bin/python tests/python_example.py
$ ./out/restore
Hello world, from restored Python process

Credits

The idea for this tool comes from Kenton Varda, who proposed using a "record/replay" approach, using ptrace() to monitor syscalls so that they can later be replayed.

About

Tool for launching a Linux process from a snapshot

Resources

License

Code of conduct

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published