溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

如何定制Go編譯器

發(fā)布時間:2021-10-09 16:36:44 來源:億速云 閱讀:137 作者:iii 欄目:編程語言

這篇文章主要介紹“如何定制Go編譯器”,在日常操作中,相信很多人在如何定制Go編譯器問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”如何定制Go編譯器”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!

01 Uber 使用 Go 的情況

Uber 有數(shù)千個后端服務(wù)是使用 Go 實現(xiàn)的,它們運行在數(shù)百萬個 CPU 內(nèi)核上。因此,對于 Uber 來說,詳細準(zhǔn)確掌握 CPU  瓶頸至關(guān)重要。這不僅為了減少服務(wù)延遲,同時也能提高計算機運行效率。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,其他機器并沒有測試驗證),同時內(nèi)置的 Profiler 缺少掌握 CPU  瓶頸所需要的許多細節(jié)。

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

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

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

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

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

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

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

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

如何定制Go編譯器

到此,關(guān)于“如何定制Go編譯器”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注億速云網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>

向AI問一下細節(jié)
推薦閱讀:
  1. 定制EditText
  2. 定制checkbox

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI