写点什么

Go 1.6 将进一步改进垃圾收集器

  • 2015-09-11
  • 本文字数:997 字

    阅读完需:约 3 分钟

尽管 Go 1.5 刚刚发布,仍然相对较新,但是 Go 团队已经在致力于改进其新的低延迟并发垃圾收集器,希望 Go 更适合新的应用领域。Google 工程师 Austin Clements Rick Hudson 如是

Go 1.5 用新的垃圾收集器代替了原来的STW(stop-the-world) GC,解决了延迟问题。当负载较重时,每50ms,新的GC 的活动时间可以控制在10ms 以下,从而使Go 程序在一般情况下能运行得更快些。在更极端的情况下,停顿可以从300ms 降到4ms

Go 1.6 的目标是进一步稳定 GC,并在以下几个方面做出改进:

  • 状态协调(State coordination):Go 1.5 GC 有个主要瓶颈是从 Go 1.4 继承来的,源自其集中式的 GC 协调器(coordinator),这是一个单独的 goroutine,它会将工作进一步分派给 worker goroutine 去完成。一种解决方案是用去中心化的状态机代替集中式协调器。这样修改有个额外的好处,使得重新设计标记完成屏障(mark completion barrier)成为可能,因为它已经变得非常凌乱,而且性能很差。
  • 信用系统(Credit system):Go 1.5 在两个不同的地方使用了一个信用系统:一个是确保清扫(sweeping)在一个 GC 周期和下一次触发堆操作(the next heap trigger)之间完成,一个是确保扫描(scanning)在触发堆操作(an heap trigger)和随后实现堆处理目标之间完成。改进信用系统的一种建议方法是,使其操作总是在 black 阶段进行,以避免未完成的分配操作进入下一个 GC 周期。
  • 标记结束(Mark termination):根据 Clements 和 Hudson 的介绍,在 Go 1.5 中,标记结束阶段是停顿时间的大头。这里的目标是尝试并确保大部分应用可以在 10ms 停顿的阈值下运行,这也是 Go 1.5 在很多情况下已经实现了的。希望所做修改的复杂度较低或中等,比如把 finalizer 扫描从标记结束阶段移到并发扫描,这样对于每 1GB 大小的堆,应该可以节省 1ms,以及去掉一个成本很高的计数循环,对于较大的堆,这个循环占去了标记阶段的另外一半。
  • sweeper 和 scavenger:某些程序会在 sweeper 上消耗大量时间,在这上面投入些精力,应该有性能改进。一个非常激进的方案是完全去掉 sweeper。还有一个不那么激进的方案,可以在 GC 阶段最后,尽早释放较大的对象,并且在所有的系统上支持 scavenger,不管物理页面是多大。

上面只是对计划所做改进的一个概览,欲全面了解,可以阅读原始文档。文档中还有进一步指向 GitHub issues 的链接,这些 issues 记录 了每个改变背后的理由以及建议方案。

2015-09-11 16:443724
用户头像
臧秀涛 略懂技术的运营同学。

发布了 300 篇内容, 共 151.7 次阅读, 收获喜欢 35 次。

关注

评论

发布
暂无评论
发现更多内容

华为云耀云服务器L实例,是否是企业简单上云的最佳选择?

平平无奇爱好科技

微信小程序开发亏大发了?华为云这款轻量应用服务器轻松躺赚

平平无奇爱好科技

低代码的能力边界在哪?

代码生成器研究

打破质疑!华为云这款轻量应用服务器让小程序降本增效

轶天下事

软件测试/人工智能|思维导图很难画,ChatGPT来帮你

霍格沃兹测试开发学社

年终省钱攻略丨轻量应用服务器买华为云这款不怕遇坑

平平无奇爱好科技

华为云耀云服务器L实例:让初创企业更有精力专注打磨产品

平平无奇爱好科技

华为云耀云服务器L实例:保障网站的稳定性和高可用性

平平无奇爱好科技

翻过电商独立网站“三座大山”,华为云助力企业勇攀高峰

轶天下事

低代码需要什么配置的电脑?

代码生成器研究

极致好用又安全,华为云耀云服务器L实例让中小成长企业永不宕

轶天下事

华为云耀云服务器L实例:为云游戏开发者提供专业的轻量应用产品

平平无奇爱好科技

华为云耀云服务器L实例,轻量应用服务器更适合中小企业选择

平平无奇爱好科技

软件测试/人工智能|测试数据很头疼,ChatGPT帮你造

霍格沃兹测试开发学社

搭建小程序快人一步!轻量应用服务器还得是华为云

轶天下事

成长企业建站难度高阻力大?华为云这款轻量应用服务器“药到病除

轶天下事

中小企业网站开发“速通神器”,华为云耀云服务器L实例实至名归.

平平无奇爱好科技

软件测试/人工智能|如何利用ChatGPT帮助我们编写测试用例

霍格沃兹测试开发学社

低代码平台有哪些优势?

代码生成器研究

高阶版本来袭!华为云这款轻量应用服务器“战斗力”更强了

轶天下事

性能与成本如何兼顾,企业选择轻量应用云服务器为何推荐华为云?

平平无奇爱好科技

友商“翻车”后安全性遭忧虑,极致可靠还得是这款轻量应用服务器

平平无奇爱好科技

华为云这款服务器化身数字化“利器”,全面助力瞪羚企业网站建设高效“奔跑”

平平无奇爱好科技

中小企业搭建网站选择虚拟主机还是云服务器?华为云有话说

平平无奇爱好科技

Scrum敏捷开发培训敏捷开发团队必修课

顿顿顿

scrum敏捷工具 scrum培训 敏捷开发培训 敏捷研发管理工具 scrum研发工具

更高更强版本来袭!华为云耀云服务器L实例让小程序开发更高效更安全

轶天下事

华为云耀云服务器L实例:轻量应用助力企业简单上云

平平无奇爱好科技

轻量应用服务器首选华为云,为何说是中小企业的最佳选择?

轶天下事

Databend 开源周报第 120 期

Databend

初创企业建站两眼一抹黑?华为云耀云服务器L实例让你不迷茫!

平平无奇爱好科技

存在争议的低代码,真的能火吗?

代码生成器研究

Go 1.6将进一步改进垃圾收集器_语言 & 开发_Sergio De Simone_InfoQ精选文章