写点什么

谷歌改进 gVisor 提高沙箱容器文件系统性能

  • 2023-02-16
    北京
  • 本文字数:994 字

    阅读完需:约 3 分钟

谷歌改进gVisor提高沙箱容器文件系统性能

谷歌改进gVisor中的文件系统实现,gVisor 是一个开源隔离层,用于面向商业容器的产品,如 App Engine、Cloud Run 和 Cloud Functions。根据谷歌工程师 Ayush Ranjan 和 Fabricio Voznika 的说法,新的 gVisor 文件系统被称为 VFS2,可以将文件密集型工作负载的性能提高大约 50%-75%。

 

gVisor 的主要目标是在容器和底层内核之间提供一个隔离层,该隔离层由运行在同一节点上的所有容器共享。为了防止恶意或易受攻击的容器危及整个节点的安全,gVisor 实现了 Linux 系统表层的很大一部分,包括一个名为 runsc 的符合开放容器倡议(OCI)的兼容运行时,该运行时在应用程序和主机内核之间提供隔离边界。

 

由于 gVisor 内核不可信任,因此它不能直接访问文件系统。文件系统操作由代理(称为 Gofer)来代理操作,该代理与可能的恶意工作负载相隔离。像 open、create 和 stat 这样的操作被转发到代理,经过审核,然后再由代理执行。

 


谷歌工程师发现,gVisor Gofer 文件系统通过将路径解析委派给底层文件系统(每个路径组件使用一个 RPC 调用)来处理路径解析的方式对性能有害。对于频繁执行文件操作的工作负载,例如构建任务或运行带有大量导入的 Python 和 NodeJS 程序时,情况尤其如此。

 

要解决这个问题,需要启用 gVisor 的 Sentry,使其能够将路径解析直接委托给文件系统。......例如,在 VFS1 stat(/foo/bar/baz)中,至少生成三个到 gofer(foo,bar,baz)的 RPC,而 VFS2 仅生成一个。

 

此外,谷歌还借此机会创建了一个用于在 gVisor 沙箱和 Gofer 之间进行通信的新协议。该新协议名为LISAFS((Linux Sandbox File system protoco,Linux 沙箱文件系统协议),它既减少了 RPC 调用的数量,也减少了它的内存使用量,改善了多路径组件的遍历,并加快了文件 I/O。

 

Ranjan 和 Voznika 表示,由于这些变化, 根据许多不同的度量指标,runsc引入的开销减少了 50%-75%。

 

与在根文件系统或内存文件系统中托管源代码相比,使用绑定装载时的改进最大。这些结果是通过运行官方 bazel 基准测试构建 gRPC 和 Abeil 而获得的。

 

基准测试的结果基本上得到了实验数据的证实,实验数据表明,整个平台上的 Google App Engine 冷启动时间提高了 25%以上,这一数据包括了所有类型的工作负载,而不仅仅是文件系统密集型的工作负载。

 

原文链接:

https://www.infoq.com/news/2023/01/gvisor-file-system-improvements/


相关阅读:

Google App Engine 涨价,开发者深受打击

Google 发布 App Engine 的 Go 语言通用版

2023-02-16 08:009027

评论

发布
暂无评论
发现更多内容

OneData之OneID

KAMI

大数据 数据中台 数据治理 OneData

浅谈Cloud Native技术对云上产品的影响

韩超

Docker Kubernetes 云原生 IaaS PaaS

Kotlin协程实践之进程、线程、协程

陈吉米

Java kotlin 协程 Coroutine

发布Maven包的正确姿势

廖雪峰

maven 开源

从零到部署:用 Vue 和 Express 实现迷你全栈电商应用(一)

图雀社区

node.js vue.js Vue

OneData之OneService

KAMI

大数据 数据中台 数据治理 OneData

Collaboration on SaaS

zhenglei

SaaS Collaboration Cisco Webex

少说废话,先干起来

大辉辉

学习 个人成长 自律

2020年比以往任何时候更想做成的使命感

乐少

Docker 镜像制作教程:针对不同语言的精简策略

硅基新手村

Docker Dockerfile

微服务涉及的技术生态有哪些?

攀岩飞鱼

分布式 微服务 方法论 软件架构

程序员的晚餐 | 5 月 17 日 当西红柿遇上鱼

清远

美食

回“疫”录(19):都什么时候了,还在搞“填表抗疫”

小天同学

疫情 回忆录 现实纪录 纪实 形式主义

DevOps生命周期,你想知道的全都在这里了!

禅道项目管理

DevOps 测试 持续集成

OneData之OneModel

KAMI

大数据 数据中台 数据治理 OneData

微服务为什么要有服务发现与注册?

攀岩飞鱼

微服务

从连续两届图灵奖(2018-2019)看GPU发展史

GPU

人工智能 gpu 计算机基础 计算机图形学 计算机体系结构

机会,是不会让你准备好的

Winann

学习 生活 知识管理 机会

游戏夜读 | Scikit-learn迎来0.21版本

game1night

码农理财(一)

北漂码农有话说

理财

计算机中的递归对普通人有什么启示?

BitSea

算法

一种练好英语口语的方法

董一凡

学习

Java如何处理异常情况

Rayjun

Java 异常

【高级进阶】写给大忙人看的JDK14新特性

知春秋

Java java 14 java 14 新特性

有问必答(2020-05-09):如何督促自己做好一件事情?

冯夷

生活

sync.Map源码分析

陈思敏捷

源码 源码分析 Go 语言

数据治理与OneData 体系

KAMI

大数据 数据中台 数据治理 OneData

EasyExcel最权威教程

知春秋

Java Excel EasyExcel

都前后端分离了,咱就别做页面跳转了!统统 JSON 交互

江南一点雨

spring Spring Boot spring security

11 万字的字节码编程系列合集放送(ASM、Javassist、Byte-buddy、Javaagent)

小傅哥

Java asm bytebuddy 《字节码编程》

写作对我的意义

Neco.W

总结 思考 写作 感悟

谷歌改进gVisor提高沙箱容器文件系统性能_语言 & 开发_Sergio De Simone_InfoQ精选文章