電子發(fā)燒友App

硬聲App

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>電子資料>yadcc C++分布式編譯系統(tǒng)

yadcc C++分布式編譯系統(tǒng)

2022-06-17 | zip | 0.29 MB | 次下載 | 2積分

資料介紹

授權(quán)協(xié)議 BSD
開(kāi)發(fā)語(yǔ)言 C/C++
軟件類型 開(kāi)源軟件

軟件簡(jiǎn)介

yadcc(Yet Another Distributed C++ Compiler)是一套騰訊廣告自研的分布式編譯系統(tǒng),用于支撐騰訊廣告的日常開(kāi)發(fā)及流水線。相對(duì)于已有的同類解決方案,其針對(duì)實(shí)際的工業(yè)生產(chǎn)環(huán)境做了性能、可靠性、易用性等方面優(yōu)化。

yadcc 目前在騰訊 1700+ 核的集群中每天編譯 300,0000+ 個(gè)目標(biāo)文件,產(chǎn)出約 3~5TB,已經(jīng)持續(xù)穩(wěn)定運(yùn)營(yíng) 8 個(gè)月。取決于代碼邏輯及本地機(jī)器配置,yadcc 可以利用幾百乃至 1000+ 核同時(shí)編譯(騰訊內(nèi)部使用 512 并發(fā)編譯),大大加快構(gòu)建速度。

具體簡(jiǎn)介及技術(shù)細(xì)節(jié)可以參考技術(shù)文檔

系統(tǒng)要求

  • Linux 3.10 及以上內(nèi)核,暫不支持其他操作系統(tǒng);
  • x86-64 處理器
  • 編譯yadcc需要GCC 8 及以上版本的編譯器,基于yadcc進(jìn)行分布式編譯時(shí)可以支持其他更低版本編譯器。

基本原理

ccachedistcc、icecc等工具類似;

  • 客戶端偽裝成編譯器(通常是通過(guò)ln -sf yadcc g++創(chuàng)建的符號(hào)鏈接)
  • 通過(guò)將客戶端偽裝的編譯器加入PATH頭部,這樣構(gòu)建系統(tǒng)就會(huì)實(shí)際執(zhí)行yadcc來(lái)編譯
  • yadcc會(huì)按照命令行對(duì)源代碼進(jìn)行預(yù)處理,得到一個(gè)自包含的的預(yù)處理結(jié)果
  • 以預(yù)處理結(jié)果、編譯器簽名、命令行參數(shù)等為哈希,查詢緩存,如果命中,直接返回結(jié)果
  • 如果不命中,就請(qǐng)求調(diào)度器獲取一個(gè)編譯節(jié)點(diǎn),分發(fā)過(guò)去做編譯
  • 等待直到從編譯集群中得到編譯結(jié)果,并更新緩存

由于預(yù)處理時(shí)間通常遠(yuǎn)小于編譯時(shí)間,因此這樣可以降低單個(gè)文件的本地開(kāi)銷。同時(shí),由于等待編譯結(jié)果時(shí)本地?zé)o需進(jìn)行操作,因此可以增大本地的編譯并發(fā)度(如8核機(jī)器通??梢?code>make -j100),以此實(shí)現(xiàn)更高的吞吐。

需要注意的是,分布式編譯通常只能提高吞吐,但是不能降低單個(gè)文件的編譯耗時(shí)(假設(shè)不命中緩存)。因此,對(duì)于無(wú)法并發(fā)編譯的工程,除非命中緩存,否則分布式編譯通常不能加快編譯,反而可能有負(fù)面效果。

設(shè)計(jì)特點(diǎn)

