(注:离在线混部计划另文阐述) 图 1 混部示意图 在离线混部的成本价值 为了更形象的了解在离线混部的成本价值,我们来看一个中小型企业,4 核 8G 的机器一共有 1000 台,主要计算资源就是 阿里等大厂也成功借助混部将资源利用率提升了 3 倍以上,成本节省可观。 在离线混部的技术门槛 在离线混部虽然有明显的成本价值,但目前真正落地到生产环境的还是只有头部的一些大厂。 引入在离线混部之后,势必需要打破部门墙,对成本和利用率计算有一个能融合能分解的调整,才能准确反映出混部的巨大成本价值并持续精细化运营。 以下是美团某部门精细化成本运营后的分解图: 图 2 成本指标分解图 业界在离线混部方案解析 方案拆分 通过对目前业界在离线方案方案的分析,我们可以抽象出在离线混部方案的三个划分维度: 从在离线混部的隔离类型上 如果服务是混部于同一台物理机上,属于共享内核;如分属于不同物理机,则属于独占内核。 从在离线混部的部署底座上,可以分为物理机部署和容器部署。 从在离线混部的调度决策上,可以分为静态决策和动态决策。
本篇文章结合腾讯技术团队在混部方面的落地和实战经验,来介绍各类场景下在线离线混部的相关概念、面临的问题及混部技术方案,抛砖引玉,供大家交流。 图2 混部的场景 业内研究 在线离线混部对于提高集群利用率是非常有意义的,无论是在学术界,还是各大厂商实际落地,都对混部做了深入的研究。 这些混部方案提出了很多很好的思想,我们也借鉴吸收,如Heracles中资源配置方案,但我们也看到其中的不足,如:1)基于厂商专有自研平台混部,不是云原生生态,2)对k8s云原生进行定制化改造,不利于开源 2、模块独立 Caelus的每个模块都是独立的,可以单独使用,来适配不同的需求。几个典型的例子,一个是buffer资源池机器混部,该场景不需要预测,没有在线作业,那就可以把预测功能关闭。 图6 全维度资源管理 这里需要重点说明的一点是原生的OS提供的隔离功能有限,不能覆盖全维度资源,本公司内部OS团队专门做了混部增强,如:1)cpu的BT调度,解决cpu抢占问题;2)内存优先级及cgroup
接上一篇:<<dockerfile 常用易混指令--(1)>>, 本篇介绍剩余的几个基础指令: CMD: dockerfile中这个指令一般只有一个,如果配置有多个,那么只有最后一个CMD配置生效,而如果没有配置 ENTRYPOINT指令的时候,有shell form和exec form的区别,分别是如下的形式: exec forms: INSTRUCTIONS ["command","para1","para2" ] shell forms: INSTRUCTIONS "command" "para1" "para2" 在shell 格式下,相当于 /bin/sh -c "command" "para1 " "para2" ; 而在exec格式中,["command" ,"para1" ,"para2"] 并不被/bin/sh 来处理,这里就涉及到一个变量解析的问题,详细例子见文章:基于centos 但是对于像数据库这类应用,数据库程序的相当一部分log文件即便在容器停止运行的时候也不应该丢失,所以需实现持久化存储,而实现持久化存储通常在 docker run的时候通过 -v 参数来指定, 但是如果用户在
在今年 9 月份的 QCon 全球软件开发大会(北京站),贝联珠贯 (www.lccomputing.com) 合伙人王元良老师以《增强型 RunC 的最佳实践:克服离线高压力混部场景的关键挑战》为题, 所以在混部出让算力时,优先需要考虑的是高压力场景下,业务如何稳定运行的问题。 二级告警,LCC-Agent 通知 NM NM 会调整心跳时间 NM 会根据任务的优先级,优先 KILL 低优先级任务 三级告警,LCC-Agent 直接 kill 非白名单进程 机器夯死问题得到解决,混部解决掉最关键的资源卡点问题 集群维度感知,先于业务发现问题 前期为了了解客户混部集群中的各种资源问题状态,我们采用手动脚本单台机器日志并聚类的方式来拿到结果;这种方式耗时长 (两周一次)、只能分析问题大类、没法观察问题走势和分布等 混部后单机压力与复杂度指数级上升,需要高频全视角的分析问题,这种方式不再适用。需要一套能分钟级展示、多视角、自动聚类分析的手段,包括时间对比、子系统分布、问题大类、问题子类、业务角度等。
相关笔记:谷歌Borg论文阅读笔记(一)—— 集群操作系统 Google的混部情况 Google几乎所有的机器都是混部的,在一台机器上,可能运行着不同jobs的tasks。 这里主要讲的是Google对任务混部对CPU性能影响的研究。 Google为了评估不同任务部署到同一个机器的CPU干扰影响做了一个实验。 增加10%的CPU利用率会增加2%的CPI。 这是CPU密集型的程序测量的结果,事实上干扰存在于各种资源。 相对而言,专用的cells的CPI要低于混用的cells。 资源分类 混部的一大问题是某个资源不足的情形。但是,不同的资源有不同的特点,有的资源能快速调整,而有的则需要很大的代价来调整。 总结 应用混部,尽可能使用多线程。 使用轻量级的隔离机制,而不是VM。 合理的对资源超分配,以此提高资源利用率。很多任务并不是任何时刻都会用到很多资源。 对任务和资源进行分级。
导语 混部,通常指在离线混部(也有离在线混部之说),意指通过将在线业务(通常为延迟敏感型高优先级任务)和离线任务(通常为 CPU 消耗型低优先级任务)同时混合部署在同一个节点上,以期提升节点的资源利用率 混部(混合部署)因此应运而生。这里的“混”,本质上就是“区分优先级”。狭义上,可以简单的理解为“在线+离线”(在离线)混部,广义上,可以扩展到更广的应用范围:多优先级业务混合部署。 从设计的角度看,这样的设计并无不妥,但对于云原生混部场景来说,这样的设计并不完美:并不感知离线的饥饿程度,也就是说,在离线并不饥饿的情况下,也可能对在线抢占,导致不必要的干扰。 (2)另一种想法。 超线程干扰问题是混部场景中的关键问题,而 CFS 在最初设计时是(几乎)完全没有考虑过的,不能说是设计缺失,只能说是 CFS 并不是为混部场景而设计的,而是为更通用的、更宏观的场景而生。 不太适合(云原生)混部场景。 本质还是:Core scheduling 亦非为云原生混部场景而设计。 结论 综合前面的分析,可以抽象的总结下当前现有的各种方案的优点和问题。
对此,业内一直在进行诸多探索,在线离线混部被认为是解决该问题的终极方案。 .大部分混部系统只针对云原生场景,无法利用大量非容器化的在线空闲资源; 2. 混部调度器缺乏在离线应用调度的兼容性、高性能以及SLA保证。 解决这些问题,也是Caelus混部研发的初衷。 充分兼容的架构设计 Caelus为了适应各种的混部场景,遵循了几个关键原则,主要包括: 1. 不改变业务使用方式,便于业务迁移到Caelus混部平台。 如果大数据已经是on k8s的方式,也可以更方便的使用统一调度; 2. 对基础生态零入侵。
对此,业内一直在进行诸多探索,在线离线混部被认为是解决该问题的终极方案。 由于很多大数据任务具有实时性要求不高、运行时间较短、使用碎片资源等特点,而在线应用的资源使用通常具有潮汐的特点,因此大数据任务比较适合复用在线应用的空闲资源,但混部也面临诸多核心技术难题,具体包括: 大部分混部系统只针对云原生场景 ,限制了可以混部的场景; 在内核层、容器层缺乏完善的资源隔离、热迁移等机制,导致容易发生干扰,且处理干扰代价高; 混部调度器缺乏在离线应用调度的兼容性、高性能以及SLA保证。 解决这些问题,也是Caelus混部研发的初衷。 充分兼容的架构设计 Caelus Caelus为了适应各种的混部场景,遵循了几个关键原则,主要包括: 不改变业务使用方式,便于业务迁移到Caelus混部平台。
徐蓓,腾讯云容器技术专家,腾讯云异构计算容器负责人,多年云计算一线架构设计与研发经验,长期深耕 Kubernetes、在离线混部与 GPU 容器化领域,Kubernetes KEP Memory QoS 除此之外,腾讯云 qGPU 创新性的将在离线混合部署技术与 GPU 相结合,在业界首次实现了 GPU 在离线混部的方案,将 GPU 容器共享技术推进到了下一个纪元。 在线业务通常指推理业务,离线业务可能是推理、也可能是训练,于是在离线混部主要形式有 推理 + 推理、推理 + 训练。 在具备 qGPU 在离线混部能力之后,用户可以安全地将在线业务与其他业务部署在同一张 GPU 卡,在共享复用资源的同时,可以完全保障在线业务健康、稳定运行。 可以说,腾讯云 qGPU 在离线混部是提升 GPU 利用率的创新性的突破技术。
针对上述难题,业界公认的解决方式是 “在离线混部”技术(如 Koordinator,Caelus,Katalyst,Crane)。 但混部并非“银弹”,当企业将混部能力从单个集群扩展到全局多个集群时,资源仍然被物理集群边界锁死。 2 新一代资源管理范式,算力集群 算力集群是 TKE 面向跨集群资源混部场景推出的首个全栈式产品化解决方案,旨在充分挖掘集群中的闲置算力,让资源成本迈向全局最优。 方案默认集成了多集群资源管理、Crane 扩展调度 、混部隔离保障的 RUE 内核以及超大规模集群管控功能,全面降低用户在跨集群管理、资源调度和在离线混部上的维护复杂度。 2、高优在线类业务的部署和提交模式不变;低优离线类业务通过算力集群统一运营,基于全局调度为离线业务匹配最合适的算力,优先级默认最低且资源可抢占。
2023 年 1 月 9 日云原生产业联盟(CNIA)举办 2022 年度线上年会,中国信通院云大所云计算发布了云原生系列测评成果,腾讯云主导开源的云原生成本优化项目 Crane 首批通过“云原生混部” 腾讯云自 2015 年起在混部领域进行探索,在支撑海量自研业务上云的过程中广泛使用。目前管理规模已达数千万核,混部能力使服务器资源利用率从30% 提升至 65%。 云原生混部解决方案依托容器、微服务、平台编排调度等云原生技术,帮助用户将业务负载与大数据分析、人工智能计算等不同优先级的应用混合部署到共享的基础设施上,提高资源利用率,实现“降本增效”。 在此背景下,中国信通院牵头,联合腾讯云等多家云服务商,经过多轮研讨,形成了《云原生混部技术能力要求》标准。 标准涉及基础设施能力要求、平台混部能力要求、业务应用能力要求,以及混部效果评价四个部分,从资源隔离、资源复用、干扰检测、负载反馈、任务调度、资源预测、应用服务质量等不同维度,对混部产品及解决方案进行全面评估
作者徐蓓,腾讯云专家工程师,长期从事云计算 IaaS、PaaS 架构和研发工作,现负责腾讯云 TKE 资源调度、离在线混部、大数据云原生化等领域。 Google Borg 是资源调度管理和离在线混部领域的鼻祖,同时也是 Kubernetes 的起源与参照,已成为从业人员首要学习的典范。 Isolation 由于 Google Borg 天生就考虑混部场景,所以资源隔离对其尤为重要。 Google Borg 作为 Google 内部的经验结晶,系统的阐述了混部应有的基本形态,很有启发意义。 后续会持续分享混部相关的理论和实战经验。
本文将深入剖析腾讯云团队如何借助Serverless容器技术与深度混部策略,在保障核心业务SLA的前提下,将生产集群利用率稳定提升至65%以上,并分享实战中沉淀的关键技术与踩坑经验。 三、实战精要:混部架构设计与核心策略目标: 在共享资源池内同时部署延迟敏感型在线服务(如API、Web)与资源消耗型离线作业(如Spark、Flink、AI训练),互不干扰。 四、稳定性守卫:多维熔断与逃生机制混部的最大风险在于资源争抢导致在线业务抖动。 五、效果验证:从理论到生产的数据飞跃在日均百亿请求的电商核心集群落地混部方案:指标 混部前 混部后 提升幅度集群CPU利用率 22% 68% 混部方案需结合业务特性深度调优,不可直接复制参数。
本文结合华为云云原生团队在混合部署方面的研究和实战,介绍了混合部署的背景、概念、混部技术的设计方案和实际落地情况,以及对未来的计划和展望。 基于Volcano混合部署解决方案如下图所示: 图 3 基于Volcano混合部署架构 02 Volcano混部调度能力 目前Kubernetes的默认调度器是以Pod为单位进行调度的,不区分Pod中运行的业务类型 因此无法满足混部场景对资源分配的特殊要求。 资源超卖及在离线作业混部必然会导致不同作业之间的相互干扰,因此除了通过cgroup进行资源隔离之外,kubelet同时会实时采集节点上物理资源使用率,根据不同的情况驱逐离线作业,提前释放相应资源,防止对在线作业的 htm [4] 中国数据中心行业研究报告2020年: https://pdf.dfcfw.com/pdf/H3_AP202012161440695500_1.pdf [5] 王康瑾,贾统,李影.在离线混部作业调度与资源管理技术研究综述
目前TXLiteAVSDK_TRTC的方案是: 1、在控制台实时音视频服务下功能配置启用自动旁路直播,如果混流画面需要录制存储还需要启用旁路直播自动录制,参考:CDN旁路推流 2、当需要混流的时候客户端直接调用 setMixTranscodingConfig,并传入对应参数,这个时候SDK内部会组装请求并请求腾讯云后台; 3、混流成功后可以通过获取旁路地址播放 代码示例 Objective-C //云端混流转码的示例代码 = [[TRTCMixUser alloc] init]; user2.userId = @"Web_trtc_04"; user2.zOrder = 1; user2.rect = @[user1,user2]; [_trtc setMixTranscodingConfig:config]; //启动混流 } Android //开启云端混流转码 public 混流接口文档参考:云直播api 2017 -云端混流 请求url: http://fcgi.video.qcloud.com/common_access?
本文作者:雨哥哥 [1] 最近在研究uniswap v2[2]版本逻辑和代码,接下来我们以一篇uniswap v2版本的部署,开启uniswap[3]的学习之路。 合约准备 1、工厂合约: https://cn.etherscan.com/address/0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f#code 2、WETH合约 修改SDK 打开文件: uniswapv2/v2-sdk-a88048e9c4198a5bdaea00883ca00c8c8e582605/src/constants.ts, 修改: export const 然后修改文件: uniswapv2/v2-sdk-a88048e9c4198a5bdaea00883ca00c8c8e582605/src/entities/token.ts [ChainId.RINKEBY 接下来修改文件: uniswapv2/v2-sdk-a88048e9c4198a5bdaea00883ca00c8c8e582605/package.json 将name和version修改为你自己的即可
需先安装mongodb库,Docker/Rancher2部署Mongo4.0 需在mongodb中创建yapi库 其他环境变量请看作者仓库 管理员账号环境变量 Rancher部署 无需额外入口命令
latest 根路径data需要755权限(监狱模式),用户路径需要777权限 需要手动设置权限,并且重启后需要重新设置权限 如果是挂载目录,则更改宿主机目录权限 users.conf模板下载 Rancher2部署 sftp 注意权限问题 ---- 命令 进入容器 # 1.添加账号 vim /etc/sftp/users.conf # 2.重启容器,使账号生效 # 3.给新用户目录赋值权限777 mkdir -
需要先导入mysql脚本(https://github.com/alibaba/nacos/blob/develop/distribution/conf/nacos-mysql.sql) Rancher2部署
data:/ftp --name vsftpd delfer/alpine-ftp-server 容器/ftp目录为数据存储路径 配置账号 更改环境变量USERS,如user|password user2|