182 Commits
Author SHA1 Message Date
Andrei Vagin f010ae01ac Fix a few typos 2025-01-29 21:16:51 -08:00
Etienne PerotandgVisor bot 501618dbe2 Modify make rules to allow using a fully-local build cache.
This includes the ability to force using local images only (do not check
for updated manifests), and to explicitly mount and specify external caches
for Go repositories via `rules_go`'s `GO_REPOSITORY_USE_HOST_MODCACHE`.

PiperOrigin-RevId: 713473497
2025-01-09 12:23:53 -08:00
Etienne PerotandgVisor bot 92c1208157 profiletool: Add subcommand to check for similarity between two profiles.
This is meant to be used as part of a pipeline to refresh the profiles used
for PGO builds. This is used to quantify how similar the profiles are to
existing checked-in profiles. If they are similar enough, then the checked-in
profiles do not need to be updated.

PiperOrigin-RevId: 700788407
2024-11-27 13:17:41 -08:00
gVisor bot 680df82012 Internal change
PiperOrigin-RevId: 698529562
2024-11-20 14:53:44 -08:00
Etienne PerotandgVisor bot d18a726e96 Unbreak build failures in Kubernetes benchmarks.
This updates the Google Cloud APIs and their Go libraries to their latest
versions, which adds some of the missing fields of the container cluster
service v1 proto that didn't exist in the version defined in `WORKSPACE`.

