首页 > 新闻中心

Cube轻量虚拟化怎么做到100ms交给一个安全容器

作者:江南体育电子游戏 来源:江南体育app下载 时间:2023-07-28 17:22:37

  跟着云核算技能的开展,Serverless 凭仗其免运维、按量付费和弹性弹性等特色逐步成为热门话题。但是,通用虚拟机无法满意 Serverless 高并发创立才能、冷发动速度等需求。为此,腾讯云技能团队推出了 Cube 安全容器产品,通过对管控流程、KVM、主机 OS、VMM、虚拟机 OS 等进行全链路精简和优化,完结高功用、低开支、高密度的运转环境。Cube 还针对快照技能进行了深度优化,大幅进步发动速度,然后更好地满意 Serverless 场景的需求。

  1)单实例生命周期短, 均匀履行时刻 50ms, P95 小于 100ms

  2)并发创立才能要求高, 资源流通快, 每天近千万次的资源流通(创立 / 毁掉)

  在通用虚拟机环境下, 无法满意 Serverless 的以上特色, 底子原因是通用虚拟机的实例创立进程会触及到和装箱、 VPC、CBS、安全组等多个子体系的交互,实例创立往往需求等候数十秒的时刻, 无法满意 Serverless 对冷发动和高并发的诉求。而实例自身的创立毁掉时刻远远大于实例自身的履行时刻, 会导致许多的算力糟蹋。

  在实践的运营中,通用虚拟机架构下,为了满意 Serverless 的运营方针诉求, 一般采纳储藏资源池的计划, 也便是提早创立好一批虚拟机实例, 直接用提早创立好并已运转的虚拟机实例来满意客户高并发高资源流通的诉求。这个计划通过储藏资源池来平衡客户高并发高资源流通的需求与渠道低并发资源流通慢的对立, 但储藏资源池会给渠道带来比较大的板滞本钱以及很大的算力糟蹋。

  为了让底层根底设施愈加匹配 Serverless 的诉求, 腾讯云技能团队对管控流程、KVM、主机 OS、VMM、虚拟机 OS 进行全方位的裁剪和优化, 并针对快照技能进行了深度改善,打造了 Cube 安全容器产品。Cube 供给了高并发,高密度运转环境,使 Serverless 场景下的安全容器的交给愈加敏捷,并在有限空间内,供给高功用、低开支的处理计划。

  通用虚拟机的创立流程会触及与虚拟化,网络,存储等许多 IaaS 根底设施的交互, 这是限制通用虚拟化高并发高资源流通才能的要害瓶颈。

  Cube 在全体架构规划上彻底与 IaaS 根底设施解耦, 并把所需根底资源在主机层面进行池化办理,将整个虚拟机的创立变成一个单台物理机内能够闭环的操作。

  虚拟机交给管控流程的详细完结上, Cube 在主机初始化时与 IaaS 根底设施进行交互,获取一切必要的 根底资源,如网络资源(VPC IP)与存储资源(CBS), 并在内部闭环办理网络和存储资源的分配。

  网络上, Cube 在 VPC 网络之上, 完结了一个单机维度的 Cube 网络, 这个网络能够通过 CubeGW 完结和 VPC 网络的互通;

  存储上, Cube 将本地盘和 CBS 云盘资源进行了切开办理,将只读存储通过 virtiofs 的方法露出给虚拟机, 可写存储结合写时仿制的技能以 virtio-blk 的方法露出给虚拟机。

  通过上述存储,网络等虚拟机配套资源悉数在主机范围内的闭环办理,从管控流程上彻底消除了外部根底设施的影响要素。

  KVM 作为虚拟化的底座,在通用虚拟机场景中现已通过饱经沧桑,但是在高并发场景下却露出出来了许多功用和时延相关问题,典型的如高并发操作下 lock contention 导致的时延。

  通过对 KVM 中 irqfd 注册流程剖析,腾讯云技能团队针对非直通设备场景彻底消除了这部分时延影响,而针对更为扎手的直通设备场景,活跃在社区评论终极处理计划。

  别的一个典型时延问题是,nx-lpage-recovery 内核线程创立会导致创立虚拟机引进 100ms 的颤动,是由于高并发场景下这个内核线程发动引进了同步等候,扩大了虚拟机创立的时延。

  通过查询,腾讯云技能团队发现 nx-lpage 是 KVM 为了缓解 ITLB multihit CPU 缝隙的软件缓解计划,而 nx-lpage-recovery 内核线程则是针对这组缓解计划形成功用丢失的补偿机制。且不说这个补偿机制的效果,CUBE 产品布置环境中并不会触发这个问题,由于缝隙触发依赖于特定 CPU 和 KVM 运用大页。看起来很一般的一个内核线程发动,在场景中却引进这么大副效果,对 KVM 的优化需求深化到每一个细节。

  社区近些年鼓起根据 Rust 的轻量级 VMM,比较 QEMU 简化了设备模型,更小的内存和运转开支,腾讯云技能团队根据 cloud-hypervisor 构建 VMM 组件(cube-hypervisor),是由于其在坚持了轻量化的一起,有较为齐备的现代 VMM 具有的根底功用,如热插拔 /TDX 等。

  虚拟机镜像通过 pmem 设备方法在主机层面在一切虚拟机之间进行只读同享, 通过 DAX 方法直接拜访主机内存。

  运用更为灵敏的 virtiofs 协议为容器供给 rootfs 目录,为了到达极致的功用咱们对 virtiofs 协议的服务端进程 (virtiofsd) 进行了 native 改造,改造后的 virtiofsd 从独立进程变成了 VMM 的一组线程,处理上优化了 vhost 逻辑,能够像一般 virtio 设备相同直接操作后端文件体系。

  容器的可写块存储通过 virtio-blk 露出给虚拟机,运用空泛文件削减实践磁盘运用量的一起, 通过 reflink 和写时仿制技能完结磁盘块的按需运用。

  在技能演进方面,腾讯云技能团队对虚拟机冷发动做了多项优化,如通过并发内核加载加快虚拟机发动,以及调优发动进程中的堵塞行为,但只是通过调优只能将安全容器交给时刻缩减到 200ms 左右,无法到达咱们对发动时延的极致要求,而咱们场景中,不同虚拟机的内核和 rootfs 都是共同的,针对这个高度重复的动作,是否有方法做到一次性优化么?答案是有的,这儿,腾讯云技能团队挑选了虚拟机快照技能。

  快照技能原本是 VMM 供给的对虚拟机快照的保存和康复,快照保存时,将虚拟机暂停下来,将虚拟机一切状况保存到快照文件中,快照康复时,根据快照文件康复虚拟机,康复完结之后继续虚拟机运转,快照技能语义上支撑 1 to 1 的虚拟机状况康复,且对虚拟机后端设备有共同性要求(磁盘 / 网卡)。

  首要,需求对快照技能进行 1 to n 的虚拟机状况康复改造,完结虚拟机内部状况和后端设备无关,并能够将保存的旧设备状况康复到新设备。实践完结中咱们通过替换后端设备,以及根据快照中设备状况对设备进行从头初始化,完结了快照康复进程中后端设备无感替换。

  通过对快照技能继续优化,咱们终究做到将安全容器的交给时刻从 200ms+ 下降到 100ms 以内,一起为单个虚拟机削减了 20MB+ 内存(1000 个虚拟机布置密度下节约 20G 内存)。

  Cube 在网络方面更是结合 ebpf 完结快速转发途径,现已将网络层面的转发开支降到了最低,但是高并发测验总是能够发现彩蛋,这一次是 TAP 设备,咱们发现虚拟机在 TAP 设备初始化上耗时 50ms 以上,MAX 乃至超越 100ms。

  虚拟机创立进程需求对 TAP 设备做初始化,但是这个高并发的操作在主机内核触发了大局锁抵触,形成许多时延。很显然处理这个问题需求深化主机内核 TAP 做深度优化,但是有没有跟简略的方法呢,是否能够防止重复的 TAP 设备初始化动作呢?腾讯云技能团队对 TAP 网络计划进行了从头规划,将 TAP 设备的初始化放在了 TAP 池化初始化中,而虚拟机的网络初始化只需求从池子中请求一个对应的资源就能够了,通过对计划的不断调优,成功将虚拟机发动进程中 TAP 设备初始化下降到了 1ms 等级。

  高并发场景下, 高频的创立毁掉会带来主机内核大局资源的锁竞赛, 导致功用的动摇和不行预期性。

  Cube 为了确保高并发场景下冷发动时延的可预期性, 通过以下技能手法来优化

  在进程的创立,毁掉进程中也需求大局的 task 锁来确保要害途径的串行操作, 为了确保进程创立的时延有确保,cube 技能团队将进程毁掉的优先级调低, 并引进排队机制串行履行进程的毁掉操作。一起通过进程兼并等手法削减虚拟机创立需求创立的进程数目。

  通用虚拟机的规划方针是供给一个通用的核算环境,要求虚拟机 OS(内核与操作体系)的功用满意丰厚与灵敏,但在 Serverless 场景中,过多的功用反而变成了一种担负,献身了极速的发动速度,也额定耗费了太多的资源。Cube 为了满意 Serverless 极致的用户体会,对虚拟机 OS 的一切功用模块进行了深度的裁剪和优化。

  裁剪掉一切不需求软件包,只保存极少数要害库和指令,镜像巨细控制在 128MB 以下。

  运用 Cube-agent 作为 init 替换巨大的 systemd 体系,体系发动时只进行少数有必要的初始化操作。

  通过裁剪优化,1C128MB 的标准下,比较通用虚拟机秒级发动速度,Cube 虚拟机发动时刻降至 80ms 以下,发动时内存耗费也降至 20MB 左右。

  现在在 FaaS 实践事务场景下 Cube 交给安全容器的时延控制在 100 毫秒以下的水平。

  值得一提的是,腾讯云技能团队在优化 Cube 在高密高并发场景下功用的一起也发现并修正了其他开源组件长期以来没有被发现的问题。

  这是一个 go net epoll 模型的严重缺点,已提交社区并推进修正。

  设备初始化时 Breadth First Traversal 设备树完结不妥,存在剩余的内存复制开支。

  现在为止,Cube 对底层支撑功用以及各相关组件进行了许多深化的剖析,并有针对性进行优化, 真实的做到了用户按量付费,渠道按需出产,而且能够满意用户的功用诉求。

  技能的路途没有止境,后续跟着技能计划的不断创新和迭代,腾讯云技能团队将竭尽全力地继续进步 Cube 的底层功用,与此一起,在用户体会,易用性等方面做更多的探究和增强。