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

这张图片识别了文章的主要主题,即新发布的各种技术手册。
动机与开发历史
该项目始于 2012 年 10 月,最初只是一个 DocBook 文件,并在十年的迭代重写和结构变化中不断完善。作者面临了巨大的障碍,包括与 O’Reilly 和 Pragmatic Bookshelf 两次取消的出版交易,这导致了一个包含 6,622 个文件和超过一百万行文本的庞大仓库。

此视觉效果支持了关于该书漫长的开发历史和最终发布的叙述。
由 HN Digest 根据 happihacking.com 报告的数据绘制;数值按来源所示。
2017 年,该项目被移至公共 GitHub 仓库,并采用 Creative Commons BY-4.0 许可证。这一转变允许社区贡献修正和图表,帮助该项目达到目前的现状,成为 BEAM 运行时的权威参考资料。

这张图片展示了该项目自移至 GitHub 以来的社区参与和增长。
“我写《The BEAM Book》是为了让下一位工程师在咖啡变凉之前就修复那个停顿。”
— Why I Wrote the BEAM Book
核心技术覆盖
本书重点关注 BEAM VM 执行和优化代码的机制。它涵盖了系统在重负载下如何调度和优先处理进程,以及进程堆、栈和二进制文件如何在内存中被管理。
具体的技术深度解析包括整数和浮点数等数据类型的标记方案,以及每个进程和全局垃圾收集器的行为。它还解释了编译器如何将代码转换为指令,以及模拟器如何执行这些指令。
实际应用与范围
该书专为操作大规模 Erlang 或 Elixir 系统的人员设计,作为在生产故障期间回答“为什么 VM 会这样表现”的手册。它包含了使用像 'erlang:trace' 这样的工具来识别瓶颈和追踪现实世界延迟的实用指导。
为了保持专注,作者有意将某些复杂主题排除在核心正文之外,例如新的 JIT 编译器和脏调度器。这种范围划分确保了本书能够作为驱动 Erlang 运行时系统 (ERTS) 的基础子系统的集中参考。