From bf6166aa37b04a4b2404c900187c43b672d883a2 Mon Sep 17 00:00:00 2001 From: Etienne Perot Date: Mon, 13 May 2024 17:34:24 -0700 Subject: [PATCH] Update platform diagram to replace ptrace with systrap. Also include reference to Systrap in the Platform Portability blog post. Fixes #10386 PiperOrigin-RevId: 633383052 --- g3doc/architecture_guide/platforms.png | Bin 21384 -> 16624 bytes g3doc/architecture_guide/platforms.svg | 109 +++++++++--------- .../blog/2020-10-22-platform-portability.md | 7 +- 3 files changed, 62 insertions(+), 54 deletions(-) diff --git a/g3doc/architecture_guide/platforms.png b/g3doc/architecture_guide/platforms.png index 005d56feb05632728a9f55db98f82cd1ced2f33a..3b26c6399fdad9c1fc220c59f18a594a3172933b 100644 GIT binary patch literal 16624 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 J%Q~loCIE+fjmQ81 diff --git a/g3doc/architecture_guide/platforms.svg b/g3doc/architecture_guide/platforms.svg index b0bac9ba7..1c52c24fa 100644 --- a/g3doc/architecture_guide/platforms.svg +++ b/g3doc/architecture_guide/platforms.svg @@ -2,13 +2,6 @@ + inkscape:version="1.2.2 (b0a8486541, 2022-12-01)" + sodipodi:docname="platforms.svg" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:dc="http://purl.org/dc/elements/1.1/"> + inkscape:window-maximized="1" + inkscape:showpageshadow="2" + inkscape:pagecheckerboard="0" + inkscape:deskcolor="#d1d1d1" /> @@ -51,7 +54,7 @@ image/svg+xml - + @@ -83,7 +86,7 @@ style="fill:#ff8080;stroke-width:0.19060372" /> gVisor + style="stroke-width:0.0850731">gVisor workload + style="stroke-width:0.0832785">workload host + style="stroke-width:0.160981">host gVisor + style="stroke-width:0.0850731">gVisor workload + style="stroke-width:0.0832785">workload KVM + style="stroke-width:0.108769">KVM gVisor + style="stroke-width:0.0850731">gVisor workload + style="stroke-width:0.0832785">workload ptrace + x="89.655647" + y="148.03169" + style="stroke-width:0.0848642">systrap ptrace + style="stroke-width:0.0848642">systrap VM + style="stroke-width:0.136265">VM guest + style="stroke-width:0.154464">guest gVisor + style="stroke-width:0.0850731">gVisor workload + style="stroke-width:0.0832785">workload ptrace + style="stroke-width:0.0848642">systrap diff --git a/website/blog/2020-10-22-platform-portability.md b/website/blog/2020-10-22-platform-portability.md index 4d82940f9..15a804b52 100644 --- a/website/blog/2020-10-22-platform-portability.md +++ b/website/blog/2020-10-22-platform-portability.md @@ -6,13 +6,18 @@ requires expensive bare-metal machines or cloud instances to run safely with good performance, increasing cost and complexity for Cloud users. gVisor, however, takes a more flexible approach. +**NOTE 2024-05**: This post describes the ptrace and KVM platforms, which were +the only two gVisor platforms at the time it was written. The +[Systrap platform](/blog/2023/04/28/systrap-release/) was added since and +provides better performance than ptrace. + One of the pillars of gVisor's architecture is portability, allowing it to run anywhere that runs Linux. Modern Cloud-Native applications run in containers in many different places, from bare metal to virtual machines, and can't always rely on nested virtualization. It is important for gVisor to be able to support the environments where you run containers. -gVisor achieves portability through an abstraction called a _Platform_. +gVisor achieves portability through an abstraction called a *Platform*. Platforms can have many implementations, and each implementation can cover different environments, making use of available software or hardware features.