温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何定制Go编译器

发布时间:2021-10-09 16:36:44 来源:亿速云 阅读:134 作者:iii 栏目:编程语言

这篇文章主要介绍“如何定制Go编译器”,在日常操作中,相信很多人在如何定制Go编译器问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何定制Go编译器”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

01 Uber 使用 Go 的情况

Uber 有数千个后端服务是使用 Go 实现的,它们运行在数百万个 CPU 内核上。因此,对于 Uber 来说,详细准确掌握 CPU  瓶颈至关重要。这不仅为了减少服务延迟,同时也能提高计算机运行效率。Uber 这个量级的规模,要求对代码和微观结构的影响有深入的了解。

02 定制 Go 编译器

其实说定制 Go 编译器有点不准确。主要是基于以上规模和要求,虽然 Go 内置了 Profiler,但这个 CPU Profiler 在基于 Linux  的系统上有严重的限制(也许在其他操作系统也有此问题,但 Uber 使用的是 Linux,其他机器并没有测试验证),同时内置的 Profiler 缺少掌握 CPU  瓶颈所需要的许多细节。

基于这些问题,Uber fork 了一份 github.com/golang/go 代码,在其上建立一个定制的 Go Profiler,以便更符合  Uber 的需求和 Uber 的商业运营规模。

具体来说,Uber 通过将丰富的硬件性能监视特性集成到 Go 的缺省 pprof 分析器中来增强它。这提供了几个关键好处:

能够获得更准确和精确的 Go 程序分析文件(profiles);

监控各种 CPU 事件的能力,比如缓存丢失、套接字间(NUMA)通信、 CPU 分支错误预测等等;

能够以非常高的采样频率(最高可达 10 微秒)监控 Go 程序;

所以,Uber 定制的「Go 编译器」其实只是增强了 Profiler。注意,对 Profiler  的使用并不需要改变,也就是说,对外的接口、使用的工具和分析都没有变(比如堆栈属性、调用图和火焰图等),只是增加了更多的数据。

增强版的 Profiler,Uber 称之为 pprof++,这是带有硬件性能计数器的解决方案。

具体增加了哪些 CPU 事件,Uber 给了一张图,公开了最常见的一些事件。

如何定制Go编译器

到此,关于“如何定制Go编译器”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!

向AI问一下细节
推荐阅读:
  1. 定制EditText
  2. 定制checkbox

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI