研发效能提升最后一公里之编译加速_第1页
研发效能提升最后一公里之编译加速_第2页
研发效能提升最后一公里之编译加速_第3页
研发效能提升最后一公里之编译加速_第4页
研发效能提升最后一公里之编译加速_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论