写点什么

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

评论

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

为什么建议项目中统一线程池类?

张挺

如何搭建一个Zookeeper集群

Rayjun

大数据 zookeeper 分布式

架构师训练营第五周学习总结

张明森

锦囊篇|一文摸懂SharedPreferences和MMKV(二)

ClericYi

授权专利争夺正当时

CECBC

数据隐私 授权专利 平台应用服务

cms项目系列(一)——SSM框架搭建

程序员的时光

spring

编程核心能力之组合

顿晓

Java 学习 pipe

如何站在架构师的角度做框架

小新

Java 集合 框架

面试中必问的JVM应该怎么学(面试题含答案)

猿灯塔

Java架构-Apache POI Excel

猿灯塔

程序员阿里、京东、美团面试整理的面试题,测试一下你都会了吗?

小谈

Java 阿里巴巴 面试

1.2w字 | 初中级前端 JavaScript 自测清单 - 1

Geek_z9ygea

Java 大前端 Web

源码分析 | 数据异构Canal 初探

小新

今天来聊聊如何挑书

封不羁

读书 个人感想

在Windows上使用IIS来托管站点

Puran

windows IIS Server

架构师训练营 第 5 周作业

Lingjun

极客大学架构师训练营

面试官:既然CPU有MESI,为什么 JMM 还需要volatile关键字?

犬来八荒

Java 面试 JVM 硬件

专科程序员与本科程序员之间有什么区别?薪资待遇又差多少?

码农月半

spring 程序员 面试

PHP实现一致性哈希算法

任小龙

架构师训练营 -week5 命题作业

J.Smile

极客大学架构师训练营

区块链+金融赋能高原特色农业重点产业

CECBC

打破信息孤岛 区块链+咖啡 特色农业 咖云链

农产品电商平台的S曲线分析

石云升

增长 S型曲线 破局点

什么时候不要用微服务?以 Istio 为例

无予且行

Java 微服务 后端

SQLite你用对了吗

山楂大卷

sqlite 数据库 选型

【思考】互联网厂商争夺企业市场

superman

企业中台 互联网

计算机操作系统基础(十一)---线程同步之互斥量

书旅

php laravel 线程 操作系统 进程

饿了么4年,阿里2年:我的总结与思考

程序员生活志

工作经验

你真的理解透彻高并发了吗?来看看架构师眼里的高并发

小谈

Java 面试 高并发 高并发系统设计

解读 java 并发队列 BlockingQueue

猿灯塔

Java

spring 那点事儿——让你少走弯路

爱java爱自己

Spring Cloud Spring Boot

ConcurrentHashMap里面也有死循环

无予且行

Java jdk 面试 jdk8

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