十年網(wǎng)站開發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營(yíng)維護(hù)+專業(yè)推廣+無(wú)憂售后,網(wǎng)站問(wèn)題一站解決
這篇文章主要介紹“如何定制Go編譯器”,在日常操作中,相信很多人在如何定制Go編譯器問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”如何定制Go編譯器”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!
創(chuàng)新互聯(lián)建站從2013年成立,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都做網(wǎng)站、網(wǎng)站制作網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元西林做網(wǎng)站,已為上家服務(wù),為西林各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:18982081108
Uber 有數(shù)千個(gè)后端服務(wù)是使用 Go 實(shí)現(xiàn)的,它們運(yùn)行在數(shù)百萬(wàn)個(gè) CPU 內(nèi)核上。因此,對(duì)于 Uber 來(lái)說(shuō),詳細(xì)準(zhǔn)確掌握 CPU 瓶頸至關(guān)重要。這不僅為了減少服務(wù)延遲,同時(shí)也能提高計(jì)算機(jī)運(yùn)行效率。Uber 這個(gè)量級(jí)的規(guī)模,要求對(duì)代碼和微觀結(jié)構(gòu)的影響有深入的了解。
其實(shí)說(shuō)定制 Go 編譯器有點(diǎn)不準(zhǔn)確。主要是基于以上規(guī)模和要求,雖然 Go 內(nèi)置了 Profiler,但這個(gè) CPU Profiler 在基于 Linux 的系統(tǒng)上有嚴(yán)重的限制(也許在其他操作系統(tǒng)也有此問(wèn)題,但 Uber 使用的是 Linux,其他機(jī)器并沒(méi)有測(cè)試驗(yàn)證),同時(shí)內(nèi)置的 Profiler 缺少掌握 CPU 瓶頸所需要的許多細(xì)節(jié)。
基于這些問(wèn)題,Uber fork 了一份 github.com/golang/go 代碼,在其上建立一個(gè)定制的 Go Profiler,以便更符合 Uber 的需求和 Uber 的商業(yè)運(yùn)營(yíng)規(guī)模。
具體來(lái)說(shuō),Uber 通過(guò)將豐富的硬件性能監(jiān)視特性集成到 Go 的缺省 pprof 分析器中來(lái)增強(qiáng)它。這提供了幾個(gè)關(guān)鍵好處:
能夠獲得更準(zhǔn)確和精確的 Go 程序分析文件(profiles);
監(jiān)控各種 CPU 事件的能力,比如緩存丟失、套接字間(NUMA)通信、 CPU 分支錯(cuò)誤預(yù)測(cè)等等;
能夠以非常高的采樣頻率(最高可達(dá) 10 微秒)監(jiān)控 Go 程序;
所以,Uber 定制的「Go 編譯器」其實(shí)只是增強(qiáng)了 Profiler。注意,對(duì) Profiler 的使用并不需要改變,也就是說(shuō),對(duì)外的接口、使用的工具和分析都沒(méi)有變(比如堆棧屬性、調(diào)用圖和火焰圖等),只是增加了更多的數(shù)據(jù)。
增強(qiáng)版的 Profiler,Uber 稱之為 pprof++,這是帶有硬件性能計(jì)數(shù)器的解決方案。
具體增加了哪些 CPU 事件,Uber 給了一張圖,公開了最常見(jiàn)的一些事件。
到此,關(guān)于“如何定制Go編譯器”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!