This also severs the proto import dependency of `test_range_config.proto` on
the container cluster API proto, both because it shouldn't be GKE-specific
but also because the Go genproto version of the container cluster API is
different (from the Go linker's perspective) from the container cluster
proto that is imported from `test_range_config.proto`. Instead, it is
encoded as an "any" proto for both nodepools and clusters.

Go repositories are re-arranged such that the genproto version imported is
taken from the `WORKSPACE` file rather than the one embedded in other Go
repositories earlier in the file.

The version of this API in Go's genproto library is still missing some of
the TPU node placement fields, so that part is filled in via reflection
when available. That is hacky but that codepath only applies to TPU clusters
so not applicable for most benchmarks.

PiperOrigin-RevId: 688682505
2024-10-22 14:05:01 -07:00
gVisor bot 9ea896ed9d Merge pull request #11050 from dawei-sdw:dw_modify_patch_path
PiperOrigin-RevId: 688320641
2024-10-21 16:59:02 -07:00
Etienne PerotandgVisor bot 4cff9027d6 Add Kubernetes benchmarks suite.
This is a large set of Kubernetes-based performance benchmarks that has
been in use at Google for gVisor performance testing on GKE, and is now
open-source.

This set of benchmarks has been created and maintained by multiple
contributors over the last 2 years:
@zkoopmans, @EtiennePerot, @kevinGC, @ayushr2, @manninglucas,
@konstantin-s-bogom.

PiperOrigin-RevId: 686649688
2024-10-16 14:51:32 -07:00
Dawei Shen 9aa5777a53 Strip the extra path in go_types_memoize.patch
The go_types_memoize.patch was generated using the git diff command, with
the 'go' field manually added to the path. It would be more appropriate to
set the patch_strip value to 1 when applying such patches.

Signed-off-by: Dawei Shen <shendawei.sdw@antgroup.com>
2024-10-17 00:05:26 +08:00
Andrei Vagin 1de355142f Update golang packages
Signed-off-by: Andrei Vagin <avagin@google.com>
2024-10-09 19:18:08 -07:00
Andrei Vagin 4c89bb77d8 Update bazel packages 2024-10-09 17:40:55 -07:00
Andrei Vagin 1adacb2ec9 Update golang to 1.23.2 2024-10-09 17:40:55 -07:00
gVisor bot 4962090d25 Merge pull request #10954 from google:test/avagin/network_plugins
PiperOrigin-RevId: 679730224
2024-09-27 14:34:57 -07:00
Jing ChenandgVisor bot 4a38681600 Upgrade containerd in gVisor, from v1.4.13 to v1.6.36.
PiperOrigin-RevId: 679295130
2024-09-26 14:34:06 -07:00
Andrei Vagin 975bf85ffd buildkite: start testing the network plugin 2024-09-25 19:23:06 -07:00
gVisor bot 079c1a937b Merge pull request #9551 from amysaq2023:support-external-stack
PiperOrigin-RevId: 677933413
2024-09-23 14:12:32 -07:00
Anthony CuiandgVisor bot 1986723ac6 Create Clang tool to find struct definitions in Nvidia source files.
PiperOrigin-RevId: 655338427
2024-07-23 16:15:17 -07:00
Anqi Shen 56f2530dad Support plugin network stack
This commit supports a third-party network stack as a plugin stack for
gVisor.

The overall plugin package structure is the following:

- pkg/sentry/socket/plugin:
  Interfaces for initializing plugin network stack. It will be used
  in network setting up during sandbox creating.

- pkg/sentry/socket/plugin/stack:
  Glue layer for plugin stack's socket and stack ops with sentry. It
  will also register plugin stack operations if imported.

- pkg/sentry/socket/plugin/cgo:
  Interfaces defined in C for plugin network stack to support.

To build target runsc-plugin-stack, which imports
pkg/sentry/socket/plugin/stack package and enables CGO:

bazel build --config=plugin-tldk runsc:runsc-plugin-stack

(i.e. --config=plugin-tldk indicates that using TLDK as plugin stack)

By using runsc-plugin-stack binary and setting "--network=plugin" in
runtimeArgs, user can use third-party network stack instead of
netstack embedded in gVisor to get better network performance.

Redis benchmark with following setups:
1. KVM platform
2. 4 physical cores for target pod
3. target pod as redis server

Runc:
$redis-benchmark -h [target ip] -n 100000 -t get,set -q
SET: 115207.38 requests per second, p50=0.215 msec
GET: 92336.11 requests per second, p50=0.279 msec

$redis-benchmark -h [target ip] -n 100000 -t get,set -q
SET: 113895.21 requests per second, p50=0.247 msec
GET: 96899.23 requests per second, p50=0.271 msec

$redis-benchmark -h [target ip] -n 100000 -t get,set -q
SET: 126582.27 requests per second, p50=0.199 msec
GET: 95969.28 requests per second, p50=0.271 msec

Runsc with plugin stack:
$redis-benchmark -h [target ip] -n 100000 -t get,set -q
SET: 123915.74 requests per second, p50=0.343 msec
GET: 115473.45 requests per second, p50=0.335 msec

$redis-benchmark -h [target ip] -n 100000 -t get,set -q
SET: 120918.98 requests per second, p50=0.351 msec
GET: 117647.05 requests per second, p50=0.351 msec

$redis-benchmark -h [target ip] -n 100000 -t get,set -q
SET: 119904.08 requests per second, p50=0.367 msec
GET: 112739.57 requests per second, p50=0.375 msec

Runsc with netstack:
$redis-benchmark -h [target ip] -n 100000 -t get,set -q
SET: 59952.04 requests per second, p50=0.759 msec
GET: 61162.08 requests per second, p50=0.631 msec

$redis-benchmark -h [target ip] -n 100000 -t get,set -q
SET: 52219.32 requests per second, p50=0.719 msec
GET: 58719.91 requests per second, p50=0.663 msec

$redis-benchmark -h [target ip] -n 100000 -t get,set -q
SET: 59952.04 requests per second, p50=0.751 msec
GET: 60827.25 requests per second, p50=0.751 msec

Updates https://github.com/google/gvisor/issues/9266

Co-developed-by: Tianyu Zhou <wentong.zty@antgroup.com>
Signed-off-by: Anqi Shen <amy.saq@antgroup.com>
2024-07-12 09:10:13 +00:00
gVisor bot 13c9b723e8 Merge pull request #10410 from avagin:update-packages
PiperOrigin-RevId: 632310224
2024-05-09 16:59:47 -07:00
Andrei VaginandAndrei Vagin 3cea35d3c0 Update bazel to 7.1.2
The key highlight from the release notes:

Build without the Bytes for builds using remote caching and/or remote
execution is now enabled by default (i.e. --remote_download_outputs
defaults to toplevel). This means that Bazel will no longer try to
download any intermediate outputs from the remote server, but only the
outputs of requested top-level targets instead. This significantly
improves build performance. Bazel now also handles the case of an
artifact falling out of the remote cache gracefully, by rewinding the
build.

Signed-off-by: Andrei Vagin <avagin@gmail.com>
2024-05-09 15:43:34 -07:00
Etienne PerotandgVisor bot f8b4dab67a metricsviz: Generate charts and HTML webpage of metrics profiling data.
This is part of a series of changes to add metric charts in performance
benchmarks.

This change adds the code to compile the metrics profiling data into charts,
rendering those charts to HTML, and writing this HTML file to a temporary
location.

It uses the Apache echarts library to generate the charts.

PiperOrigin-RevId: 631974672
2024-05-08 17:25:41 -07:00
gVisor bot 3172bc0467 Update go_github from v52 to v56
PiperOrigin-RevId: 611671170
2024-02-29 19:12:23 -08:00
Andrei Vagin 93fc9c4686 rules_go: Revert "Emit nogo facts into a separate archive (#3789)"
https://github.com/bazelbuild/rules_go/pull/3789 beakes gVisor nogo
tests.
2024-02-23 15:02:59 -08:00
Andrei Vagin 8c5f072006 Update rules_go to 0.46.0 2024-02-22 00:48:30 -08:00
Andrei Vagin 06f27834f4 Update golang.org/x/sys 2024-02-22 00:48:30 -08:00
Andrei Vagin cfb861a94a Update golang to 1.22 2024-02-22 00:48:30 -08:00