自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Uber 使用 Go 的規(guī)模這么大?!都自己定制的 Go 編譯器了

開發(fā) 后端
Uber 有數(shù)千個后端服務(wù)是使用 Go 實現(xiàn)的,它們運行在數(shù)百萬個 CPU 內(nèi)核上。因此,對于 Uber 來說,詳細(xì)準(zhǔn)確掌握 CPU 瓶頸至關(guān)重要。這不僅為了減少服務(wù)延遲,同時也能提高計算機(jī)運行效率。

 [[399361]]

大家好,我是站長 polarisxu。

今天看到 Uber 使用 Go 的情況,挺吃驚的,給大家分享下情況。

01 Uber 使用 Go 的情況

Uber 有數(shù)千個后端服務(wù)是使用 Go 實現(xiàn)的,它們運行在數(shù)百萬個 CPU 內(nèi)核上。因此,對于 Uber 來說,詳細(xì)準(zhǔn)確掌握 CPU 瓶頸至關(guān)重要。這不僅為了減少服務(wù)延遲,同時也能提高計算機(jī)運行效率。Uber 這個量級的規(guī)模,要求對代碼和微觀結(jié)構(gòu)的影響有深入的了解。

02 定制 Go 編譯器

其實說定制 Go 編譯器有點不準(zhǔn)確。主要是基于以上規(guī)模和要求,雖然 Go 內(nèi)置了 Profiler,但這個 CPU Profiler 在基于 Linux 的系統(tǒng)上有嚴(yán)重的限制(也許在其他操作系統(tǒng)也有此問題,但 Uber 使用的是 Linux,其他機(jī)器并沒有測試驗證),同時內(nèi)置的 Profiler 缺少掌握 CPU 瓶頸所需要的許多細(xì)節(jié)。

基于這些問題,Uber fork 了一份 github.com/golang/go 代碼,在其上建立一個定制的 Go Profiler,以便更符合 Uber 的需求和 Uber 的商業(yè)運營規(guī)模。

具體來說,Uber 通過將豐富的硬件性能監(jiān)視特性集成到 Go 的缺省 pprof 分析器中來增強(qiáng)它。這提供了幾個關(guān)鍵好處:

能夠獲得更準(zhǔn)確和精確的 Go 程序分析文件(profiles);

監(jiān)控各種 CPU 事件的能力,比如緩存丟失、套接字間(NUMA)通信、 CPU 分支錯誤預(yù)測等等;

能夠以非常高的采樣頻率(最高可達(dá) 10 微秒)監(jiān)控 Go 程序;

所以,Uber 定制的「Go 編譯器」其實只是增強(qiáng)了 Profiler。注意,對 Profiler 的使用并不需要改變,也就是說,對外的接口、使用的工具和分析都沒有變(比如堆棧屬性、調(diào)用圖和火焰圖等),只是增加了更多的數(shù)據(jù)。

增強(qiáng)版的 Profiler,Uber 稱之為 pprof++,這是帶有硬件性能計數(shù)器的解決方案。

具體增加了哪些 CPU 事件,Uber 給了一張圖,公開了最常見的一些事件。

關(guān)于這些事件的使用,以及 pprof++ 的更詳細(xì)信息可以參考:https://eng.uber.com/pprof-go-profiler/。

Uber fork 的 Go 倉庫地址:https://github.com/uber-research/go。

03 感想

看到這個消息,驚嘆 Uber 對 Go 的使用和研究之深,也證明了 Go 被大公司的規(guī)模使用,看好 Go 的前途。

不知道 Uber 開發(fā)的 pprof++,有沒有和 Go Team 溝通,嘗試合入 Go 官方倉庫,畢竟既然開源出來了,如果能夠在官方中使用,可以讓更多人收益。當(dāng)然,因為目前只支持 Linux 系統(tǒng),可能不太適合合入。至少,不希望 Go 出現(xiàn)分裂!

 

責(zé)任編輯:武曉燕 來源: polarisxu
相關(guān)推薦

2013-12-30 11:21:31

Go編譯器

2021-09-06 07:59:13

Go編譯器語言

2021-10-10 15:01:09

Go 源碼Github

2019-10-15 14:16:45

編程語言Go 開發(fā)

2022-08-22 07:38:01

Go語言函數(shù)

2021-08-22 17:18:58

Go代碼泛型代碼

2024-01-18 13:36:00

RustGo開發(fā)

2020-11-10 13:42:07

Go編譯器修復(fù)

2020-02-27 21:03:30

調(diào)度器架構(gòu)效率

2019-06-14 08:35:14

華為禁令開發(fā)

2010-01-08 16:00:46

C++編譯器

2013-12-10 10:53:47

shellcode

2021-08-16 07:11:56

Go語言進(jìn)程

2017-07-26 18:49:00

京東機(jī)器學(xué)習(xí)人工智能

2010-03-23 11:17:16

Python 動態(tài)編譯

2022-05-18 09:31:42

編譯器開源代碼生成

2021-12-13 20:09:33

GoElasticsearJava

2021-03-16 22:44:18

Go語言開發(fā)

2020-04-30 09:24:46

Go項目語言

2010-10-20 13:43:37

C++編譯器
點贊
收藏

51CTO技術(shù)棧公眾號