系统与数据库2024usenix.org编辑精选
用时间旅行虚拟机调试操作系统
Debugging operating systems with time-traveling virtual machines (2005)
进阶 · 约 55 分钟读完前置知识:操作系统内核基础、虚拟化/虚拟机原理、确定性执行与记录回放概念
导读
这篇 2005 年的 USENIX 论文提出了用“时间旅行”虚拟机调试操作系统的方法:通过记录执行并支持回放,开发者可以在虚拟机中让系统状态回退到过去任意时刻,反复重现和排查难以复现的内核 bug。这是确定性回放调试领域的早期代表性工作之一。
HN 关注点:时间旅行调试是 HN 读者长期关注的话题,讨论焦点集中在这一思想的后续影响(VMware 录制回放、Mozilla 的 rr、微软内部工具)以及相关工具的历史脉络。
后来怎么样
被视为确定性回放调试的早期代表作,其“快照+回放/时间旅行”思路后来在 VMware 虚拟机的录制回放功能与 Mozilla rr 等回放调试器上得到延续和产品化。
HN 评论精选
这几条评论里:补充 3 亲历 1
补充介绍微软内部类似的确定性回放调试工具 TKO 及其未能开源的往事
微软内部曾有一个类似的技术,叫 TKO。它用 Rust 编写,基于一个改造为确定性执行的 Bochs 版本,提供时间旅行调试(配合 WinDbg),原理是从最近的快照向前回放,直到用户想回退到的那个时间点。该软件的主要作者曾想将其开源,但微软高层拒绝了。他后来以个人身份继续做类似项目。
fatcunt查看英文原文
Microsoft has, or had, a similar technology they use internally, called TKO: https://www.microsoft.com/security/blog/2020/05/04/mitigating-vulnerabilities-endpoint-network-stacks It's written in Rust and is based around a version of Bochs modified for deterministic execution. It's got time-travel debugging (with WinDbg), which works by replaying forward from the nearest snapshot to the point at which the user is asking to move backwards to. The primary author of this software wanted to open source it, but the higher-ups at MSFT refused. He's been working on similar projects in a personal capacity though, e.g. https://gamozolabs.github.io/fuzzing/2020/12/06/fuzzos.html
亲历亲历者讲述 VMware 录制回放功能与 Mozilla rr 调试器的渊源
不知道这是否启发了 VMware 2008 年推出的虚拟机录制与回放功能。该功能 2011 年被停用,但对我很重要:我们在 Mozilla 用它效果很好,这让我更容易说服 Mozilla 支持 rr 的开发——rr 正是 2011 年起步的。
roca查看英文原文
I wonder if this inspired the VMWare VM record-and-replay functionality that came out in 2008. They discontinued it in 2011, but it's important to me because we used it at Mozilla to great effect and that made it easier for me to get Mozilla to support the development of rr, which started in 2011.
补充补充时间旅行调试领域论文与产品的历史资料链接
这里有一份时间旅行调试相关论文和产品(包括本文)的历史梳理:https://jakob.engbloms.se/archives/1554 和 https://jakob.engbloms.se/archives/1564
Veserv查看英文原文
A history of other time traveling debugging papers and products (including this one): https://jakob.engbloms.se/archives/1554 https://jakob.engbloms.se/archives/1564
历次讨论
- 2024Hacker News 讨论帖145 分 · 27 评
同领域还值得读
I/O 比 CPU 更快——让我们划分资源并消除操作系统抽象
I/O Is Faster Than CPU – Let’s Partition Resources and Eliminate OS Abstractions
指出在现代服务器硬件上 I/O 速度已接近甚至超过 CPU,传统操作系统抽象反而成为瓶颈。
系统与数据库2019 · 817 分 · 277 评进阶 · 约 30 分钟编辑精选使用 io_uring 的高效 I/O
Efficient IO with io_uring
由 Linux 内核开发者 Jens Axboe 撰写,介绍 Linux 新的异步 I/O 接口 io_uring。
系统与数据库2019 · 426 分 · 96 评进阶 · 约 45 分钟编辑精选线程对大多数用途而言是个坏主意(1995)
Threads Are a Bad Idea for Most Purposes (1995)
这篇 1995 年的文章由 John Ousterhout 撰写,讨论为什么线程对大多数用途而言是坏主意,并主张事件驱动编程通常更简单、更高效。
系统与数据库2017 · 423 分 · 382 评进阶 · 约 25 分钟编辑精选学习型索引结构之论证
The Case for Learned Index Structures
提出把索引看作一种"模型":既然 B-tree 等结构本质上是在学习数据的分布,就可以用机器学习模型(如回归模型、神经网络)来近似键到位置的映射,从而替代 B-tree、哈希索引…
系统与数据库2017 · 398 分 · 66 评 · 引用 25进阶 · 约 60 分钟编辑精选FoundationDB:一个分布式、解耦的事务型键值存储
FoundationDB: A distributed, unbundled, transactional key value store
介绍 FoundationDB:一个分布式、解耦设计的事务性键值存储。
系统与数据库2021 · 283 分 · 99 评进阶 · 约 90 分钟编辑精选