資料介紹
軟件簡介
yadcc(Yet Another Distributed C++ Compiler)是一套騰訊廣告自研的分布式編譯系統(tǒng),用于支撐騰訊廣告的日常開發(fā)及流水線。相對于已有的同類解決方案,其針對實際的工業(yè)生產(chǎn)環(huán)境做了性能、可靠性、易用性等方面優(yōu)化。
yadcc 目前在騰訊 1700+ 核的集群中每天編譯 300,0000+ 個目標(biāo)文件,產(chǎn)出約 3~5TB,已經(jīng)持續(xù)穩(wěn)定運營 8 個月。取決于代碼邏輯及本地機器配置,yadcc 可以利用幾百乃至 1000+ 核同時編譯(騰訊內(nèi)部使用 512 并發(fā)編譯),大大加快構(gòu)建速度。
具體簡介及技術(shù)細節(jié)可以參考技術(shù)文檔。
系統(tǒng)要求
- Linux 3.10 及以上內(nèi)核,暫不支持其他操作系統(tǒng);
- x86-64 處理器;
-
編譯
yadcc
需要GCC 8 及以上版本的編譯器,基于yadcc
進行分布式編譯時可以支持其他更低版本編譯器。
基本原理
-
客戶端偽裝成編譯器(通常是通過
ln -sf yadcc g++
創(chuàng)建的符號鏈接) -
通過將客戶端偽裝的編譯器加入
PATH
頭部,這樣構(gòu)建系統(tǒng)就會實際執(zhí)行yadcc
來編譯 -
yadcc
會按照命令行對源代碼進行預(yù)處理,得到一個自包含的的預(yù)處理結(jié)果 - 以預(yù)處理結(jié)果、編譯器簽名、命令行參數(shù)等為哈希,查詢緩存,如果命中,直接返回結(jié)果
- 如果不命中,就請求調(diào)度器獲取一個編譯節(jié)點,分發(fā)過去做編譯
- 等待直到從編譯集群中得到編譯結(jié)果,并更新緩存
由于預(yù)處理時間通常遠小于編譯時間,因此這樣可以降低單個文件的本地開銷。同時,由于等待編譯結(jié)果時本地?zé)o需進行操作,因此可以增大本地的編譯并發(fā)度(如8核機器通常可以make -j100
),以此實現(xiàn)更高的吞吐。
需要注意的是,分布式編譯通常只能提高吞吐,但是不能降低單個文件的編譯耗時(假設(shè)不命中緩存)。因此,對于無法并發(fā)編譯的工程,除非命中緩存,否則分布式編譯通常不能加快編譯,反而可能有負面效果。
設(shè)計特點
系統(tǒng)由調(diào)度器、緩存服務(wù)器、守護進程及客戶端組成:
- 對上層的構(gòu)建系統(tǒng)(Make、CMake,Blade、Bazel 等)透明,方便適配各種構(gòu)建系統(tǒng)。
- 調(diào)度器全局共享,所有請求均由調(diào)度節(jié)點統(tǒng)一分配。這樣,低負載時可允許客戶端盡可能提交更多的任務(wù),集群滿載時可阻塞新請求避免過載。
- 中心的調(diào)度節(jié)點也避免了需要客戶機感知編譯集群的列表的需要,降低運維成本。
- 編譯機向調(diào)度器定期心跳,這樣我們不需要預(yù)先在調(diào)度器處配置編譯機列表,降低運維成本。
- 分布式緩存避免不必要的重復(fù)編譯。同時本地守護進程處會維護緩存的布隆過濾器,避免無意義的緩存查詢引發(fā)不必要的網(wǎng)絡(luò)延遲。
- 使用本地守護進程和外界通信,這避免了每個客戶端均反復(fù)進行TCP啟動等操作,降低開銷。另外這也允許我們在守護進程處維護一定的狀態(tài),提供更多的優(yōu)化可能。
- 客戶端會和本地守護進程通信,綜合控制本地任務(wù)并發(fā)度避免本地過載。
- 通過編譯器哈希區(qū)分版本,這允許我們的集群中存在多個不同版本的編譯器。
同時,做了多層重試,確保不會因為網(wǎng)絡(luò)抖動、編譯機異常離線等工業(yè)場景常見的問題導(dǎo)致的不必要的失敗。
- 分布式電源對配電系統(tǒng)的影響分析
- 基于Simulink的電子對抗分布式仿真系統(tǒng) 26次下載
- 基于分布式仿真系統(tǒng)的實時通訊架構(gòu) 11次下載
- 基于KingSCADA的分布式運動控制監(jiān)測系統(tǒng) 10次下載
- 基于DSP的航空發(fā)動機分布式總線設(shè)計方案 14次下載
- 一種可行的分布式存儲系統(tǒng)安全構(gòu)造方法 21次下載
- TMS320F28x 優(yōu)化C/C++編譯器用戶指南 25次下載
- 分布式能源系統(tǒng)經(jīng)濟優(yōu)化運行 16次下載
- 高級C/C++編譯技術(shù) 18次下載
- 分布式電纜溫度監(jiān)控系統(tǒng) 74次下載
- 一種分布式編譯系統(tǒng)的設(shè)計與實現(xiàn)
- 分布式專家系統(tǒng)結(jié)構(gòu)設(shè)計
- 基于多Agent 技術(shù)的分布式測控系統(tǒng)研究
- 基于IP的點對點分布式VPN系統(tǒng)
- 分布式系統(tǒng)原理與范例 pdf 0次下載
- 分布式SCADA系統(tǒng)的特點的組成 324次閱讀
- Java手寫分布式鎖的實現(xiàn) 424次閱讀
- tldb提供分布式鎖使用方法 761次閱讀
- 深入理解redis分布式鎖 763次閱讀
- 如何使用分布式存儲系統(tǒng)促進AI模型訓(xùn)練 494次閱讀
- 鴻蒙分布式相機“踩坑”分享 1578次閱讀
- 利用NI VeriStand 2010實現(xiàn)分布式同步系統(tǒng)的設(shè)計 3154次閱讀
- 基于Jini互聯(lián)技術(shù)實現(xiàn)分布式嵌入式系統(tǒng)的設(shè)計 3008次閱讀
- 詳談分布式系統(tǒng)的定義及屬性 3689次閱讀
- 分布式光纖傳感器原理_分布式光纖傳感器的應(yīng)用 8424次閱讀
- 分布式控制系統(tǒng)的介紹 5216次閱讀
- 存儲分布式系統(tǒng)中如何從CAP轉(zhuǎn)到PACELC 2692次閱讀
- 深度解讀分布式存儲技術(shù)之分布式剪枝系統(tǒng) 1773次閱讀
- 利用FPGA實現(xiàn)無線分布式采集系統(tǒng)設(shè)計 1196次閱讀
- 基于CAN總線的分布式網(wǎng)架健康狀態(tài)監(jiān)測系統(tǒng)的設(shè)計 963次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數(shù)據(jù)手冊
- 1.06 MB | 532次下載 | 免費
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費
- 3TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費
- 5元宇宙深度解析—未來的未來-風(fēng)口還是泡沫
- 6.40 MB | 227次下載 | 免費
- 6迪文DGUS開發(fā)指南
- 31.67 MB | 194次下載 | 免費
- 7元宇宙底層硬件系列報告
- 13.42 MB | 182次下載 | 免費
- 8FP5207XR-G1中文應(yīng)用手冊
- 1.09 MB | 178次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33566次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關(guān)電源設(shè)計實例指南
- 未知 | 21549次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅(qū)動電路設(shè)計》 溫德爾著
- 0.00 MB | 6656次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537798次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191187次下載 | 免費
- 7十天學(xué)會AVR單片機與C語言視頻教程 下載
- 158M | 183279次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
評論
查看更多