大家久等了我用我这个吧没事大家久等了我今天的topic是这样的我今天的幻冬片主要是全英文的English slidesBut I will present it mostly in ChineseAnd so I understand about thatBecause most of the audience are from China但幻冬片本身是英文的然后我想做技术人呆应该都能看得懂还没问题然后我就长话短说我来介绍首先介绍要我自己我是2015年的时候我们创建了Hyperconditioner和软微项目然后2017年的时候这个项目和ClearConditioners一起我们去announcedKataConditioner的项目所以我们是这个项目的开始的发起方法当年我们讲这个时候你看中间那个人说这是在上一届submit的时候confirm的时候来讲到我们当年的announced这个项目的时候那个场景然后当你有一天放飞自己然后去做一些什么事情的时候你一定会被别人拍照拍下来然后再被别人反复拿出来晒的所以我把这张照片再晒一遍这也给大家一个教训自己做事情的时候小心一点人家做天灾看2019年的时候我们整个团队加入了蚂蚁金服所以我们现在是蚂蚁金服的一个部分然后我们现在做做蚂蚁金服的就是clonative的infra部分然后我们也和阿里云同事一起在密切的合作着所以我们也算是把不仅蚂蚁金服和阿里云也拉到我们Kata的社区里面来做工作整个这幻动片里会有这么几个部分第一个是简单介绍KataConditioners然后这个topic是我讲这么多年以来这个心里面的一个痛点就是每次都得讲一下我希望我这次讲完之后下次再开什么会的时候一提KataConditioners就不用再讲了然后后面我会介绍一下我们在蚂蚁金服的一些工作然后最后我再讲一些未来的一些KataConditioners的眼镜的计划然后最后我会给一些像我刚才说的是给其他的topic打一个广告然后首先呢当我们谈到容器的时候我们一般情况下就会想到所谓的C Groups和Names Bases这是我们大家讲到这个在我们大家讲到容器的时候一定会想到的这些东西因为大家现在讲Rensia什么的大概都是这个套路但是我们其实在讲我们说我们在起容器的时候大家讨论的更多实际上是image对吧你想想是不是就是说你把我那个NX的容器骑起来把我那个我也不知道反正大家各自都有各自的容器但是大家想起的时候其实都是起的image其实你并不关心它到底是不是Rensia来运行的对吧Kata也是一样的对吧所以我们在讲容器的时候其实经常会讲到容器不太安全对吧你想到不容器的时候大家想要用什么东西把它包起来然后防卫一下因为容器本身不太隔离为什么不太隔离呢就因为这边是吧共享kernel嘛大家都跑在同一个kernel上面自然就想到它不太安全是吧共享kernel一个kernel大概300多个系统调用每一个都有bug可能性然后一旦出bug之后再被串起来那就是出现攻击了这就是为什么我们会创建这个Kata Continence这个项目毫无用我们就是为了隔离那我们是一个我们是一个这样一个项目它本身是要做最早除了要做一个安全的一个容器的Runtime运行时那首先它我们是用这个清亮级的虚拟化的技术来做的这样我们达到了和传统的云上面的虚拟一样的安全性然后同时但是我们让它运行起来它是一个容器的Runtime所以它运行起来实际上和容器是一样的牛软C还是用Kata Continence都一样的所以在这一代的话大家可以用Covernance的Runtime Class来控制让Katindee或者Crile起不同的容器起不同的Runtime起的容器这个是对用户来说是基本是无感的说基本是因为如果你要想用这一些特权的容器想用这个容器去控制这个这个House上面那一种比如起一些Demon Size什么的大概可能还会有区别但大部分的Application是没有什么太大区别的所以我们是使用的Waterization Technology就底层是个Waterization的所以我们是每一个容器是跑在不同的就每一个炮的炮3box是跑在不同的Colonel上的所以我们是有一个另外一层的防护的然后简单的历史我刚才在讲介绍我自己的时候也大概提到了然后大概我们是在2017年12月份的时候去Announce的大概是在2017年11月份的Cinni Summit后面在奥斯汀就是库博康前面我们Announce的然后到18年5月份的文康尔的Summit上面我们去Announce的1.0的版本然后在19年的就今年上半年的Denver Summit之前我们被这个基金会来Confirm成为了Foundation的第二个顶级项目前一个顶级项目叫OpenStack大家都知道吧然后第二个就是Cata Continence然后在今年的10月份的时候我们去Announce的去Release的1.9版本1.9以及1.10的Alpha然后为什么highlight一下呢就是说在1.10里面我们开始引入一些我们对未来的一些想法然后在未来的时候我们会应该说我们从这届PDG开始我们就开始要开始讨论2.0的肉脈然后从Ginald Project的介绍之后我就进入到我们整个这个项目里面我们自己的就是我们自己这个团队我们会把我们这个项目和我们的Financial的我们是做Financial Technology和Service的一个公司结合在一起我们公司觉得Security是我们的Financial Service最重要的特质所以我们在无时无处的不会把Security给强调出来因为没有Security就没有信任没有信任就没有真正的金融的服务我们在做整个这个工作里面这后面就是我们整个的工作然后第一个部分就是提升这个这个Performance就Io Performance这个部分实际上是我们和社区一起来做的然后包括Red Hat贡献的Wartile FS还有我们的哥尔米奇的阿里云的团队也做了很多的工作在这上面那我们在现在的版本里面来看的话实际上Wartile FS是从1.7开始去做supportWartile FS本身应该说是一个改进掉了改掉了原来的9P FS大家知道我们在做这种容器的时候经常会把一个文件系统的目录从外面硬设到里面那在传统的时候如果是对于转C的容器来说做一个band mount就可以了在一个Current之下但是在跨越虚极的时候相当于你要打透虚极的边界把文件系统送进去你要想的第一件事情就是这件事情是不是会很大的影响效率第二件事情就是这件事情是不是安全9P非常的遗憾就是早年间从2016年开始我们的团队就是Hyper到SH就在提供容器云的服务我们一直是把9P这个部分严格调的原因就是因为第一是9P本身它不太Pausex兼容Pausex云的文件云是非常复杂的比如说一些复杂的像Trunkhead之类的云好像有Trunkhead在9P的支持上面是有问题的所以你用它来跑一些基本的操作比如说一些APT然后YAM之类的操作都会失败然后你需要做一些当然那边做的那个叫彭涛的同学他做了很多fix然后做一个fix然后把这个东西workaround过去了原来我们最早的时候把9P把Nilad上游的9P拿过来跑那个基本的Linux的FileSystemTest大概可能有十几个case不过后来彭涛修了一下就把YAM什么APT都修好了之后大概有30多个不过了吧就是不过得更多一些但是大的流程过得都过去了所以你就知道为什么我们从做产品的角度来说我们不想用9P了是不是然后另外一方面性能的也确实是比较弱一些然后后来我们就这个想法就是说引入一个更加更加native的最近对native这个则很流行原生的就是支持本级的这种虚拟化的这种文件系统的共享的方式这个方法是Red Hat的同学首先提出来的然后它实际上是基于了WortyelWortyel的手段大家知道现在不知道大家有多少人去做虚拟化方向如果做虚拟化方向知道现在这个趋势虚拟化趋势就是Wortyel everything什么事情呢这个想要在里外面打一条通道就从Wortyel走然后这个文件系统也是要做这个Wortyel的包括了这个WorthyelWorthyel's user来走这个文件系统文件系统的指令实际上它是用用这个Worthyel跑了一个这个Fuse的协议就是把Fuse的这个back end挪到了这颗到了外面而不是割到了User Space这样的话这个方案再加上用了dexdex是dex也是一个用来最早应该给的是nvdim来用的还是nome就是内存类的内存的存储设备因为它类内存所以它的访问速度比较快这样的设备它实际上可以直接map到内存里面去而不真的这样一个操作这样的话如果有了这样的设备不管你读几份它都不会真的往内存里面去读而只是从用同样的一份的开始这样一份的内存这样的话去节省内存所以这两个方向加起来之后就是说我们引入了Worthyel FS你说我什么都不知道然后我听到这个词之后意味着什么呢第一就是它比9P更快然后第二就是它完整的支持了Posix语意快多少呢然后当时Red Hat的同学在首先提出Worthyel FS的时候做了一个班辰Mark大概是给了我忘了大概可能是20-40倍的性能提升吧然后后来我们也做了一个班辰Mark然后就是因为大家知道班辰Mark这事每个人做出来的结果都不一样不能作为你那跑的是一样我们大概应该70%-90%的performance提升总是有的在大部分的case下然后这样的话这是我们对iO方面除了iO方面还有降低OverheadOverhead的降低其实有各种各样的考虑然后这部分也刚刚莫知了然后首先第一个就是年初的时候就开始提出了用Fair Cracker作为一个Cata的VMM然后内部的肯定是一个改过的Fair Cracker的版本然后这个用Fair Cracker替换QMU之后的效果大概是至少是从60兆的开销到15兆的开销吧这个也是一个比较ginal的数字在每个人那儿可能都不一样但是这个比例总是有的然后另外一件事情就比较新一点就是下面这个部分就是RustAgent的这个部分这个部分我们大概是上次PDG的时候那个我们那个Ark Committee就是一块聊天然后我和Eric在想这个事情然后我们两个人大概属于一排即合吧就是Eric说我其实上次我们去的时候我们内部就在想说要不要用Rust的重新写这个Agent然后我当时就当时本来是还是埋在心里边的想法是说自己先写着玩然后结果被Eric先给我提出来了说咱们是不是要考虑用Rust来重写我们的Agent然后就想那个对吧阳阳大国是吧不能落后然后其实我们已经想了然后说这个我们来立这件事情吧然后这样的话从那个从单缝回来之后我们就开始把这个工作逐渐的把这个工作给Test就把这个这个部分重新逐渐拿出来然后重新把它往跑过所有的测试然后往社区里面放然后大概是在在前两个月的时候已经9月份的时候把它已经Open Source出来然后同时已经做了和这个上游的所有CataAgent的Ci的对接然后在之后我们就把它提到了这个是准备去把它纳入到这个我们这个Cata的这个整个的Rifle里面所以这个位置你看他现在已经在CataX的Rifle里面了而且而且他就是在CataX自己的那个那个同名的Rifle里面是非常高的待遇这个是这是另外一个小花絮就是说Cata Continence最早的时候是有很多不同的组件的然后那时候是为了不同组件之间的可替换性比较容易开发但是最近呢大家又想把它大家都尽量的去往一个Rifle里面去放这样可能比较容易这个管理一些这就是那个花絮的一部分所以他就被扔到这个Cata Continence这个这个这个同名Rifle下面了然后后面呢会表相关的这个组件组件也开始往里面来挪那第一个组件在这个里面的组件就是Rust版本的Agent这个是在上个星期快到周末的时候才终于才莫知进去的然后这个的开销大概是变化大概是这样就是我们自己内部Banter Mark了一下大概是从11兆到1.1兆这个是这个内存我简单说明一下就是就是那个就是一名页就是不包括那个Banter Mark本身的部分因为大家知道Banter Mark本身的部分如果你把这个如果用Dex和那个你用Dex来去把这个外面东西去印射到里面去的话实际上你是可以把这部分的Banter Mark的这个这个开销给省掉的就是说他不占那个不占你的这个虚极里面实际的这个内存所以我们我们看到我们想统计的只统计这种真的去占内存的就是从这个Anonymous Page上的算是从11兆讲到降到大概1兆然后这个还不够然后我们在未来的工作里面实际上是这样的就是我们同时还开发了另外一个部分就是说目前的RustAgent和我们当前的CataAgent实际上还是跑在都是使用的GRPC的协议和做Agent和外面的Runtime的通信和SIM的通信但是如果把它用TTRPC替换的话就能带上更多的内存然后这个部分我们应该说TTRPC的RustAgent我们已经写完了然后也已经就是扔出来了正准备往TTRPC的这个社区里面放这个TTRPC的社区里面就是Kennedy那个Community那个Repo里面其实已经扔了一个一宿了我们就在正在往里面推这件事那个在扔进来的话内存的BandMark同学他们做了一下然后我没拿出来那个数据来我觉得数据不太真内存用的太少了我觉得可能是假的所以我就先不说了到底是多少大家这个等这个真的能用起来的时候BandMark出来说大家再看吧反正肯定不是一个直比一兆小一点的数真的是小的有点多我现在觉得不一定是对的然后第三个呢就是加速这个E-mage的部分这个部分呢不要说太多因为这个部分还没有做出来还没有做出来的部分一般吹牛不能吹得太狠然后是这样的就是说我们在做的东西是是准备用一个这个从外面去做一个利用这个已经有的Wertel iWifus然后和这个上游这个新出来的那个OCI的那个Artifact的那个Spark然后在一起然后把这个部分的内存拉过来然后放到这个直接去捅到这个这个虚机的这个Sandbox里面就这个位置直接这样捅进来然后用Artifact的好处就是说我们大概是用了一个相当于是下一个版本的一个OCI E-mage的这个这个镜像我们去做这种这种加速的这种智能的proload然后就是对于一个在House上面还没有的镜像来说的话我看到的数据大概是拉镜像的时间就是铺的时间就是从原来和这个E-mage大小相关大概可以可以现在这个铺的这个操作可以大概变到这个不到一秒钟吧大概是零点几秒吧这个可以根据你的这个workload去做智能的这个加载只加载你需要的那几个部分这个是一个E-mage service的一个加速的一个过程这个其实我们也准备近期就把它也把它扔出来这个应该比较我一说可能大家大概知道这个想法了然后回头我们再把它细细说再把它细拿出来下面一个是我在年初上半年的时候就我们开始提的事情就是关于service mesh因为大家知道我们在那个这个mage那边现在service mesh搞得挺凶的然后这个在大概在那个在618这个会议室叫618是吧618大速的时候就开始去上了去大批的开始上service mesh然后那个时候还没给cata容器上然后我们现在开始pocata容器在那个应该说这个service mesh也是现在的一个趋势了然后但是一个问题就是说这个framework是没问题的但是我们现在在关注的一个问题就是sidecar本身的开销问题大家知道sidecar本身也是一个container然后它有两个问题在里面第一个就是这个sidecar你把它放到里面去的话它占这个用户的资源那如果说是你你是一个服务商然后你把这个sidecar作为一个记住说是一个部分提供给用户的话那这个部分如果也去占用户的资源用户自然而然那它心里一块可能不太乐意然后另外一点就是说这个sidecar本身它也受到这个虚拟化了开销尤其在IO方面虚拟化要开销还是多少有的那些些的然后这样的话我们再想在这个cata的下一步我们就再考虑这个开销怎么样进一步降低这个应该说是我们这个cata2.0的这个这个设计之一我觉得有兴趣大家可以继续线下我们在这个这个沟通这个这个部分这个部分目前呢我们参考了但是没有目前没有特别完美的我们已经想好的解决方案我们做这个就是这个speech的一个目的也是大家可以在社区里面可以如果有什么更好的方案什么样的想法都可以提出来我们一块来改进这个东西这是一个下一步的东西对 这里面Summer一下我们在就是从我们自己的观点来看我们的我们的下一步大概会有什么样的东西这样的话我们大概是在我们这个2.0的周期里面大概已经和我们自己on financial然后和阿里云和这个和arm然后和这个intel的同时都已经做过都做过不少的沟通然后我们目前总结出来的一致的这个这个2.0的这个Romap里面的重点大概这么几点一个是cloud provider的这个isolation的需求就是隔离性的需求然后这个待会儿那个就是下一场就是在616那个刘蒋蒋哥有一个那个有一个claw三box的一个一个topic他会进一步地去讲他那边的对这个2.0的需求就是作为这个服务商的这个isolation那我简单说一下大概就是就是用户的是用户的服务商是服务商的你要把这两个东西划清楚不要让用户的这个这个数据放到服务商的这个这一遍来那用户一方面用户我也不想让你的数据被服务商看到对不对然后那那还有一方面就是说用户的数据如果走了再走服务商的这个这个通道的时候那就会产生击费的问题服务商没法击费也很难去控制qos所以这两个方面来导致就是说目前的这个这个cata现在这个现在就是1.0的版本的时候在这方面对于服务商的需求考虑的还是比较少的然后我们在内部也做了一些改进然后也做了一些这个workaround但我们会逐渐去把它引入到2.0的规划里面来然后第二呢就是这个反难受的需求这个基本上是差不多的因为我们已经商量好了然后第三个呢就是这个对于这个一个workaround的支持就是说有的时候在你的这个服务器上面既跑既跑这个就是这种在线的应用这种网站这种应用也跑这种离线的处理的应用那在这种情况下目前的这个如果用普通的容器来跑的话大家都捧在一起然后这个这个performance isolation本身就很难做就有出问题这个在我们的下一步的cata2.0里面也会考虑到然后同时会2.0还会进一步的去降低这个workaround以及对这个像server's mesh啊等等这些像什么sgx啊这种东西做更好的支持然后后面就是我们整个这个这个星期或者说星期一到星期三的我们关于cata的主要的topicscata主要是就是第一个就是我这个现在这个然后第二个是那个就是留奖那个在那个616就是隔壁的隔壁紧接着这个后面然后再下面的一个呢就是在另外一边是这个这个百度的百度的同学的这个分享介绍这个super user的分享他们不需要我来打网啊然后呢明天呢明天会有明天下午会有我们的这个project update是这个彭涛和我会给大家讲这个介绍一下这个这个过去这几天来的更新然后会有这个这个arm的arm的妹子哪儿去了哎刚刚在这他他会介绍这个arm的一些一些事情但是他很遗憾他topic只有10分钟在明天的明天的这个两点钟在我们的那个project update之前然后我们明天早上起来9点钟在431会有一个forum讲我们这个2.0所关注的这个这个威胁模型工坊威胁模型那个forum的这个topic大家如果不常参加这个这个open user submitopen site submit我们不太了解大概是一个不是这样的讲话能片的场合是一个大家在一个这个一个会场里面大家就平等地坐在这里面然后大家去抒发自己的感想然后呢由一个这个主持人去把这件事情串起来然后把这事情记录下来然后去去去把这个梳理出来梳理出来一个结果是围绕了一个topic来进行的这样的话呢就会在会在最后呢去去辅助我们这个这个这个项目的开发那这个呢实际上是一个这个我们实际上很欢迎这个用户啊就是就是kata的用户和kata对kata有兴趣的人来提一下你们对这个在你们的场景下你们对安全性啊对这个工坊型有什么有什么特殊的要求对吧那然后最后呢最后会是这个星期三的全天是我们的这个ptd叫做project team gathering是所有的这个上游开发者在一块来做这个做这个研讨的嗯这个基本上就这些了然后我们的这个这个项目欢迎大家来给我们做贡献然后我们现在有这个有我们的这个网站官网啊有我们的这个github然后有我们的这个slack然后有我们的哎呀made in list啊然后主要这些吧然后嗯时间差不多了然后大家有什么问题欢迎大家这个可以提问没有什么拆认制的问题请有人能给他一个match吗就是现在用kata的话大部分都是在逻辑上面的大家有我知道很多用户会在公共运上面用就是现在是不知道以后会支持千岛虚拟话吗请问你是来自哪哪我我是平安的啊你好那个呃我首先说是支持千岛虚拟话的现在就支持但是我发现他其中如果检查会检查第一VQVM如果没有的话他会报错的你没有第一VQVM是因为你没开千岛虚拟话就是说你开了千岛虚拟话就会有第一VQVM的这是第一啊然后第二就是说开了千岛虚拟话之后这个一般是在这个需要在house上配置这个不是guess里面可以配的嗯然后第二呢就是说千岛虚拟话的性能问题呃千岛虚拟话在去年前年去年2018年年末的那个呃那个cubecon上面我我一个presentation就是在比较做这个性能的比较确实比较过包括千岛虚拟话的性能问题呃千岛虚拟话的性能在这个呃CPU仔细筒里面是没问题的然后在那个IO仔细筒里面受到一些影响但是呃也是reasonable的就是说千岛虚拟话的性能影响最大的地方在于那个memory就是内存方面的尤其是内存的随机方面这个memory的性能在千岛虚拟话里面损失是最严重的原因呢是因为这个这个页表的问题就是因为没有再多一层的这个这个物理的页表了所以你千岛虚拟话的时候这个页表是不够的呃所以呢在做千岛虚拟话的时候你的呃你的memory访问的性能会受到比较比较大的影响所以呃这个呢目前为止呢不是因为没有硬件的解决方案所以不会有特别好的解决但是呢呃因为技术已经发展这么久了大家这个可以期待就是说新的将来新的CPU啊什么的可能会有这种这种方面的改进然后另外的同时我们也在做一些其他的Runtime的技术方面去去避免这种呃怎么说呢去避免少用一些这个虚拟话方面的属性呃然后来做这个做这个方面的东西但是这个我觉得可能不是这个在短时间之内就是几个月之内可能可以可以去来提供的东西那总的来说的话呢在当前的情况下就是第一千岛虚拟话是可以用的第二千岛虚拟话是在内存方面性能是有比较大影响的就这样呃好的 谢谢还有其他的我问的可能会比较这个stupid来 刘伟就是我想问一下就是刚刚您讲了这么多performance的改善的一些呃方法或者solution那我想问一下Kata里面有没有呃根据采用一些hardware的那个加速硬件或者什么样来做performance的一些改善呢我说回麦克之后我想没问题怎么回应比较好呃我们用的最大的一个硬件叫CPU就是说呃是这样的就是从这个各个方面来说能用的这个这个技术我们都会尽量的尽量的去用的然后就是各个方面都会用的然后呃包括这个呃因为本身我们也在用这个硬件的这个Wattization的方面的方面的技术呃然后我刚才说的去回避那个去回避那个就是用回避VT这边的一些东西其实也还是这样这样这样一些技术的就是所有这些技术其实我们都没有都没有放过然后另外一方面呢就是如果真的对其他的方面的这个加速的硬件呃我们也是就是怕死入我们也是支持就是都都在里面的其其他问题啊没有谢谢大家欢迎到我们其他的赛事