I'm fascinated by CodeSandbox's VM fork capability—it looks magical! 🎩 I have a question about the implementation details:
When forking VM B from VM A, CodeSandbox uses CoW (via page faults) to track memory pages. But how exactly is VM B's process created at the beginning? Is it a direct fork() of VM A's process, or is it spawned from a snapshot (e.g.,snapshot.snap files) to rebuild execution context?
Also, beyond code snippet sharing and multi-branch testing, do you see broader use cases for VM forking? Has this been used in production for infra-layer magic? Any papers/case studies to share?
Thanks for your wisdom! 🙌
I'm fascinated by CodeSandbox's VM fork capability—it looks magical! 🎩 I have a question about the implementation details:
When forking VM B from VM A, CodeSandbox uses CoW (via page faults) to track memory pages. But how exactly is VM B's process created at the beginning? Is it a direct fork() of VM A's process, or is it spawned from a snapshot (e.g.,snapshot.snap files) to rebuild execution context?
Also, beyond code snippet sharing and multi-branch testing, do you see broader use cases for VM forking? Has this been used in production for infra-layer magic? Any papers/case studies to share?
Thanks for your wisdom! 🙌