




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
InfoInfoQCon全球軟件開發大會研發效能提升最后一公里之編譯加速目錄目錄contents現有大型C++工程構建的痛點打造“共享〃分布式編譯系統編譯過程度量與可視化編譯過程改進案例
現有大型C++工程構建的痛點“構建容易失敗,且構建過程耗時較
長〃“構建容易失敗,且構建過程耗時較
長〃“進行構建打包時,首次構建經常出錯,且構建耗時長(2小時左右),構
建過程不透明〃開發團隊開發團隊B開發團隊A構建耗時長安全隔離差“可考慮按工作室隔離部署構建系統,以縮短構建時間,且可提高代碼安全性〃“構建系統的功能可滿足需要,但是其
更新頻繁且不太穩定,影響構建〃開發團隊開發團隊C開發團隊DQCon全球軟件開發大會InfoQ現有大型C++工程構建的痛點1、 構建耗時長2、 安全隔離差1、 構建耗時長2、 安全隔離差加好機器引入分布式編譯加機器每個業務部署一套,做到硬隔離,資源利用率低,需要不能聚焦于業務研發有沒有一種創新性的方案?QCon全球軟件開發大會InfoQInfoInfoInfoInfo目錄目錄contents現有大型C++工程構建的痛點打造“共享〃分布式編譯系統編譯過程度量與可視化編譯過程改進案例打造打造“共享”分布式編譯系統打造打造“共享”分布式編譯系統QCon全球軟件開發大會解決思路:打造軟件工程領域的“共享經濟〃共享經濟的關鍵點:共享載體:低成本承載用戶需求共享經濟的核心要素 管理體系:對大批量共享載體的多租戶管理工廠:共享載體的批量化快速生產和維護能力生產資料:打通供應鏈,獲取大量生成要素InfoQ共享經濟的關鍵點:: 容器作為共享載體的好處:共享載體:容器共享載體:容器(docker)①容器能夠快速低成本創建和銷毀化不同場景,切換快速穩定③技術上便于解決多租戶隔離問題QCon全球軟件開發大會InfoQ共享經濟的共享分布式編譯服務管理體系:分布式編譯管理工廠:容器云平臺藍鯨容器平臺
[容器工廠]生產資料:空閑機(PM/VM)空閑物理機、VM資源InfoQTencent/bk-bcs:藍鯨智云容器X bft/Tencent/bk-bcs2.3.藍鯨容器平臺[容器工廠]藍鯨體系下原子平臺服務騰訊游戲的基礎平臺一個開源項目11可視化I配叡件代碼嗣I結合CI最4LICENSE.txt docs:fixlowcase,issue#305 11monthsago/Tencent/bk-bcsgo.mod Mergepullrequest#634fromDeveloperJim/go-micro 24daysagogo.sumreadme.mdreadme_en.mdreadme.mddocs:update1.19.x,issue#0docs:updatereleaseinfo,issue#0docs:1.18.8infoupdate,issue#017daysago17daysago19daysagoLanguages?Go98.1%Other1.9%藍鯨容器管理平臺licensemit[release11.18.9BKPipelinesrsucceededIPRswelcomeEnglishDocs重要提示:master分支在開發過程中可能處于不穩定或者不可用吠態。請通過releases而非master去獲取穩定的二進制文件。藍鯨容器管理平臺(BluekingContainerService,簡稱BCS)是藍鯨體系下,以容器技術為基礎,為各種架構的應用提供編排管理和治理服務的基礎平臺。BCS支持兩種不同的集群模式,分別為原生K8s模式和基于Mesos自研的模式;k8s模式緊跟社區發展,充分利用社區資源,避免過度修改導致版本碎片;mesos模式針對游戲等復雜應用深度定制,解決這類應用在微服務過渡階段容器化的后顧之憂。BCS在騰訊內部已經穩定運行三年以上,經過幾十款不同架構、不同規模的業務驗證,其中規模最大的業務包含五個獨立的集群,共600+物理機資源(單機48核以上,128G以上內存),近7000POD,使用30多個命名空間進行隔離。BCS作為藍鯨體系的一部分,其整體結構按照藍鯨PaaS體系組織,本次開源的部分為BCS后臺部分,為藍鯨PaaS體系下的原子平臺,主要輸出服務編排和服務治理的能力。BCS的操作頁面部分通過藍鯨SaaS輕應用的方式呈現,可以通過最新的藍鯨社區版或者企業版獲取該SaaS的版本;或者直接獲取SaaS幵源代碼自行安裝部署與集成。Overview藍鯨容器管理平臺InfoG騰訊Cl任務下單過程展示服務網關配置管理訪問權限管理任務數據查詢管理體系:分布式編譯服務工廠:藍鯨容器平臺資源申請任務管理分布式編譯服務空閑機共享載體:容器(docker)BuildBoosterToolKit bk-cmake
bk-make
bk-bazel
bk-blade
bk-ninjabk-booster隊列管理 資源調配 任務調度 任務跟蹤自研編譯加速
插件UE4
插件fastbuild插件Booster數據管理訪問控制配置任務控制數據資源數據任務動態Booster監控藍鯨容器服務(BCS)線上資源監控資源歷史監控深圳公共分區業務專有分區BCS集群天津公共分區業務專有分區上海公共分區業務專有分區任務實時監控項目監控InfoQ打造打造“共享”分布式編譯系統打造打造“共享”分布式編譯系統bk-booster-btcc-pSprojectid-a"make-j@BK_JOBSall"--hook分布式編譯服務①依據項目設定申請資源分布式資源管理k③回饋編譯容器節點狀態②創建指定image的deployment設定namespace④注冊任務和資源信息分布式
任務控制器⑦選擇輔助容器■⑤以hook方式執行編譯指令make-J炒bKUb:⑥本地預處理Fgcc一o...Hlbk-dist-execgcc一o...gcc—o...HIbk-dist-execgcc—o...gcc—o…?bk-dist-execgcc一o...下發文件,藍鯨容器服務容器編排容器狀態管理Matic及日志管理網絡管理設定bridge網絡模式
設定隨機端口模式編譯加速專用集群fdocker)dockeru11nl11 1XA1 1 1?? 1 1\Vdockerf dockerCreatedeploymentMatric數據和
日志數據汗始采集dockerBk-dist-workerJBk-dist-workerdockerBk-dist-worker打造打造“共享”分布式編譯系統打造打造“共享”分布式編譯系統多租戶管理多租戶管理編譯資源共享-空閑機構建編譯加速集群-快速創建、快速銷毀-資源重復利用跨OS支持-常規集群支持linux環境下編譯?windows容器集群支持windows環境下編譯?通過namespace隔離不同業務環境?容器網絡管理隔離不同業務編譯容器網絡?自定義image打造個性化編譯環境多場景擴展?支持不同的編譯工具鏈和編譯器版本?支持框架集成式編譯場景QCon全球軟件開發大會InfoQ“共享〃分布式編譯在DevOps中的應用編譯0引用變量。完整構建子流水線■編譯加速&藍盾服務插件:幫助文檔。版本:報表配置號流水線>完整構建子流水線一編譯加速>編輯Bash重選1.latest任務ID:54b58381f1e04c86a930d5be1487bc8b(系統自動生成)創建時間:2018年12月10日10:12流水線通知權限基礎設置stage-12-1構建stage-2QRevertSVN囹拉取SVN(命令行)囪環境變量E刪除刷檔數據E更新DBB精簡Bin邕歸檔構件s獲取部署機器用戶3—1部署邕解包邕重啟stage-3Q.企業微信機器人推員觸發生成數據檔差學54555657585960616263646566676869707172737475767?7<8(8:82838485868788fi#編譯協議makemakemakemakemakemake創建人:jjjjjj404040404040rank_protocol_srconline_protocol_srcallocate_protocol_srcfile_protocol_srcprotocol_srcbusiness_srcsleep1#使用藍盾cmake生成makefilebkcmakep${turbo.task.id}Ca"${BUILD_ARGS}"el《afisleep1#使用藍盾make幵始編譯JfturboTtasIcidj-echo"buildid:"${pipeline.build.id}bkmakep${turbo.task.id}b${pipeline.build.id}Cif[$?!=0]thenexit-1fi奇行節令運行返回值耳冃零時,繼續執行腳本啟用編譯加速完整構建子流水線-編譯加速警告:關聯的編譯加速任務為C/C++語言,使用了distcc加速方案,需修改編譯腳本。修改如下:1、若你的makefile是由cmake自動生成的,需先修改cmake并加上編譯加速任務ID參數。cmake改為bk-cmake-p$(turbo.task.id)-C2、使用bk-make來替代make,并加上編譯加速任務ID和流水線當前構建ID參數。make改為bk-make-p${turbo.task.id}-b${pipeline.build.id}-C其它情況請查看更多修改示例>>任務名稱:*構建類型:構建機系統:項目語言:項目類型:構建工具:加速方案:第三方構建機:構建機地址:編譯器:軟件安裝包:流水線:構建環境:編譯腳本:分布式編譯加速:其他參數:完整構建子流水線-編譯加速第三方構建機tlinuxC/C++后臺服務make/cmakedistcc3深圳clangLD-Turbo安裝成功重新安裝完整構建子流水線—編譯加速構建2-1編譯18臺加速機器供144核)如需升級資源請聯系DevOps小助手□腳本返回非零時歸檔文件如遇到問題請聯系藍盾助手DevOps保存取消QCon全球軟件開發大會InfoQInfoGInfoGInfoGInfoG打造"共享”分布式編譯系統編譯加速:累計399個項目創建3893個任務,加速4.765.479次,節省編譯約66.047h,加速39.2%e皿創建任務月度創建趨勢(19^11月?2gno月)745219238478 570 482195145138214179177 16917214113419年Q420^Ql2呻J220^Q311月12月1月2月3月4月5月6月7月8月頁目累計加速后時間(h)13452134節省編譯時間(h)加速燦節約時間雄12744218448.6%16471632443.6%2782667043.3%24734702743.1%10802643.0%14776230528441.0%9835309140.8%16175226740.4%662311905740.2%r i64i6698638.5%匚 12337776238.1%F 25068153337.9%L 334331413937.0%342220475636.1%■ 251215778634.5%9月10月QCon全球軟件開發大會InfoInfoInfoInfo目錄目錄contents現有大型C++工程構建的痛點打造“共享〃分布式編譯系統編譯過程度量與可視化編譯過程改進案例編譯過程度量DevOps是對軟件交付流程的①自動化是DevOps的先決條件②數據和是所有改進的基礎過程改進編譯過程QCon全球軟件開發大會InfoQInfoGInfoG編譯過程度量分布式編譯的4、低并發占用率3、最大并發率gcc-D..-I..-oxi.oxxi.c下發目標和指令QCon全球軟件開發大會回收編譯結果回收編譯結果下發目標和指令Bk-dist-workergcc-D..-I..-0x2.0xx2.cgcc-D..-I..-oxn.oxxn.c入口編譯機1、任務分發率2、任務等待率8cn6g編譯容器Bk-dist-worker5、分布式資源利用率gcc-D..-l..-oxi.oxxi.cgcc-D..-l..-oxn.oxxn.c8c:t6g編譯容器InfoQ編譯過程度量分布式編譯的0102分布式執行任務總數與項目任務總數的比值度量編譯過程使用分布式資源的能力任務等待總時長與任務執行總時長的比值度量編譯過程中文件分發.鎖等待等低效因素的影響03最大并發峰值與任務總數的比值度量編譯過程中并發執行的效率04。5低并發階段總時間與I項目分布式任務執行總時長與構建總時間的比值度量編譯過程中受依賴阻塞,并發連貫性等因素度量編譯過程中分布式資源使用情況QCon全球軟件開發大會編譯過程可視化一藍盾(BK-CI)編譯耗時詳情并發數據曲線并發數據曲線圖353025基礎信息2015105070^ssssssssssssssszsssszss^505040302000編譯過程狀態任務總時長統計右.X?.&,如七c'包’如?裕.如,如,如’包V.? ■J?%%%%%%為為■為程■遠程處理成功任務數■本地處理成功任務數■本地預處理成功任務數 謳程處理失敗任務數■本地處理失敗任務數■本地預處理失敗任務數■分發任務數■接收任務數任務處理曲線成功編譯結果6m47.635s總時長5.336s申請資源6m42.265s實際編譯19330280遠程編譯任務遠程失敗任務本地編譯任務本地失敗任務32144Shenzhen8本地CPU遠程CPU加速集群地區發起機器ipvl4.6-20.07.31client版本bkwork_gcc8.4.0worker版本QCon全球軟件開發大會統計信息2.27s13.095s2.37s6.305s預處理持鎖預處理持鎖預處理預處理平均等待時間最長等待時間平均耗時最長耗時0.012s1.798s18.554s2m19.56s遠程持鎖遠程持鎖遠程處理遠程處理平均等待時間最長等待時間平均耗時最長耗時C0.078s0.706s5.247s20.912s「本地持鎖本地持鎖本地處理本地處理平均等待時間最長等待時間平均耗時最長耗時0.077s0.308sOs0.019s文件壓縮文件壓縮文件解壓文件解壓平均耗時最長耗時平均耗時最長耗時0.454s2.186s0.147s0.837s文件分發文件分發文件接收文件接收平均耗時最長耗時平均耗時最長耗時NaNsOsNaNs0s公共文件壓縮公共文件壓縮公共文件分發公共文件分發平均耗時最長耗時平均耗時最長耗時5278.07s35865.59s40301.77s任務等待分布式任務執行所有任務執行總時長總時長總時長0.925s30.453s遠程處理排隊遠程處理排隊平均耗時最長耗時%%勺,勺?&%?%電?氣■分布式處理■分發文件■遠程實際處理■本地處理■本地預處理任務處理曲線InfoQInfoInfoInfoInfo目錄目錄contents現有大型C++工程構建的痛點打造“共享〃分布式編譯系統編譯過程度量與可視化編譯過程改進案例編譯過程改進編譯過程改進InfoGInfoG編譯過程改進編譯過程改進InfoGInfoG案例:某游戲接入后,編譯效率提升不足10%并發數據曲線并發數據曲線圖250200最大并發190150100并發數15,持續1.5分鐘并發數0,持續2.5分鐘并發數0,持續1分鐘500■分布式處理■分發文件■遠程實際處理 本地處理?本地預處理最大并發率:190/(2593+20)=7.27% <10%經驗值低并發占用率:5/7.18=69.64% >40%經驗值基礎信息統由言息7m17.6
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 餐飲行業食品安全監管責任協議
- 城投招商面試題目及答案
- 美術課件小學生
- 班會課件小學
- 光伏合同續簽協議書
- 房屋合同變更協議書范本
- 簡單消防改造合同協議書
- 汽車服務會員合同協議書
- 北森招聘筆試題庫及答案
- 國際軍人考試題庫及答案
- 廣州市人力資源和社會保障局事業單位招聘工作人員【共500題含答案解析】模擬檢測試卷
- 發動機機械-01.1cm5a4g63維修手冊
- 馬克思主義新聞觀十二講之第八講堅持新聞真實原則課件
- 交通信號控制系統檢驗批質量驗收記錄表
- 護理部用藥安全質量評價標準
- 電子印鑒卡講解
- 中國本土私募股權基金的投資管理及退出(清華)
- 深基坑工程安全檢查表范本
- 汽車零部件規范申報ppt課件
- 門護板設計指導書RYSAT
- 沙盤游戲治療(課堂PPT)
評論
0/150
提交評論