写点什么

谷歌改进 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:008858

评论

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

主成分分析PCA与奇异值分解SVD-降维后的矩阵components_ & inverse_transform

烧灯续昼2002

Python 机器学习 算法 sklearn 11月月更

RESTful API类渗透测试的特点

阿泽🧸

RESTful API 11月月更

【愚公系列】2022年11月 微信小程序-场景值

愚公搬代码

11月月更

SpringCloud相关组件

急需上岸的小谢

11月月更

聊聊ThreadLocal

急需上岸的小谢

11月月更

Linux 安装

芯动大师

Linux Linux操作系统 11月月更

企业级业务架构设计笔记三:设计起点与设计过程

程序员架构进阶

架构 业务架构 11月日更 11月月更

MongoDB源码学习:Mongo中的OpRunner

云里有只猫

mongodb 源码学习

聊聊hashmap

急需上岸的小谢

11月月更

工业互联网数据处理架构

刘旭东

kafka IoT 工业互联网

制订需求分析框架和分析计划

穿过生命散发芬芳

需求分析 11月月更

2022-11-20:小团生日收到妈妈送的两个一模一样的数列作为礼物! 他很开心的把玩,不过不小心没拿稳将数列摔坏了! 现在他手上的两个数列分别为A和B,长度分别为n和m。 小团很想再次让这两个数列变

福大大架构师每日一题

算法 rust 福大大

jenkins pipline 基本语法

忙着长大#

iMazing2022免费试用版ios设备管理器

茶色酒

imazing imazing2023

WordPress零门槛的付费阅读插件:WPPAY

ABC实验室

二阶思维

元闰子

人生 思维 二阶思维

Java反射(一)反射机制

浅辄

Java 反射 11月月更

开发H5都会喜欢这个Vite插件

小鑫同学

前端 插件 11月月更

第九期 - 模块七

wuli洋

AST 初探深浅,代码还能这样玩?!

蔡农曰

前端 后端 代码

Java中的System类

共饮一杯无

Java 11月月更 system类

kitti数据集在3D目标检测中的入门

Studying_swz

3D点云 11月月更

极客时间运维进阶训练营第四周作业

老曹

Dockerfile 常用命令

蜗牛也是牛

基于k8s发布系统的实现

tiandizhiguai

云原生 K8s 多集群管理

日期时间类(Date、DateFormat、Calendar)

共饮一杯无

Java 11月月更 日期工具

[力扣] 剑指 Offer 第四天 - 0~n-1中缺失的数字

陈明勇

Go 数据结构与算法 力扣 11月月更

部署代码质量检测服务 sonarqube,基于命令、shell 脚本和 pipline 实现代码质量检测

忙着长大#

jenkins

DCM:中间件家族迎来新成员

石臻臻的杂货铺

后端 SPL 11月月更

《编程的原则》读书笔记(三):软件架构的基本技法和非功能需求

Chares

软件工程 软件开发 编程原理 软件开发原则

日期工具类-操作字符串和Date、LocalDate互转,两个日期的时间差等

共饮一杯无

Java 11月月更 日期工具类

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