系統(tǒng)由調(diào)度器、緩存服務(wù)器、守護(hù)進(jìn)程及客戶端組成:

  • 對(duì)上層的構(gòu)建系統(tǒng)(Make、CMake,Blade、Bazel 等)透明,方便適配各種構(gòu)建系統(tǒng)。
  • 調(diào)度器全局共享,所有請(qǐng)求均由調(diào)度節(jié)點(diǎn)統(tǒng)一分配。這樣,低負(fù)載時(shí)可允許客戶端盡可能提交更多的任務(wù),集群滿載時(shí)可阻塞新請(qǐng)求避免過(guò)載。
  • 中心的調(diào)度節(jié)點(diǎn)也避免了需要客戶機(jī)感知編譯集群的列表的需要,降低運(yùn)維成本。
  • 編譯機(jī)向調(diào)度器定期心跳,這樣我們不需要預(yù)先在調(diào)度器處配置編譯機(jī)列表,降低運(yùn)維成本。
  • 分布式緩存避免不必要的重復(fù)編譯。同時(shí)本地守護(hù)進(jìn)程處會(huì)維護(hù)緩存的布隆過(guò)濾器,避免無(wú)意義的緩存查詢引發(fā)不必要的網(wǎng)絡(luò)延遲。
  • 使用本地守護(hù)進(jìn)程和外界通信,這避免了每個(gè)客戶端均反復(fù)進(jìn)行TCP啟動(dòng)等操作,降低開(kāi)銷。另外這也允許我們?cè)谑刈o(hù)進(jìn)程處維護(hù)一定的狀態(tài),提供更多的優(yōu)化可能。
  • 客戶端會(huì)和本地守護(hù)進(jìn)程通信,綜合控制本地任務(wù)并發(fā)度避免本地過(guò)載。
  • 通過(guò)編譯器哈希區(qū)分版本,這允許我們的集群中存在多個(gè)不同版本的編譯器。

同時(shí),做了多層重試,確保不會(huì)因?yàn)榫W(wǎng)絡(luò)抖動(dòng)、編譯機(jī)異常離線等工業(yè)場(chǎng)景常見(jiàn)的問(wèn)題導(dǎo)致的不必要的失敗。

?

下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評(píng)論

查看更多

下載排行

本周

  1. 1山景DSP芯片AP8248A2數(shù)據(jù)手冊(cè)
  2. 1.06 MB  |  532次下載  |  免費(fèi)
  3. 2RK3399完整板原理圖(支持平板,盒子VR)
  4. 3.28 MB  |  339次下載  |  免費(fèi)
  5. 3TC358743XBG評(píng)估板參考手冊(cè)
  6. 1.36 MB  |  330次下載  |  免費(fèi)
  7. 4DFM軟件使用教程
  8. 0.84 MB  |  295次下載  |  免費(fèi)
  9. 5元宇宙深度解析—未來(lái)的未來(lái)-風(fēng)口還是泡沫
  10. 6.40 MB  |  227次下載  |  免費(fèi)
  11. 6迪文DGUS開(kāi)發(fā)指南
  12. 31.67 MB  |  194次下載  |  免費(fèi)
  13. 7元宇宙底層硬件系列報(bào)告
  14. 13.42 MB  |  182次下載  |  免費(fèi)
  15. 8FP5207XR-G1中文應(yīng)用手冊(cè)
  16. 1.09 MB  |  178次下載  |  免費(fèi)

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費(fèi)
  3. 2555集成電路應(yīng)用800例(新編版)
  4. 0.00 MB  |  33566次下載  |  免費(fèi)
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費(fèi)
  7. 4開(kāi)關(guān)電源設(shè)計(jì)實(shí)例指南
  8. 未知  |  21549次下載  |  免費(fèi)
  9. 5電氣工程師手冊(cè)免費(fèi)下載(新編第二版pdf電子書(shū))
  10. 0.00 MB  |  15349次下載  |  免費(fèi)
  11. 6數(shù)字電路基礎(chǔ)pdf(下載)
  12. 未知  |  13750次下載  |  免費(fèi)
  13. 7電子制作實(shí)例集錦 下載
  14. 未知  |  8113次下載  |  免費(fèi)
  15. 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德?tīng)栔?/a>
  16. 0.00 MB  |  6656次下載  |  免費(fèi)

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費(fèi)
  3. 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
  4. 78.1 MB  |  537798次下載  |  免費(fèi)
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420027次下載  |  免費(fèi)
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費(fèi)
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費(fèi)
  11. 6電路仿真軟件multisim 10.0免費(fèi)下載
  12. 340992  |  191187次下載  |  免費(fèi)
  13. 7十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
  14. 158M  |  183279次下載  |  免費(fèi)
  15. 8proe5.0野火版下載(中文版免費(fèi)下載)
  16. 未知  |  138040次下載  |  免費(fèi)