写点什么

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:443655
用户头像
臧秀涛 略懂技术的运营同学。

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

关注

评论

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

华为云桌面说“流畅”的时候,究竟在说什么

科技云未来

Kubernetes Nginx配置热加载

CTO技术共享

开源 签约计划第三季

云签约,云培训,云办公,云指挥… 欧冶工业品,用数字化赋能企业

sofiya

拒绝“填”麻烦,这里有条安全返校小妙招

sofiya

计算机网络(四、网络层)

计算机网络 8月月更

2022 Gartner RPA魔力象限,弘玑Cyclone位置飞跃国产RPA进击全球

王吉伟频道

RPA 机器人流程自动化 Gartner RPA魔力象限 弘玑Cyclone

“掌上迎新”,这个学校把5400+新生安排的明明白白

sofiya

docker下的spark集群,调整参数榨干硬件

程序员欣宸

Java spark 8月月更

打造数字化工作平台,提升内外协同效率

神奇视野

C++多态案例(一)-计算器类

CtrlX

c c++ 面向对象 代码 8月月更

让视频会议更简单,华为云会议SmartRooms一站全搞定

sofiya

时尚品牌玛丝菲尔,选择华为云会议的3个理由

sofiya

华为云桌面说“高清”的时候,究竟在说什么

科技云未来

微信小程序开发速览

乌龟哥哥

8月月更

Kubernetes服务的注册与发现

CTO技术共享

签约计划第三季

每日一R「10」数据结构(一)智能指针

Samson

8月日更 ​Rust

RocketMQ高可用设计之异步刷盘

急需上岸的小谢

8月月更

政企视频会议首选,华为云OneMeeting全场景视频会议解决方案正式发布

sofiya

沉浸感拉满!这样的电影杀约起来

科技云未来

华为发布IdeaHub S2系列,与华为云会议结合更强大!

科技怪咖

IPv6中的隧道技术

穿过生命散发芬芳

ipv6 8月月更 隧道技术

抽象工厂模式在项目开发中的应用,这个例子绝了

知识浅谈

工厂模式 8月月更

ITIL服务支持5个运营级流程简单介绍

阿泽🧸

ITIL 8月月更

网红50万卖微信号被判交易无效:如何监管互联网账号交易市场

石头IT视角

游族马寅龙:常见信息安全风险及应对方案

声网

网络安全 创业讲堂

华为云会议,用高效联接推进工业企业数字化转型

sofiya

头脑风暴:最长重复子数组

HelloWorld杰少

云原生(二十二) | Kubernetes篇之Ingress案例实战

Lansonli

云原生 8月月更

华为云会议智能会议室助力财通证券加速数字化

科技怪咖

用户权限-Linux系统用户管理

Albert Edison

Linux centos 运维 用户权限 8月月更

Kubernetes 核心组件

CTO技术共享

开源 签约计划第三季

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