14作者: adammiribyan9 天前
我想看看,如果我不需要启动一个全新的虚拟机,一个隔离的代码沙盒能以多快的速度启动。<p>因此,我没有为每次执行都启动一个新的微型虚拟机,而是用已经加载了 Python 和 numpy 的方式启动一次 Firecracker,然后对整个虚拟机状态进行快照。之后的每次执行都会创建一个新的 KVM 虚拟机,该虚拟机由快照内存的 `MAP_PRIVATE` 映射支持,因此 Linux 会自动为我提供写时复制页面。<p>这意味着每个沙盒都从一个已经在真实虚拟机中运行的 Python 进程开始,运行代码,然后退出。<p>这些是真正的 KVM 虚拟机,而不是容器:独立的客户内核、独立的客户内存、独立的页表。当虚拟机写入内存时,它会获得该页面的私有副本。<p>困难的部分不是 CoW 本身。困难的部分是如何正确地恢复快照虚拟机。<p>Rust,Apache 2.0 协议。