2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

Go 的新版 Green Tea 垃圾回收器可提高 40% 的性能

作者:Sergio De Simone

  • 2025-11-18
    北京
  • 本文字数:1216 字

    阅读完需:约 4 分钟

大小:595.94K时长:03:23
Go的新版Green Tea垃圾回收器可提高40%的性能

Go 1.25引入了一个新的实验性垃圾收集器,其速度比当前实现可快达 40%,为 GC 密集型工作负载带来了显著的性能提升。

 

这个新的垃圾收集器被称为 Green Tea,它使用与现有 GC 相同的标记-清除方法,但有一个关键区别:它不是在单个对象上操作,而是在内存页级别上工作。这意味着 Green Tea 在全局范围内扫描和跟踪整个页面,同时在每个页面内本地跟踪单个对象,而不是整个堆。

 

所有这些都使其更适合微架构。我们现在可以以更高的概率扫描更靠近的对象,因此我们可以更好地利用缓存而避免使用主存。同样,每页元数据更有可能在缓存中。跟踪页面而不是对象意味着工作列表更小,工作列表上的压力更小意味着更少的争用和更少的 CPU 停顿。

 

这种方法大大减少了标记整个堆所需的扫描次数,这是非常重要的,因为“垃圾收集器大约 90%的成本用于标记,只有大约 10%用于清除”,Go 贡献者 Michael Knyszek 和 Austin Clements 表示。

 

Knyszek 和 Clements 还解释说,开发 Green Tea 是为了应对现代 CPU 硬件带来的挑战,随着硬件的发展,这可能会使代码变慢而不是变快。特别是,较新的 CPU 引入了非统一的内存访问,其中一部分核心对一部分内存有特权访问;由于更多的核心竞争内存访问,每个 CPU 的内存带宽减少;以及不断增加的核数,使得 GC 算法更难并行工作。

 

另一方面,高级 CPU 特性(如向量指令和宽寄存器)提供了显著加速的机会,前提是 GC 算法可以利用它们,kyszek 和 Clements 说。

 

向量硬件长期以来一直支持在整个向量寄存器上的基本位操作,但从 AMD Zen 4 和 Intel Ice Lake 开始,它还支持一个新的位向量“瑞士军刀”指令,使 Green Tea 扫描过程的关键步骤可以在几个 CPU 周期内完成。总之,这些可以让我们加速 Green Tea 的扫描循环。

 

如前所述,根据内存工作负载的不同,Green Tea 可以减少 10-40%的垃圾收集开销。对于在垃圾收集器中花费 10%时间的应用程序,这意味着总体 CPU 减少了 1-4%。

 

然而,并不是所有的工作负载都能从 Green Tea 中受益:

 

“Green Tea”基于这样的假设,即我们可以在一个页上累积足够的对象进行一次扫描,以抵消积累过程的成本。[…但是有一些工作负载通常要求我们每次只扫描一个对象。这可能比图泛洪更糟糕。

 

以版本控制 SQL 数据库 dolt 的制造商 dolthub 为例,在生产构建中选择不采用Green Tea:

 

对于 Dolt 来说,Green Tea 收集器对实际性能数字没有任何影响。实际上,在标记时间上似乎有一个小的回归,但这在我们的延迟基准测试中是无法测量的。

 

其他早期采用者报告说,Tea Green 在其内存繁重的应用程序中运行 GC 的频率较低,但每个周期消耗更多的 CPU。虽然这减少了 GC 的总体 CPU 消耗,但它显著地增加了延迟。然而,这个行为已经在即将到来的Go 1.26中修复了

 

结果的这种可变性是默认情况下不启用新的垃圾收集器的主要原因,尽管根据 Go 团队的说法,它已经可以用于生产环境了。要使用 Go 1.25 测试 Tea Green,可以在构建时通过设置 GOEXPERIMENT=greenteagc 来启用它。

 

原文链接:

https://www.infoq.com/news/2025/11/go-green-tea-gc/

2025-11-18 15:001

评论

发布
暂无评论

鸿蒙轻内核定时器Swtmr:不受硬件和数量限制,满足用户需求

华为云开发者联盟

鸿蒙 定时器 OpenHarmony LiteOS-M 软件定时器

初学者入门知识图谱必看的能力:推理

华为云开发者联盟

知识图谱 图谱 推理 知识推理 知识纠错

拒做背锅侠!如何利用网站性能优化驱动产品体验提升

阿里巴巴中间件

云计算 阿里云 云原生 中间件

中国RPA厂商首次入选Gartner RPA魔力象限,背后的意义是什么?

王吉伟频道

AI RPA 机器人流程自动化 Gartner 国产RPA

MEMS加速度计如何选型?

不脱发的程序猿

物联网 传感器 ADI MEMS加速度计 期刊论文

详解云安全攻防模型,这些攻击战略和战术越早知道越好!

博文视点Broadview

抖音引流获客APP系统开发

获客I3O6O643Z97

抖音霸屏 抖音、快手获客系统

未雨绸缪最好,亡羊补牢也行|靠谱点评

无量靠谱

AI智能获客询盘软件系统开发公司

5 分钟,从 0 到 1 上线个人网站!

程序员鱼皮

JavaScript GitHub 大前端 Web 计算机

手撕环形队列

实力程序员

程序员 数据结构

大专的我狂刷29天“阿里内部面试笔记”最终直接斩获十七个Offer

Java 编程 程序员 架构师 计算机

十大自动化测试工具,你在用哪些?

禅道项目管理

测试 自动化测试

矿机矿池挖矿系统开发

获客I3O6O643Z97

挖矿矿池系统开发案例 PHA矿机挖矿

架构实战营 毕业设计

netspecial

架构实战营

架构实战营 毕业总结

netspecial

架构实战营

技术人生第5篇——浅谈如何成为技术一号位?

阿里巴巴中间件

云计算 阿里云 云原生 中间件 技术人生

Tensorflow小技巧(一)

毛显新

Python tensorflow pandas

喜报!浪潮云通过可信云多项评估认证并斩获三项大奖

云计算

一图解密百TB数据分析如何跑进45秒 原创

百度Geek说

大数据 后端

Vue组件间的传值五大场景,你造吗?

华为云开发者联盟

Vue 组件 传值

NumPy之:多维数组中的线性代数

程序那些事

Python 数据分析 Numpy 程序那些事

Load and preprocess images

毛显新

Python 深度学习 tensorflow 计算机视觉

系统性能优化-缓存

计算机 计算机缓存

肝完这在“牛客网”难倒万人的Java面试题后,已收获9个大厂offer

java小李

Sprint Boot git reset spring cloud alibaba

架构训练营毕业设计

Geek_649372

架构训练营

短视频询盘获客系统软件开发价格

Vue进阶(幺玖肆):keep-alive 实现页面缓存

No Silver Bullet

Vue 7月日更 keep-alive 动态组件

带你探索CPU调度的奥秘

华为云开发者联盟

cpu 操作系统 工作负载 调度器 调度

智汇华云 | Wireguard VPN 介绍与使用

华云数据

漏桶算法和令牌桶算法,区别到底在哪里?

华仔

漏桶算法 令牌桶算法

Go的新版Green Tea垃圾回收器可提高40%的性能_后端_InfoQ精选文章