首先我做介绍一下我是来自华欧云的冯少宝然后我这边分享一个容器运行室叫Quark然后它是也是一个就是所谓叫安全容器的一个运行室然后我们在这个给这个Solace场景做了很多性能上的一些优化等一下我们可以来一起看一看大家一起讨论一下首先我介绍一下背景首先我们说容器本身就是说其实是给我们整个这个应用的运萎是带来了一场革命就是从13年Docker开始我们看到容器它是一个就是可以一次打包然后到时候可以跑这么一个很方便的一个特性然后就整个容器开始变得流行然后呢实际上它给这个整个我们说可以说是给整个这个运用的运萎带来一次一个现代化的革命吧它也是现在这个Caunative这个技术的一个基石其实我们现在看到一些这个监控或者日治啊高警这样一些平台其实基本上都是在基于容器技术在网上去构建的然后我们说其实容器这个其实这算十年来的一个发展的历史吧其实也是一个从一个单一的某一个某一项技术变成了一个技术标准的一个过程首先是从这个一三年Docker开始容器开始流行以后开始出现一些很多的技术标准出来首先我们说从这个Cognites开源到到现在其实Cognites已经形成已经成了一个容器编排的一个一个事实上的一个标准然后包括它自己里面下面定义的一些像CRICNICSR也是容器运行史啊存储啊网络啊这样一些这样一些技术标准基本上是一些事实上的标准吧然后在底层这块OCI它定义了一项像容器进项的格式容器进项的一个标准然后OCI它也有定义Runtime的标准然后包括它Docker原来的那套实现也作为Runtime的一个标准的实现也就是我们这里可能主要就关注它Runtime这边也就是说从OCI Runtime定义开始就是它的这个技术标准形成以后实际上就是容器运行史本身它其实也从一个单一的就是说原来我们认为就是容器就是一套C Group加Name Space的隔离的一套进程到后来变成了一个技术的标准那么有这个标准我们其实很多的这种隔离的技术其实也都可以作为一个容器的运行史的一个实现那么后来就会出现了像Cata它这种基于这种虚拟化实现的这个容器运行史还有像GWISE这种就是在用态区做这个系统调用的蓝节这样的一个运行史然后包括现在最新的像一些G-Web family的这些容器运行史那么我们刚才说我们这个QUAC是一个安全容器的一个运行史那么我们就介绍一下所谓的这个安全容器那么有这个安全容器我们就有一个所谓这个不安全容器不安全容器其实就是我们原来之前说的那套容器的一个实现因为它的本质实际上就是基于Linux的一些内核本身提供的一些隔离技术隔离出来的一组进程就是主要是C Group加Name Space做的这些隔离隔离出来的一组进程它本质上还是运行在一个共享的内核上面的所以说这个本身内核它的一些漏洞或者说是容器本身的运行史的一些实现都会带来很多的容器逃逸的一些风险这个本身在这些年我们也有看到会有很多这种CV的这种漏洞另外本身因为它的供内核也有一个问题就是说内核本身的一些资源比如说像内核的一些分配处的内存或者说像IP Tables规则它产生的一些内存的消耗或者说还有一些像C Group这样的一些有一些内存的消耗其实本身它这些东西都没有被当前这些容器的隔离技术给隔离所以说也会带来一些资源上的一些问题这个可能在生产环境跑的时候可能大家都有感触然后我们就说安全容器安全容器它其实可以说是Cata出来以后我们提出来这么一个概念对Cata来说它可能就说安全容器就是一套基于虚拟化做的隔离的一个容器就是说它的破的就运行在一个虚拟机里面而虚拟机本身这个东西实际上是在整个供应员多租的场景下面它经过这些年检验其实可以认为相对来说是比较安全的一个隔离所以说我们其实现在供应员上跑的一些如果就是一些多租的一些容器的服务实际上都是会去基于这样一种安全容器的方式去构建的但是安全容器本身它现在像Cata这种实现它基本上是利用了现有的一些比如说Hypervisor当然它可能是有一些新的重写比如说Firecrack或者是Cloud Hypervisor去做这种重写但实际上我们说Hypervisor加Gauss-KernelGauss-Kernel本身它还是Linux内核就这套东西还是一些现有的这套东西去跑的本身Gauss-Kernel还是会有带来很大的一个性能的开销包括这个启动时间跟内存的一个开销其实都很大那么这个就是我们想做Quag的一个初衷我们Quag的设计目标主要有这三个这样的一个目标吧首先是安全然后性能另外就是说一个兼容性安全跟性能其实大家都知道其实它是一个有点像天秤两端的一个东西就是如果说你要跟安全的话你可能性能就一定的牺牲然后如果说你想要性能的话你可能就要牺牲安全性那么我们这边就是说在安全这块我们希望还是能够继续使用Gauss-Kernel的隔离但是性能这块我们会做很多的优化然后因为我们是从头构建就是我们不会用现有的Hypervisor跟Gauss-Kernel我们也从头开始写那这样一来就可以做更多的一些优化更激进的一些优化然后我们是一个Gauss-Kernel去重新写的这么一套东西它这个Kernel就是里面实现的Kernel本身它是Linux完全建容的这样应用在跑在上面它是不需要做什么修改的这个就是我们Quag的一个架构然后我们讲Quag之前我们可以看一下如果说是一个以前不管是安全容器还是说是在虚机上跑一个应用它的整个一个软件的一个层级首先在物理机上有这个我们现在基本上很多大多数情况下可能会用QM加KVM这套虚拟化的这套技术那么在这个主机上它会有一个KVMLinux内核里面会有一个KVM模块它这个主要就是做CPU内存虚拟化的其实它其实有点相当于是一些芯片的一些硬件虚拟化能力的一个驱动可以这么认为然后是在这个主机的用户态我们还会有一个比如说Cumul或者Fycracker或者是couple hypervisor这样的一些用户态的虚拟化的一个组件这个其实就是说除了这个KVM提供的虚拟化能力以外我们知道其实在一个Linux起来的时候它需要说我这个物理机我有这个主板有这个设备总线或者说有中断的处理器我这些东西那么这些东西其实都是通过像Cumul或者是像couple hypervisorFycracker这种虚拟化软件去做仿真跟模拟的然后在它是上面去运行一个Gaussian kernel然后这个一般就说就是会有一个吃一个全量的Linux kernel虽然可能在这个安定容器下面可能也会做一些裁减的优化但是这样因为Linux本身其实是说它不会说我是为了去跑在一个虚拟化上去写的所以说它包括刚才我们说的一项这种设备管理或者是物理内存管理它其实都很复杂然后它需要很多开销这块其实也是省不掉的然后是在上面再去跑用户态的进程那么这个是传统我们说跑一套在虚拟化环境去跑运用的这么一个模式那么在夸克这边我们一个核心的理念就是说我们会从头构建Kernel跟VMM那么这样一来就可以让它们去做很多的联动然后去实现一个更轻量的一个专门位容器去打造的这样一个软件层首先我们说所以说夸克它其实主要是有两个部件组成一个是叫Q kernel它就是连运行在Gas里面的Kernel然后还有一个就是hypervisor我们叫QvisorQ kernel首先我们说它是实现了一套整个Posix的系统调用它的ABI都建容的然后是它提供了一些像进程的管理它肯定是需要的然后内存管理也是有但是内存管理它比Linux它屋里内存的那套管理要简单很多因为我们很多东西它是直接是它做不了的事情就让Qvisor去做然后很多事情它就没必要在自己的里面去把它做掉然后Qvisor本身它又会利用到Hos的OS上的一些能力然后它还实现了在内部实现了一些虚拟的文件系统这个也是为了做Linux建容所必须的也不需要说为了这个东西让它现出到Hos上面来这也是它里面实现的一个东西然后另外就是一个比较大的一块就是说是基于RDMA的做了一个网络的协议站这个就是一个非常大的优化在网络这块我们避开了TCPIP协议站跟包括主机上很多网络的借口全部都屏蔽掉了然后直接通过RDMA的方式去把这个SoC的整个打通等一下我们可以详细地介绍Qvisor这边其实很简单它其实就是很轻的一个VMM它只做了CPU跟内存门的一个虚拟化其实它没有说要做一个模拟的主板或者说要做PCI总线这些都没有可能就是因为这样所以因为它们之间交互非常多所以我们Hipcore的机制我们需要做一个优化我们有一个优化过的Hipcore的机制然后我们整个QY字它就只为了去运行容器而设计就说它不会说我们是要跑一个完整的一个虚拟机没有这个东西那么下面我们就分几个东西来介绍一下我们的一些优化的一个措施首先我们说Hipcore因为我们刚才说Q kernel跟Qy字本身它之间的交互非常多那么我们就需要有一个更高效的一个Hipcore的机制那么传统的Hipcore它实际上是一个比如说Gazel它执行像什么HOD或者说一些什么IO或者是MIMO这样的一些操作它可以触发VMX的就到这个主机上面来那么这个时候它就要发生这个Context Switch那这其实开交是非常大的它这种情况其实很容易就形成整个系统的一个瓶颈包括GY字其实它比如说网络或者是存储IO它可能坐上去也是很大程度上也是这个方面的原因吧然后我们这边也有一个测试就是说Redis这里如果做一个Redis PIN它会产生像Redis Redis PIN的这种Syscore然后如果说级于Hipcore来做的话它是一个11微秒然后一个实验然后它的吞吐能做到90K的样子然后我们这边有一个优化过的Qcore那这个机制其实出来也很简单就是如果说知道这个虚拟化对虚拟化比较熟的这个制造像VodaiO那套机制其实就是做一个共享的堆裂然后两边都去一边取一边去一边去塞一边去取然后去让主机上去做它应该做的事情那么它的原理其实也是这样就是说我们会给QYS跟Qcore之间定义一个共享的一个堆裂它内存是共享的然后VCPU如果执行到某一个东西它需要去发起一个Hipcore的时候它就会往这个堆裂里面去塞一个任务然后这时候VCPU就可以去执行其他的东西了这时候它不会说像原来Hipcore它肯定需要做一些等待的动作它就会需要然后主机上会有一个或者说一个或者多个反正这种Qcore的现成它会被EVNFD触发以后会去从这个堆裂里面去拿到这个任务然后去执行执行完成以后它会把这个结果再通知到这个科诺里面然后原来等待Hipcore的那个现成就会被换行然后继续往下去执行这个优化其实可以看到我们比原来Hipcore的这个机制其实提升了一倍多的一个性能就是在这个通过Qcore的方式去做的话它的实验降得了微妙然后吞吐也提升了一倍多然后另外一个优化就是在IO这块我们也是用了Linux最新的IO-Uring的这个技术IO-Uring其实就是说我们让用户台可以直接去把IO的任务直接扔到Cost的内核里面去执行那么对于Quag来说它把IO-Uring的对列直接映射到Qcore的里面如果Qcore如果要发生一些IO的操作的话它就直接可以把任务直接丢到IO-Uring的对列里面然后这样就bypass掉了VMM的一个逻辑所以它这个IO也可以做到一个很好的提升然后刚才说的是Qcore跟存储IO的一个事情然后我们说网络这块其实是一个比较大的优化网络我们就是一套设计就是在当我们设计的一个原则首先我们在对应用层我们会还是一个标准的socket API然后应用层代码不需要做任何的修改就可以去调用但是它中间的整个TCI-P协议站被我们用RDM的方式去替换掉了然后实现了一个透明的网络的一个转发那么它要实现这个东西它主要有这样一些部件首先是运行在这个Qcore里面它会有一个叫TSOR client就是它这个东西的缩写然后在主机上会有一个进程去叫TSOR service它会去做RDM的一些连接或者数据的传输的一个操作然后本身这个service跟Qcore之间它会有共产内存然后共产内存里面主要包含就是一个是叫submission queue跟completion queue去做一个实践的一个通知这样一些机制然后还有一个ring buffer去做数据的一个传输那么我们可以看一下就是在这样一个模式下面我们是怎么样去做连接跟数据传输的连接这块我们从这个比如容器里面它发起了一个connected连接这个就会到这个guest kernel里面会是一个connected系统调用然后这个会被这个TSOR client拦截掉然后把这个任务塞到这个submission queue里面然后主机上的这个TSOR service它就会从submission queue里面泡不出来以后去看首先看这个连接它是要连到哪个容器上面连到那个容器上面它就有一套路由的机制我们知道这个容器它是跑在哪个节点上面然后我们就会去连接到那个节点上去中国RDM的方式跟那个节点建立一个RDM的连接然后到连接这边它到对端的这个TSOR service它会收到这个连接的请求把它塞到completion queue里面然后到这个服务端它的这个TSOR client拿到这个connected这个请求就会返回到这个用户台用户台这时候可能一般服务端它肯定是在accept的这里等在这个地方要等连接那么它就会收到一条连接那么整个连接过程就建立起来那么数据的传输呢也是我们说从这个client这边开始它会发起一个网接连接FD去做Ride的一个操作那么这个时候就会出发这个Ride的系统调用那么TSOR client呢它就会把这个数据塞到这个ringbuff里面然后通知到这个主机上的这个TSOR service这个进程那TSOR service这时候呢它就直接把这个数据通过RDM直接写到那个对端然后对端那边收到以后呢就通知到这个就是qkno里面的这个TSOR client然后它把这个数据从ringbuff拿出来以后返回到这个服务端的这个进程它这时候肯定一般比如说它这个时候会再做一个等待就是等待一个客户端要发来的一个请求那么它就可以read出来这个数据那么整个这个连接的过程就是这个样子等一下我们会看一下就是我们这样这样一套接RDM的这个网络它带来的一个效果我们另外就是说一个容器的这个启动时间我们也是做了一个做了一个特殊的一个优化我们提出了一个新的一个模式叫hypnotion我们知道就是在这个现在这个services这种平台里面如果说你要启动一个不是你要去那个一般有这种就是要去服务一个请求的话一般我们有这样两种模式比如说一个叫code start那就是我请求来了以后我再去现场拉一个这个容器起来然后再让这个容器去服务这个请求那么这个过程肯定它这个容器启动时间就会很慢它就会导致这个初始的这个请求时间非常的高那另外一种就是我们叫warm start的这种过程就是说是一个我们会保留一些idol的实力放在那个地方然后如果有请求过来就先到idol实力里面去那这个过程就是会导致一个问题就是说我如果比如说一些很很那个什么很那个就是没有请求的这种很冷的情况下它还需要保留一些实力在那个地方那其实对内存是一个浪费那么我们提出这个hypnotionhypnotion其实叫冬眠其实它这个就这个名字起的比较形象就是我们说一个正常的睡眠可能你只是你只是那个闭上眼睛在睡觉但是如果一个冷血冬物的冬眠的话它实际上是把整个身体的这个机能都降到很低那对于我们这个quark来说它做这个hypnotion其实就是我要让这个不光是让这个vcpu它停在那个地方也会把它那个就是应用的内存全部都swapped out出来其实本身这个机制也很简单就是它其实就用到这个limx内存的swapped out的一个能力就是它的这个状态变化变化是这样的就是首先我们比如拉起了一个容器然后如果这个容器它需要它现在这时候已经没有什么那个请求了它需要进入一个冬眠的状态我们就会poss所有的这个vcpu然后把这个内存全部都担不到这个就是机器上的一个文件上面去然后如果说这时候如果又有请求过来的它实际上请求可以直接发到这个容器里面然后通过容器本身它的这个缺业直接去加载内存然后去服务这个这个应用服务这个这个请求当然这个中间如果说如果它的这个内存量比较大的话可能会有一时间还是会有时间比较高的情况所以我们也会做一些这个预取的一些优化然后为了这个为了这么一个机制呢我们重新设计做了一些重新的设计比如说这个内存分配器我们刚才说到就是我们这个Gaussian里面的内存呢我们是有自己的内存分配器那么但是它这个在原来比如说像Ballet Locate的这种方式这种内存分配器呢它有一个问题就是说内存块里面它每个内存块里面它都会存的这个就原数据的信息那这样一来呢就然后它通过链表去把这个链起来但这样一来就会有问题就是如果我把这个内存块直接全部担不下去的话那么它的这个原数据的信息就丢失了所以说我们就另外设计了一个叫Bitmap的一个内存分配器那么这个其实就是我们会把原数据信息呢就存在前面一个头或者几个头里面这个内存块里面然后其他内存块呢它可以直接去担不下去那这样一来就解决了那个内存就是分配器的原数据的一个保存的一个信息一个问题然后另外就是说它这个刚才我们说那个Page 4的那个机制我们如果说就是在产生缺业的情况下面我们会看看是不是需要它从这个就是机器上的文件去直接Swap in进来这个内存另外最后一个就是一个优化呢就是跟我们叫Questa这个一个一个框架的一个结合我们先介绍一下Questa这个这个组件Questa我们是我们新进开源出去的一个组件它是基于可能D它最新的Sendbox API去设计的我们一个理念就是说我们希望就是对于这种Sendbox这种进程就是一个最好是一个进程或者一个现成它去提供一个Sendbox就行了只要它能够去提供一个给可能D调用的一个Task API那它就是一个Sendbox那么我们另外也会有一个比如说是一个单独的进程或者说是也可以是运行在可能D里面的Pugin去做这个Sendbox管理就可以了然后这是一个就是Questa的一个框架然后我们基于这个Questa框架把Quagg机身进来那么Quagg它主要就是实现这两个组件首先是一个运行在一个节点上的一个叫QuaggSendboxer这个东西就是负责整个Questa或者说叫Quagg它的一些生命周期的管理然后我们在Quagg内部我们让QuaggSendboxer本身它起来以后就直接实现一套Task API然后给可能D去调用相比原来就是它会另外有一个SIM进程然后去做这样一个转发我们把这个东西给去掉了然后QuaggSendboxer它是跑在一个Port的Name Space里面它可能像网络它肯定是有一个单独的Name Space它可能还会有一些像PID或者说Mount Name Space都是独立的这样一来就会有问题就说如果是基于Unicy Domain Socket去连接的话怎么样去处理这个问题其实我们就是一开始在外面去打开FD然后把它再起来的时候让传给它 让它去能够坚定到FD外面可以通过地址或者说路径去访问这个其实对于像刚才我们说Habitation的模式下面其实就非常有用因为我们本身已经通过Habitation已经把Port的内存已经降得很低了如果这个时候如果因为有这么一个SIM进程在然后把这个内存又给翻倍了其实就是很做了很多徒劳的事情但是如果有把这个SIM去掉以后我们把效率就提得更高那么接下来就是一些性能测试首先是单独的网络测试用IProf做的一个测试我们看到其实在Message的size比较高的形容下面它的吞图是明显比RAMC跟Cata都要好因为它这套级RDMA的技术它的吞图受到Message Size的约束会更小然后是实验实验也是RDMA的传输它的实验可以做得非常的低应该是10微秒以下但其他的即使是像RAMC它这套传统的网络的话它也需要30微秒的一个实验然后是我们说这个启动Habitation启动方式一般就是说冷启动的话可能整个你给KBS下发一个迫子下去一秒钟的时间是肯定效的那对于热启动这里可能不同的应用它的服务的实验是不一样的那我们如果说把它Habitat完了以后再让它去服务这个请求的话它的实验我们可以看到就是它的身高就不会像冷启动那么明显特别像有一些可能本身就已经稍微比如在10毫秒级别的这种应用来说它可能其实影响就微乎其微了然后内存这块我们就是如果把一个容器进入在Habitat模式以后它的内存基本上至少降到10分之1一个水平然后它启动以后其实因为我们说它是通过缺业器加载内存的所以它有很多的内存可能也因为它本身可能就是触碍化时候去用的所以很多内存其实可能也不太会加载进来了然后我们有一些实际应用的一些测试我们看到Redis的性能首先看实验这块也明显就是因为其实这可能也最大的时候就是通过网络的优化达到了一个效果就是它这个网络的实验在这个不管set a guide或者increasement这种操作它相对比runcy比kana都有好非常多然后是吞吐这块就是这个RPS它也是比runcy kana要高非常多然后Redis然后是它这个请求的数量如果是更多的话它的这个优化效果其实会更明显然后是这个Node.js的一个测试我们看到它也是就是实验像这个Quark它可以做到300个微秒的一个实验但是对于kana跟runcy它有600甚至网上如果说message的这个size比较高的情况下它还会更高然后是吞吐也是就是RPS在这个Quark情况上面其实也是基本上达到一个翻倍的一个优化效果然后是edcd这块可以看到就是它的这个吞吐也是比kana跟runcy要好很多那上面就是我们分享的一些内容然后Quark这本身现在它是现在包括Quark規杂的都是一个开源的一个状态然后其实Quark这个东西因为它东西它是相当于有比较大的一个后发的优势它是从新开始构建的所以它在学术界其实还是挺受关注的像德国的一些大学研究所还有美国那个华盛顿大学它也都是基于它想去做一些比如说像紧密计算或者是GPU的一些事情那么有一些论文然后看看大家还有没有什么问题可以交流一下你好就是我听下来感觉是就是它跟kata是一个竞标的一个东西但是它可能把那个底下虚拟化还有上面那个kana里面的一些东西就感觉好像做了一个魔改一样引入RDMA然后可能网络性能上面就是非常突出的优势是不是感觉好像就是在kata或者是竞标的技术上我们做了一个全新打造了这样的一个东西对 可以这么说因为kata它不管怎么说它还是想附用原来那套技术站的东西但是我们这边跨个它把这个东西重新开始写重新开始写就有一些好处就是我这个kernel我就知道我是运行在Qviz里面的那么它不像Linux kernel它说我是运行在物理机上面我们要做这个设备的初始化要做内存的初始化管理业标的初始化这些管理这些东西都没有了然后像这个Qviz因为我不是为了跑了一个通用操作系统去设计的所以我就不需要说我还要去给它搞一个设备总线搞一个主板搞进去然后也不要BIOS这些东西都不需要了所以它整个这个东西就可以做得更轻就是为了容器专门打造这么一个技术站这个Quark kernel和Vizor这一块都是开源的对 这两个都是在Quark里面的都是包含在Quark里面的还就是前面提到那个性能那一块它比卡塔也优势 我能理解它比Runsea这个其实可能主要得益于它网络上的优化它这个主要是ADM的这个新战替代内核原的这一块的对其实主要是它那个因为很多情况下它的网络是制约它这个像吞吐啊 像实验的一个非常重要的一个因素然后它那个Quark kernel这一块就说我可能每一个port都需要有这样的一个kernel那它的那个因为原来我们觉得卡塔可能引入隔离性之外它那个资源消耗也其实蛮大的对这一块是不是我的资源消耗跟那个就是原生的卡塔的地或者是都相比是一个什么量级就没看到一个比较这个其实这个其实这个论文里面这个后面这个论文它其实一个Quark的一个综数的一个论文它里面讲到就是这个就是内存开销这个东西但我没贴上来它其实可能跟不知道GYZ因为了解就是它跟GYZ差不多它是基本上可以控制10到以下的一个消耗那挺好好的好谢谢我相信这个Quark的它初中跟AWS它的那个Firecrackers类似的就要构造一个Micro VM对吧然后我如果理解正确的话它的安全性是来自两个方面一个是Rust鞋然后第二个是类似GYZ这样我减少最后次的依赖然后性能来自也是两个方面我们把Hypercore变成像IoE ring这样的一个模式第二个是有RDMH加速网络是的我其实我关注一点就是我们就IoE ring挺好的IoE ring但是Mechan Linux IoE ring最近爆出很多CVE我们学习它的话因为我们是做安全的嘛我发现也有可能引入很多的这种攻击面这个怎么办的对这个确实如果说我们只能就其他就是这个内核把这个IoE ring的安全性往上去做提升如果不行的话我们本身这里它这个其实我们看到GYZ它的做法这里没有这个GYZ它的做法是另外搞了一个叫Golfer然后通过9P去做这个通过9P去做这个存储的一个IoE那这样其实它GYZ的IoE实在是就很难往上做所以我们想用IoE ring这样的东西但是如果不行我们就只能在通过HiP call的方式往下去做也行我们本身在这里面的IoE ring本身下来它是比如FD这个东西本身是一个硬射关系就有点像WebAssembly那种就是说capability security那种方式就是我只有打开的FD我才能够去打开它下面的那些文件就是打开这块我们会在QYZ它是Qcores下来的这不会是IoE ring下来的Qcores这里就下来以后它就是说是会去做全线的一个检查当然这个可能IoE ring可能就有其他的一些性能漏洞这个可能就是很难避免的对好 谢谢你要问一下问题QCurnal是完全重写的吗对那怎么保证Posix金融性呢因为GYZ其实一直被Posix金融性的问题困扰你们重写一个Curnal它这个金融性怎么保证呢我们只能说就是把现在的这些当前Linux它实现的这些系统调用都移过来去实现然后中间可能还是会有一些会有一些现状性的问题但是我们只能说是尽量的保证包括我们刚才说像一些讯你化的一个讯你系统文件这个也是为了去做Linux这个金融性去另外要加进来的一些特性还有一个问题刚才说了网络那因为你是GRDNB那它那个就是Quasa的那个container怎么和普通的container学通信呢它这个其实我这里面可能没有去就没有去讲到它其实其实它这个东西它另外另外它这有一个TESA Service它也有一个叫Gateway的一个组件它会去通就是普通的TCP协议站的那个东西它会通过它来再转到这个跨个的人如果是另一行路径的话它和普通的TCP性能之间有差异吗这个我们倒没有去测那块的东西但是至少从它Gateway到这个到这个容器本身这一套路径比如说像一些普通的ELB那种方式可能也是要好一点的然后那个TSOR那你们会做Pulling吗对你说这里会不会做Pulling是吧对它这里除了说是EVNFD的那个出发以外呢就是如果它还有那个请求的话它就会继续去Pull这个请求的不好意思 我请教一下我看前面那个价格图那里就是KVM还在就是现在上面价格图那个就是Quarkweather和KVMTallion这个是怎么分工的这个其实就其实它就是用了这个KVM因为KVM它本身就提供了一些IoCTL的操作一些文件的一些接口操作然后它本身因为这个东西就是CPU跟内存的训讯化的东西是放在内核里面的然后它提供的这些文件接口通过其实Q2主要就调了一下它就跟这个Quark或者FiveCork要用到KVM用一样的现在是个Rapper是吧对 就是用舞台怎么样去用那其实另外比如说从如果比如说容器要支撑一些就是下面硬件卸载的能力的话那还是相当于沿用KVM的东西然后再通过这个Quarkweather在就是中间中介一下是吧是对 就是如果是硬件卸载的话因为本身它我们是Qi在这边它是运行在这个主机上的进程它是能看到主机上的东西的只要你给它比如说放在它NameSpace里面能可见的话其实它都是能看见的那其他的事情很多它不会说像普通的像QQM那种方式它通过一个比如VFIO直通或者这种方式去通到许记里面去它还是会比如说通过QQor或者说通过IoCring然后来做这个设备的操作好的 好的 理解谢谢好的 那今天就到这里谢谢大家