所以你认为你想编写一个确定性的虚拟机监视器?

这是一篇关于 Antithesis 确定性虚拟机(Deterministic Hypervisor)的技术博客文章,主要介绍了其设计、工作原理和关键技术:

  • 背景和目标:为了方便发现和修复软件中的潜在 bug,Antithesis 开发了确定性虚拟机,它能让内部的任何东西都具有确定性,实现可重复的软件测试和调试。
  • 确定性的定义:在计算机科学中,确定性算法在给定特定输入时总是产生相同的输出,底层机器总是通过相同的状态序列。确定性在软件测试中有助于实现可重复性,减少工程师的摩擦,Antithesis 的确定性可重现性允许生成发现的 bug 的有用工件,是时间旅行调试和状态空间探索的关键。
  • Antithesis 中的确定性:Antithesis 平台的关键部分是运行测试工作负载的确定性虚拟机“Determinator”,它模拟一个或多个计算机,通过容器和虚拟机管理程序实现端到端的可重现性,其工作是为整个端到端实验设置提供一个大盒子,控制访客环境中的所有内容。
  • 构建虚拟机:从 FreeBSD 项目的 bhyve 虚拟机管理程序开始,通过删除大量标准虚拟机功能,限制虚拟机管理器要做的事情,从一个小的确定性行为基础开始逐步构建。在构建过程中,需要对遇到的微级 CPU 行为进行分类,包括确定性行为和非确定性行为,同时解决时间确定性的问题,如隐藏真实世界的定时信息、使用指令退休计数驱动模拟时钟等,还需要解决 CPU 并行性和确定性 I/O 的问题。
  • 总结:这只是基本内容的概述,还有很多细节未提及,Antithesis 测试平台由许多创新组件组成,确定性虚拟机的实现是围绕整个平台的需求设计的,他们目前还有很多工作要做,欢迎有兴趣的人查看招聘页面联系他们。
阅读 11
0 条评论