近期,第四届中国云计算基础架构开发者大会(China Cloud Computing Infrastructure Developer Conference – 简称 CID)在深圳举办。本届 CID 大会聚焦业界最前沿的云计算基础架构技术成果,围绕基础架构技术领域的技术交流,展示先进技术在行业中的典型实践。在主论坛上,作者以《云原生场景下内存多级卸载落地实践》为议题,分享内存多级卸载方案(内部称“Tencent OS悟净”)在公司业务落地过程中所遇到的实际问题、对应的解决方案,以及在容器平台上的落地数据。以下为分享重点。
内存需求成本不断上升,提升内存利用率成为首要问题:
绿色线为总的内存使用量,蓝色线是匿名页的冷内存占比,橙色线是文件页冷内存占比。可见冷内存在集群占比比较高。
在这样的背景下,内存多级卸载应运而生。如下图,用了内存多级卸载之后,每台workload可以节省出很多空闲资源。对于这些空闲资源,我们在腾讯云应用中主要有三种场景。
第一种,业务超卖场景:对workload开启多级卸载后,增加单pod(CVM)流量,提高TPS、QPS。
第二种,负载降配
● 降低业务成本:对workload开启内存多级卸载后,降低workload resources的memory request和limit,降低平台业务的上云成本。
● 提高集群装箱率:多数集群节点CPU/MEM是1:2,但是现网很多是大内存workload(1:4,1:8),影响集群装箱率,将大内存workload降配后(1:8 -> 1:4),可以提高集群装箱率。
第三种,混部弹性内存超卖
提高内存混部率:把非内存敏感型workload开启内存多级卸载,节省出多余的空闲内存资源,可以调度更多的离线(低优先级)pod上来,并且,在整机内存压力大又不能及时迁出的情况下,优先迁出、OOM调离线(低优先级)pod。
首先多级卸载在云原生场景落地中遇到的一些实际问题:
● 回收路径难以确定:内存多级卸载的回收名单是cgroup path list,但是在云原生容器平台中,pod cgroup path是一串哈希值,并且pod会在集群的node中间迁入迁出,实时调度,如何确定节点上哪些pod需要开启内存多级卸载,并且随着pod状态的改变,实时改变回收及更新名单?
● 回收参数难以确定:在容器平台中,需要开启内存多级卸载的workload对内存回收的敏感程度是不一样的,如何判断workload类型,然后使用对应回收参数?
● 主动回收也会导致一些问题:
(1) 误回收“冷”文件页:主动回收额外的文件页面,由于当前lru精度比较单调,导致误回收一些将会访问的页面,导致cache miss,造成读IOPS增加。
(2)过度压缩匿名页:在主备存储模型中,备份节点一直处于空闲状态,因为PSI一直表征空闲情况,内存多级卸载不断将其匿名页面压缩到zram,突然的主备切换,导致备节点突增大量请求,所有在zram的页面基本都需要解压,造成颠簸的延迟反应。
● zram的页面无法统计,这也是社区面临的问题:目前workload的resources.limits.memory是对cgroup的memory.usage_in_bytes做限制,但是压缩在zram的匿名页面无法被限制,会造成计数器泄露的问题,pod可能无限制得利用node上的zram资源,而k8s感知不到。
● 无法隔离非内存多级卸载pod的换出行为:当对node节点开启zram的时候,虽然不对非内存多级卸载pod做主动回收,但在非内存多级卸载pod容器内存紧缺的情况下、或者整机内存紧缺的情况下,依然有可能把非内存多级卸载pod的匿名页面压缩到zram中,改变客户原本的预期行为。
针对以上问题,我们出了一个整体解决方案,分为5个模块及各自功能。
● wujing-umrd daemonset:
○ qos-agent container:在node上,找到哪些pod打开了多级卸载,并且把pod cgroup和回收参数发送到umrd ds。
○ umrd container:umrd根据qos-agent传递过来的回收列表进行主动回收,并且根据回收参数、PSI、refault、cpu util计算回收文件页、匿名页的数量。
● mglru增强模块:
○ 拆分接口:文件页面、匿名页面独立扫描、回收。
○ Workingset Evaluation:评估有效文件页回写数量。
○ new workingset refault feature:优化mglru workingset。
● swap隔离模块:system disable、cgroup disable,可以隔离来自节点内存紧缺和容器内存紧缺对非开启内存多级卸载的pod换出行为。
● zram增强模块:per-cgroup zram priority、per-cgroup zram counter(raw、limit、usage)每个cgroup可以独立设置zram压缩登极,对于per-cgroup也做到了每个cgroup都能独立计算出压缩前和压缩后的量,以及现在cgroup zram的用量。
● 现网集群中部署热度探测模块:可以做匿名段热度探测,pod中总内存的容器总匿名页、文件页面热度探测,计算各自占比,我们根据占比评估出workload哪个集群适合开启多级卸载。
首次在集群中部署wujing-umrd ds,集群中每个node都会被调度上一个wujing-umrd pod,其中, wujing-umrd ds包含一个qos-agent container和umrd container。
● qos-agent container:当node上pod状态发生变化的时候,根据pod yaml打的QOS标签,对pod开启多级卸载,并且启用QOS标签对应的压缩等级和回收参数。
● umrd container:接受qos-agent container传递的回收路径和回收参数,并且根据PSI、refault负反馈决定当前回收的页面数量,将这些页面数量下给内核。
内核里面,我们更换了LRU算法。原本是两级mglru,我们backpod上游多级:
● 精度提升:传统LRU 仅使用两个lru list(Active/Inactive)来区分页面热度。而MGLRU中将 LRU 分成了了四个世代(Gen),每个世代中又分为 4 个层级(Tier)。表征页面精度的提升,意味着误回收“冷”页的可能性下降。
● mglru拆分接口:
○ 将mglru文件页、匿名页的扫描和回收过程隔离,并且给出同一的用户接口。
○ 使用方式,例如:
对于访问频繁的匿名页面,可以10s扫描一次,5s回收一次。
对于慢盘并且访问少的文件页,可以20s扫描一次,2s回收一次,实现有针对性的回收。
● Workingset Evaluation:
○ 可以获取一个 Cgroup 过去 1分钟/10分钟/30分钟 内平均 Refault 距离,以及预估有效文件页回写数量。
● workingset refault重构与优化:
○ 对 Linux 内核中传统 LRU 长期使用的 Workingset Refault Distance 算法进行了重新优化设计,并成功将其与 MGLRU 中的 Refault PID 算法结合。
○ 改进后的算法可以辅助不同场景下进行更加有效的页面平衡,并能更加有效地防止 Thrashing。新算法在一些应用场景中有着非常显著的性能提升(5% - 400%)。即使是在传统 LRU 场景下,新算法也有可见性能提升(1 - 5%)。部分改进已发至上游。
在集群原本没有开启swap,在使用多级卸载后,将会把集群的swap打开,对于非多级卸载pod,在整机、容器内存紧缺的情况下,会将匿名页面换出到swap设备,这是业务非预期行为,得支持swap的隔离。
● 整机内存紧缺:在整机内存紧缺的情况下,内核内存子系统会从root memcg开始遍历memcg,并且回收其lruvec,由于可能会对非多级卸载的pod做回收。
● 容器内存紧缺:在容器内存紧缺的情况下,内核内存子系统会从当前memcg开始遍历memcg,并且回收其lruvec,如果当前memcg没有开启多级卸载,那么会导致业务的匿名页面换出到swap上。
接口与解决办法:
● 内核接口:vm.force_swappiness、memory.swappiness
● qos-agent:qos-agent对开启多级卸载的集群,设置vm.force_swappiness=1,强制在整机、容器内存紧缺的情况下,强制对swappiness==0的容器不回收匿名页面;并且,在node上pod状态发生变化的时候,对非多级卸载pod设置swappiness=0,多级卸载pod设置swappiness=60。
ZRAM Enhance基于上游 Object Cgroup API 实现,每个 Cgroup 提供了:
● 独立更改 ZRAM 压缩级别:
/memory.zram.priority:每个 Cgroup 可以选择压缩等级 1 - 4,默认分别对应算法 lz4,lzo-rle,lz4hc,zstd,压缩率由高到低,性能损失由小增大,进而对不同敏感程度的pod用不同的压缩等级。
● 独立统计 ZRAM 压缩数据:
/memory.zram.raw_in_bytes:以 Byte 为单位的换出到zram压缩前的数据大小
/memory.zram.usage_in_bytes:以 Byte 为单位的换出到zram压缩后的总数据大小
● 限制 ZRAM 压缩量
/memory.zram.limit_in_bytes:以Byte为单位,限制本memcg换出到zram的总数据大小,超出这个限制后,匿名页面将无法换出到zram设备。
同时,zram压缩后的数据大小会计算到memory.usage_in_bytes上,方便k8s感知和限制。
目前内存多级卸载在公司在线容器平台、离线容器平台都已大量应用,覆盖业务含:键值存储、文件存储、聊天图片存储、聊天消息存储、AI平台、游戏AI训练、转码、数据库等。目前收益场景:超卖、降配、混部。
内存节省:提升单机的内存售卖率,降低内存存储的成本。相同数据量情况下,开启多级卸载,内存用量降低35%。
延迟情况:请求延时基本没有波动。
开启多级卸载后内存量的变化
benchmark的请求延迟没有波动
内存节省:对workload开启多级内存卸载,稳定降低内存用量后,降低workload的配置,节省业务上云成本。
性能:降低业务workload 86%的OOM数量。
内存节省:在混部集群中,节点内存接近打满,但CPU利用率还有空闲,此时内存资源成为混部瓶颈。对非内存敏感型workload开启多级卸载后,节省出额外的内存资源,调度更多的离线pod。
性能:无影响(出现影响优先kill离线pod)。
腾讯云容器服务 TKE 目前已在原生节点:
https://cloud.tencent.com/document/product/457/78197
上集成内存压缩能力,目前火热内测中,欢迎提交工单抢先体验:
https://console.cloud.tencent.com/workorder/category
本文由微信公众号腾讯技术工程原创,哈喽比特收录。
文章来源:https://mp.weixin.qq.com/s/BFex8B0HFfXYFygMBbW0lg
京东创始人刘强东和其妻子章泽天最近成为了互联网舆论关注的焦点。有关他们“移民美国”和在美国购买豪宅的传言在互联网上广泛传播。然而,京东官方通过微博发言人发布的消息澄清了这些传言,称这些言论纯属虚假信息和蓄意捏造。
日前,据博主“@超能数码君老周”爆料,国内三大运营商中国移动、中国电信和中国联通预计将集体采购百万台规模的华为Mate60系列手机。
据报道,荷兰半导体设备公司ASML正看到美国对华遏制政策的负面影响。阿斯麦(ASML)CEO彼得·温宁克在一档电视节目中分享了他对中国大陆问题以及该公司面临的出口管制和保护主义的看法。彼得曾在多个场合表达了他对出口管制以及中荷经济关系的担忧。
今年早些时候,抖音悄然上线了一款名为“青桃”的 App,Slogan 为“看见你的热爱”,根据应用介绍可知,“青桃”是一个属于年轻人的兴趣知识视频平台,由抖音官方出品的中长视频关联版本,整体风格有些类似B站。
日前,威马汽车首席数据官梅松林转发了一份“世界各国地区拥车率排行榜”,同时,他发文表示:中国汽车普及率低于非洲国家尼日利亚,每百户家庭仅17户有车。意大利世界排名第一,每十户中九户有车。
近日,一项新的研究发现,维生素 C 和 E 等抗氧化剂会激活一种机制,刺激癌症肿瘤中新血管的生长,帮助它们生长和扩散。
据媒体援引消息人士报道,苹果公司正在测试使用3D打印技术来生产其智能手表的钢质底盘。消息传出后,3D系统一度大涨超10%,不过截至周三收盘,该股涨幅回落至2%以内。
9月2日,坐拥千万粉丝的网红主播“秀才”账号被封禁,在社交媒体平台上引发热议。平台相关负责人表示,“秀才”账号违反平台相关规定,已封禁。据知情人士透露,秀才近期被举报存在违法行为,这可能是他被封禁的部分原因。据悉,“秀才”年龄39岁,是安徽省亳州市蒙城县人,抖音网红,粉丝数量超1200万。他曾被称为“中老年...
9月3日消息,亚马逊的一些股东,包括持有该公司股票的一家养老基金,日前对亚马逊、其创始人贝索斯和其董事会提起诉讼,指控他们在为 Project Kuiper 卫星星座项目购买发射服务时“违反了信义义务”。
据消息,为推广自家应用,苹果现推出了一个名为“Apps by Apple”的网站,展示了苹果为旗下产品(如 iPhone、iPad、Apple Watch、Mac 和 Apple TV)开发的各种应用程序。
特斯拉本周在美国大幅下调Model S和X售价,引发了该公司一些最坚定支持者的不满。知名特斯拉多头、未来基金(Future Fund)管理合伙人加里·布莱克发帖称,降价是一种“短期麻醉剂”,会让潜在客户等待进一步降价。
据外媒9月2日报道,荷兰半导体设备制造商阿斯麦称,尽管荷兰政府颁布的半导体设备出口管制新规9月正式生效,但该公司已获得在2023年底以前向中国运送受限制芯片制造机器的许可。
近日,根据美国证券交易委员会的文件显示,苹果卫星服务提供商 Globalstar 近期向马斯克旗下的 SpaceX 支付 6400 万美元(约 4.65 亿元人民币)。用于在 2023-2025 年期间,发射卫星,进一步扩展苹果 iPhone 系列的 SOS 卫星服务。
据报道,马斯克旗下社交平台𝕏(推特)日前调整了隐私政策,允许 𝕏 使用用户发布的信息来训练其人工智能(AI)模型。新的隐私政策将于 9 月 29 日生效。新政策规定,𝕏可能会使用所收集到的平台信息和公开可用的信息,来帮助训练 𝕏 的机器学习或人工智能模型。
9月2日,荣耀CEO赵明在采访中谈及华为手机回归时表示,替老同事们高兴,觉得手机行业,由于华为的回归,让竞争充满了更多的可能性和更多的魅力,对行业来说也是件好事。
《自然》30日发表的一篇论文报道了一个名为Swift的人工智能(AI)系统,该系统驾驶无人机的能力可在真实世界中一对一冠军赛里战胜人类对手。
近日,非营利组织纽约真菌学会(NYMS)发出警告,表示亚马逊为代表的电商平台上,充斥着各种AI生成的蘑菇觅食科普书籍,其中存在诸多错误。
社交媒体平台𝕏(原推特)新隐私政策提到:“在您同意的情况下,我们可能出于安全、安保和身份识别目的收集和使用您的生物识别信息。”
2023年德国柏林消费电子展上,各大企业都带来了最新的理念和产品,而高端化、本土化的中国产品正在不断吸引欧洲等国际市场的目光。
罗永浩日前在直播中吐槽苹果即将推出的 iPhone 新品,具体内容为:“以我对我‘子公司’的了解,我认为 iPhone 15 跟 iPhone 14 不会有什么区别的,除了序(列)号变了,这个‘不要脸’的东西,这个‘臭厨子’。