This repo includes the artifact of paper:
Lixiang Ao, George Porter, and Geoffrey M. Voelker. 2022. FaaSnap: FaaS Made Fast Using Snapshot-based VMs. In Seventeenth European Conference on Computer Systems (EuroSys ’22), April 5–8, 2022, RENNES, France. ACM, New York, NY, USA, 17 pages.
The modified Firecracker VMM is in https://github.com/ucsdsysnet/faasnap-firecracker.
The guest kernels are in https://github.com/ucsdsysnet/faasnap-kernel.
tools/devtool build
build/cargo_target/x86_64-unknown-linux-musl/debug/firecracker
pushd rootfs && make debian-rootfs.ext4 && popd
rootfs/debian-rootfs.ext4
to a directory on local SSD.swagger generate server -f api/swagger.yaml
.go get -u ./... && go build cmd/faasnap-server/main.go
resources/recognition
.resources
directory and its subdirectory. The keys should be the last parts of filenames (basename
).prep.sh
.Configure test-2inputs.json
.
base_path
is where snapshot files location. Choose a directory in a local SSD.kernels
are the locations of vanilla and sanpage kernels.images
is the rootfs location.executables
is the Firecracker binary for both vanilla and uffd.redis_host
and redis_passwd
accordingly.home_dir
is the current faasnap directory.test_dir
is where snapshot files location. Choose a directory in a local SSD.host
and trace_api
.Run tests:
sudo ./test.py test-2inputs.json
http://<ip>:9411
, and use traceIDs to find trace results.Configure test-6inputs.json
.
Run tests:
sudo ./test.py test-6inputs.json
http://<ip>:9411
, and use traceIDs to find trace results.Configure test-2inputs.json
.
parallelism
and par_snapshots
.parallelism
to the target parallelism and par_snapshots
to 1.parallelism
and par_snapshots
to the target parallelism.Run tests:
sudo ./test.py test-2inputs.json
http://<ip>:9411
, and use traceIDs to find trace results.Configure test-2inputs.json
.
faasnap.base_path
and test_dir
to a directory on remote storage.settings.faasnap.record_regions.interval_threshold
and settings.faasnap.patch_mincore.interval_threshold
to 0 for the increased latency of remote storage.Run tests:
sudo ./test.py test-2inputs.json
http://<ip>:9411
, and use traceIDs to find trace results.