last updated: 2026-05-19 00:47:28 -0700
commit: 0d53240
finished virtines paper

Virtines Lit Review

Nathaniel Chappelle

2026-05-18

Progress

pg. 0/19

Source Information

General Notes

Why is it needed

Virtines

Optimization

Implementation

Evaluation

Discussion

Key Findings

Critique/Gaps

Questions

Relations

References (if any)

diff --git a/lit-reviews/wanninger2022isolating.md b/lit-reviews/wanninger2022isolating.md
index b78f9cb..74eece3 100644
--- a/lit-reviews/wanninger2022isolating.md
+++ b/lit-reviews/wanninger2022isolating.md
@@ -58,16 +58,55 @@ pg. 0/19
   - 30% of Linux kernel boot is spent scanning ACPI tables, configuring ACPI,
     enumerating PCI, and populating root.
   - Sometimes you can just cache a pre-booted environment
+    - This is what makes virtines viable when combined with snapshotting.
 - Real mode is far faster as there isn't paging, etc., overhead
 
+### Implementation
+
+- Wasp is an embedded micro hypervisor
+- Just a library that host programs link against
+- Doesn't emulate entire x86 platform or device model
+- Doesn't provide libaries
+- Hypercalls don't emulate devices, instead provide high-level services
+  - Vector to a predefined handler that can pass to host syscalls after
+    filtering
+
+### Evaluation
+
+- Baseline virtine (no snapshot): 6.6× slowdown vs native at fib(0); drops to
+  ~1.03× at fib(25). Amortization point ~100μs of work
+- Snapshotting gives ~2.5× speedup at fib(0), pushes amortization ~10× lower
+- Image size is memory-bandwidth-bound past ~2MB (~6.8 GB/s, matches memcpy)
+- HTTP server (7 hypercalls/req): only ~12% throughput drop with snapshotting
+  - hypercall overhead is manageable if interactions are limited
+- OpenSSL integration: ~1hr dev effort, 17× slowdown on AES-128 block cipher
+  (memory-bound from snapshot copy, 16KB block = 16μs/invocation)
+- Duktape JS: 137μs total latency with snapshot + no-teardown optimization
+  (~1.5× over native baseline of 419μs)
+
+Discussion
+
+- Vespid (virtine-based OpenWhisk prototype) shows competitive cold-start vs
+  vanilla containers, though Duktape vs V8 is apples-to-oranges
+- Future: automatic call-graph cutting, copy-on-write snapshots, V8 port, nested
+  virtines, distributed/migrateable virtines
+
 ## Key Findings
 
--
+- Caching + snapshotting are what make virtines practical
+  - Without them overhead is too high for short-lived functions
+- Hypercall overhead is acceptable if interactions are minimized and
+  coarse-grained (POSIX-level, not device-level)
+- Image size is the main remaining bottleneck; CoW would largely solve it
 
 ## Critique/Gaps
 
 - Cutting the call graph decision made by programmer, but possible to be made by
-  compilerkk
+  compiler
+- Snapshotting shares reset state across virtine instances (correctness footgun
+  left to programmer)
+- C extensions limited to single compilation unit
+- Duktape doesn't really compare to prod JS engines
 
 ## Questions
 
@@ -76,6 +115,7 @@ pg. 0/19
 
 ## Relations
 
--
+- [[../concepts/unikernels]]
+- [[../concepts/hardware-virtualization]]
 
 ## References (if any)