BEAM 虚拟机中 15 毫秒的停顿可能会导致数百万笔高峰购物支付受阻,这可能引发像 Klarna 这样的公司进行高风险的事故后分析。为了解决这些生产关键的瓶颈问题,Erik Stenman 博士发布了《The BEAM Book》,这是一本旨在帮助工程师理解 Erlang 和 Elixir 运行时底层机制的全面指南。

展示标题和关于 Erlang 运行时系统的副标题的《The BEAM Book》封面
《The BEAM Book》封面,这是一本关于 Erlang 运行时系统 (ERTS) 的全面指南。www.amazon.com

这张图片识别了文章的主要主题,即新发布的各种技术手册。

动机与开发历史

该项目始于 2012 年 10 月,最初只是一个 DocBook 文件,并在十年的迭代重写和结构变化中不断完善。作者面临了巨大的障碍,包括与 O’Reilly 和 Pragmatic Bookshelf 两次取消的出版交易,这导致了一个包含 6,622 个文件和超过一百万行文本的庞大仓库。

展示的两本《The BEAM Book》实体书
历经十年开发和多次出版障碍后最终出版的实体书。happihacking.com

此视觉效果支持了关于该书漫长的开发历史和最终发布的叙述。

The BEAM Book 的发展历史: 2012年10月12日 项目以单个 DocBook 文件开始; 2013 说服 O’Reilly 出版; 2015年3月10日 将章节拆分为部分; 2017年1月20日 将所有内容导入新仓库; 2017年3月23日 使用 Asciidoctor 重新开始; 2017年4月7日 将仓库设为公开
The BEAM Book 的发展历史happihacking.com

由 HN Digest 根据 happihacking.com 报告的数据绘制;数值按来源所示。

2017 年,该项目被移至公共 GitHub 仓库,并采用 Creative Commons BY-4.0 许可证。这一转变允许社区贡献修正和图表,帮助该项目达到目前的现状,成为 BEAM 运行时的权威参考资料。

显示项目超过 3,000 个星标的 GitHub 星标里程碑图表
庆祝该项目在 GitHub 上获得社区支持的里程碑图表。happihacking.com

这张图片展示了该项目自移至 GitHub 以来的社区参与和增长。

“我写《The BEAM Book》是为了让下一位工程师在咖啡变凉之前就修复那个停顿。”

— Why I Wrote the BEAM Book

核心技术覆盖

本书重点关注 BEAM VM 执行和优化代码的机制。它涵盖了系统在重负载下如何调度和优先处理进程,以及进程堆、栈和二进制文件如何在内存中被管理。

具体的技术深度解析包括整数和浮点数等数据类型的标记方案,以及每个进程和全局垃圾收集器的行为。它还解释了编译器如何将代码转换为指令,以及模拟器如何执行这些指令。

实际应用与范围

该书专为操作大规模 Erlang 或 Elixir 系统的人员设计,作为在生产故障期间回答“为什么 VM 会这样表现”的手册。它包含了使用像 'erlang:trace' 这样的工具来识别瓶颈和追踪现实世界延迟的实用指导。

为了保持专注,作者有意将某些复杂主题排除在核心正文之外,例如新的 JIT 编译器和脏调度器。这种范围划分确保了本书能够作为驱动 Erlang 运行时系统 (ERTS) 的基础子系统的集中参考。