summaryrefslogtreecommitdiff
path: root/vendor/github.com/containerd/cgroups
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/containerd/cgroups')
-rw-r--r--vendor/github.com/containerd/cgroups/v3/.gitignore2
-rw-r--r--vendor/github.com/containerd/cgroups/v3/LICENSE201
-rw-r--r--vendor/github.com/containerd/cgroups/v3/Makefile26
-rw-r--r--vendor/github.com/containerd/cgroups/v3/Protobuild.toml31
-rw-r--r--vendor/github.com/containerd/cgroups/v3/README.md217
-rw-r--r--vendor/github.com/containerd/cgroups/v3/cgroup1/blkio.go362
-rw-r--r--vendor/github.com/containerd/cgroups/v3/cgroup1/cgroup.go571
-rw-r--r--vendor/github.com/containerd/cgroups/v3/cgroup1/control.go99
-rw-r--r--vendor/github.com/containerd/cgroups/v3/cgroup1/cpu.go125
-rw-r--r--vendor/github.com/containerd/cgroups/v3/cgroup1/cpuacct.go129
-rw-r--r--vendor/github.com/containerd/cgroups/v3/cgroup1/cpuset.go158
-rw-r--r--vendor/github.com/containerd/cgroups/v3/cgroup1/devices.go92
-rw-r--r--vendor/github.com/containerd/cgroups/v3/cgroup1/errors.go47
-rw-r--r--vendor/github.com/containerd/cgroups/v3/cgroup1/freezer.go82
-rw-r--r--vendor/github.com/containerd/cgroups/v3/cgroup1/hierarchy.go20
-rw-r--r--vendor/github.com/containerd/cgroups/v3/cgroup1/hugetlb.go109
-rw-r--r--vendor/github.com/containerd/cgroups/v3/cgroup1/memory.go480
-rw-r--r--vendor/github.com/containerd/cgroups/v3/cgroup1/named.go39
-rw-r--r--vendor/github.com/containerd/cgroups/v3/cgroup1/net_cls.go61
-rw-r--r--vendor/github.com/containerd/cgroups/v3/cgroup1/net_prio.go65
-rw-r--r--vendor/github.com/containerd/cgroups/v3/cgroup1/opts.go72
-rw-r--r--vendor/github.com/containerd/cgroups/v3/cgroup1/paths.go106
-rw-r--r--vendor/github.com/containerd/cgroups/v3/cgroup1/perf_event.go37
-rw-r--r--vendor/github.com/containerd/cgroups/v3/cgroup1/pids.go85
-rw-r--r--vendor/github.com/containerd/cgroups/v3/cgroup1/rdma.go154
-rw-r--r--vendor/github.com/containerd/cgroups/v3/cgroup1/state.go28
-rw-r--r--vendor/github.com/containerd/cgroups/v3/cgroup1/stats/doc.go17
-rw-r--r--vendor/github.com/containerd/cgroups/v3/cgroup1/stats/metrics.pb.go1959
-rw-r--r--vendor/github.com/containerd/cgroups/v3/cgroup1/stats/metrics.pb.txt771
-rw-r--r--vendor/github.com/containerd/cgroups/v3/cgroup1/stats/metrics.proto158
-rw-r--r--vendor/github.com/containerd/cgroups/v3/cgroup1/subsystem.go117
-rw-r--r--vendor/github.com/containerd/cgroups/v3/cgroup1/systemd.go158
-rw-r--r--vendor/github.com/containerd/cgroups/v3/cgroup1/ticks.go26
-rw-r--r--vendor/github.com/containerd/cgroups/v3/cgroup1/utils.go265
-rw-r--r--vendor/github.com/containerd/cgroups/v3/cgroup1/v1.go73
-rw-r--r--vendor/github.com/containerd/cgroups/v3/cgroup2/cpu.go83
-rw-r--r--vendor/github.com/containerd/cgroups/v3/cgroup2/devicefilter.go200
-rw-r--r--vendor/github.com/containerd/cgroups/v3/cgroup2/ebpf.go96
-rw-r--r--vendor/github.com/containerd/cgroups/v3/cgroup2/errors.go26
-rw-r--r--vendor/github.com/containerd/cgroups/v3/cgroup2/hugetlb.go37
-rw-r--r--vendor/github.com/containerd/cgroups/v3/cgroup2/io.go64
-rw-r--r--vendor/github.com/containerd/cgroups/v3/cgroup2/manager.go990
-rw-r--r--vendor/github.com/containerd/cgroups/v3/cgroup2/memory.go59
-rw-r--r--vendor/github.com/containerd/cgroups/v3/cgroup2/paths.go60
-rw-r--r--vendor/github.com/containerd/cgroups/v3/cgroup2/pids.go37
-rw-r--r--vendor/github.com/containerd/cgroups/v3/cgroup2/rdma.go46
-rw-r--r--vendor/github.com/containerd/cgroups/v3/cgroup2/state.go65
-rw-r--r--vendor/github.com/containerd/cgroups/v3/cgroup2/stats/doc.go17
-rw-r--r--vendor/github.com/containerd/cgroups/v3/cgroup2/stats/metrics.pb.go1333
-rw-r--r--vendor/github.com/containerd/cgroups/v3/cgroup2/stats/metrics.pb.txt538
-rw-r--r--vendor/github.com/containerd/cgroups/v3/cgroup2/stats/metrics.proto105
-rw-r--r--vendor/github.com/containerd/cgroups/v3/cgroup2/utils.go446
-rw-r--r--vendor/github.com/containerd/cgroups/v3/utils.go150
53 files changed, 0 insertions, 11294 deletions
diff --git a/vendor/github.com/containerd/cgroups/v3/.gitignore b/vendor/github.com/containerd/cgroups/v3/.gitignore
deleted file mode 100644
index 3465c14cf..000000000
--- a/vendor/github.com/containerd/cgroups/v3/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-example/example
-cmd/cgctl/cgctl
diff --git a/vendor/github.com/containerd/cgroups/v3/LICENSE b/vendor/github.com/containerd/cgroups/v3/LICENSE
deleted file mode 100644
index 261eeb9e9..000000000
--- a/vendor/github.com/containerd/cgroups/v3/LICENSE
+++ /dev/null
@@ -1,201 +0,0 @@
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright [yyyy] [name of copyright owner]
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
diff --git a/vendor/github.com/containerd/cgroups/v3/Makefile b/vendor/github.com/containerd/cgroups/v3/Makefile
deleted file mode 100644
index 088572980..000000000
--- a/vendor/github.com/containerd/cgroups/v3/Makefile
+++ /dev/null
@@ -1,26 +0,0 @@
-# Copyright The containerd Authors.
-
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-
-# http://www.apache.org/licenses/LICENSE-2.0
-
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-PACKAGES=$(shell go list ./... | grep -v /vendor/)
-
-all: cgutil
- go build -v
-
-cgutil:
- cd cmd/cgctl && go build -v
-
-proto:
- protobuild --quiet ${PACKAGES}
- # Keep them Go-idiomatic and backward-compatible with the gogo/protobuf era.
- go-fix-acronym -w -a '(Cpu|Tcp|Rss)' $(shell find cgroup1/stats/ cgroup2/stats/ -name '*.pb.go')
diff --git a/vendor/github.com/containerd/cgroups/v3/Protobuild.toml b/vendor/github.com/containerd/cgroups/v3/Protobuild.toml
deleted file mode 100644
index cf94b1c1a..000000000
--- a/vendor/github.com/containerd/cgroups/v3/Protobuild.toml
+++ /dev/null
@@ -1,31 +0,0 @@
-version = "2"
-generators = ["go"]
-
-# Control protoc include paths. Below are usually some good defaults, but feel
-# free to try it without them if it works for your project.
-[includes]
- # Include paths that will be added before all others. Typically, you want to
- # treat the root of the project as an include, but this may not be necessary.
- # before = ["."]
-
- # Paths that will be added untouched to the end of the includes. We use
- # `/usr/local/include` to pickup the common install location of protobuf.
- # This is the default.
- after = ["/usr/local/include", "/usr/include"]
-
-# Aggregrate the API descriptors to lock down API changes.
-[[descriptors]]
-prefix = "github.com/containerd/cgroups/cgroup1/stats"
-target = "cgroup1/stats/metrics.pb.txt"
-ignore_files = [
- "google/protobuf/descriptor.proto",
-]
-[[descriptors]]
-prefix = "github.com/containerd/cgroups/cgroup2/stats"
-target = "cgroup2/stats/metrics.pb.txt"
-ignore_files = [
- "google/protobuf/descriptor.proto",
-]
-
-[parameters.go]
-paths = "source_relative"
diff --git a/vendor/github.com/containerd/cgroups/v3/README.md b/vendor/github.com/containerd/cgroups/v3/README.md
deleted file mode 100644
index a90b87266..000000000
--- a/vendor/github.com/containerd/cgroups/v3/README.md
+++ /dev/null
@@ -1,217 +0,0 @@
-# cgroups
-
-[![Build Status](https://github.com/containerd/cgroups/workflows/CI/badge.svg)](https://github.com/containerd/cgroups/actions?query=workflow%3ACI)
-[![codecov](https://codecov.io/gh/containerd/cgroups/branch/main/graph/badge.svg)](https://codecov.io/gh/containerd/cgroups)
-[![GoDoc](https://godoc.org/github.com/containerd/cgroups?status.svg)](https://godoc.org/github.com/containerd/cgroups)
-[![Go Report Card](https://goreportcard.com/badge/github.com/containerd/cgroups)](https://goreportcard.com/report/github.com/containerd/cgroups)
-
-Go package for creating, managing, inspecting, and destroying cgroups.
-The resources format for settings on the cgroup uses the OCI runtime-spec found
-[here](https://github.com/opencontainers/runtime-spec).
-
-## Examples (v1)
-
-### Create a new cgroup
-
-This creates a new cgroup using a static path for all subsystems under `/test`.
-
-* /sys/fs/cgroup/cpu/test
-* /sys/fs/cgroup/memory/test
-* etc....
-
-It uses a single hierarchy and specifies cpu shares as a resource constraint and
-uses the v1 implementation of cgroups.
-
-
-```go
-shares := uint64(100)
-control, err := cgroup1.New(cgroup1.StaticPath("/test"), &specs.LinuxResources{
- CPU: &specs.LinuxCPU{
- Shares: &shares,
- },
-})
-defer control.Delete()
-```
-
-### Create with systemd slice support
-
-
-```go
-control, err := cgroup1.New(cgroup1.Systemd, cgroup1.Slice("system.slice", "runc-test"), &specs.LinuxResources{
- CPU: &specs.CPU{
- Shares: &shares,
- },
-})
-
-```
-
-### Load an existing cgroup
-
-```go
-control, err = cgroup1.Load(cgroup1.Default, cgroups.StaticPath("/test"))
-```
-
-### Add a process to the cgroup
-
-```go
-if err := control.Add(cgroup1.Process{Pid:1234}); err != nil {
-}
-```
-
-### Update the cgroup
-
-To update the resources applied in the cgroup
-
-```go
-shares = uint64(200)
-if err := control.Update(&specs.LinuxResources{
- CPU: &specs.LinuxCPU{
- Shares: &shares,
- },
-}); err != nil {
-}
-```
-
-### Freeze and Thaw the cgroup
-
-```go
-if err := control.Freeze(); err != nil {
-}
-if err := control.Thaw(); err != nil {
-}
-```
-
-### List all processes in the cgroup or recursively
-
-```go
-processes, err := control.Processes(cgroup1.Devices, recursive)
-```
-
-### Get Stats on the cgroup
-
-```go
-stats, err := control.Stat()
-```
-
-By adding `cgroups.IgnoreNotExist` all non-existent files will be ignored, e.g. swap memory stats without swap enabled
-```go
-stats, err := control.Stat(cgroup1.IgnoreNotExist)
-```
-
-### Move process across cgroups
-
-This allows you to take processes from one cgroup and move them to another.
-
-```go
-err := control.MoveTo(destination)
-```
-
-### Create subcgroup
-
-```go
-subCgroup, err := control.New("child", resources)
-```
-
-### Registering for memory events
-
-This allows you to get notified by an eventfd for v1 memory cgroups events.
-
-```go
-event := cgroup1.MemoryThresholdEvent(50 * 1024 * 1024, false)
-efd, err := control.RegisterMemoryEvent(event)
-```
-
-```go
-event := cgroup1.MemoryPressureEvent(cgroup1.MediumPressure, cgroup1.DefaultMode)
-efd, err := control.RegisterMemoryEvent(event)
-```
-
-```go
-efd, err := control.OOMEventFD()
-// or by using RegisterMemoryEvent
-event := cgroup1.OOMEvent()
-efd, err := control.RegisterMemoryEvent(event)
-```
-
-## Examples (v2/unified)
-
-### Check that the current system is running cgroups v2
-
-```go
-var cgroupV2 bool
-if cgroups.Mode() == cgroups.Unified {
- cgroupV2 = true
-}
-```
-
-### Create a new cgroup
-
-This creates a new systemd v2 cgroup slice. Systemd slices consider ["-" a special character](https://www.freedesktop.org/software/systemd/man/systemd.slice.html),
-so the resulting slice would be located here on disk:
-
-* /sys/fs/cgroup/my.slice/my-cgroup.slice/my-cgroup-abc.slice
-
-```go
-import (
- "github.com/containerd/cgroups/v3/cgroup2"
- specs "github.com/opencontainers/runtime-spec/specs-go"
-)
-
-res := cgroup2.Resources{}
-// dummy PID of -1 is used for creating a "general slice" to be used as a parent cgroup.
-// see https://github.com/containerd/cgroups/blob/1df78138f1e1e6ee593db155c6b369466f577651/v2/manager.go#L732-L735
-m, err := cgroup2.NewSystemd("/", "my-cgroup-abc.slice", -1, &res)
-if err != nil {
- return err
-}
-```
-
-### Load an existing cgroup
-
-```go
-m, err := cgroup2.LoadSystemd("/", "my-cgroup-abc.slice")
-if err != nil {
- return err
-}
-```
-
-### Delete a cgroup
-
-```go
-m, err := cgroup2.LoadSystemd("/", "my-cgroup-abc.slice")
-if err != nil {
- return err
-}
-err = m.DeleteSystemd()
-if err != nil {
- return err
-}
-```
-
-### Kill all processes in a cgroup
-
-```go
-m, err := cgroup2.LoadSystemd("/", "my-cgroup-abc.slice")
-if err != nil {
- return err
-}
-err = m.Kill()
-if err != nil {
- return err
-}
-```
-
-### Attention
-
-All static path should not include `/sys/fs/cgroup/` prefix, it should start with your own cgroups name
-
-## Project details
-
-Cgroups is a containerd sub-project, licensed under the [Apache 2.0 license](./LICENSE).
-As a containerd sub-project, you will find the:
-
- * [Project governance](https://github.com/containerd/project/blob/main/GOVERNANCE.md),
- * [Maintainers](https://github.com/containerd/project/blob/main/MAINTAINERS),
- * and [Contributing guidelines](https://github.com/containerd/project/blob/main/CONTRIBUTING.md)
-
-information in our [`containerd/project`](https://github.com/containerd/project) repository.
diff --git a/vendor/github.com/containerd/cgroups/v3/cgroup1/blkio.go b/vendor/github.com/containerd/cgroups/v3/cgroup1/blkio.go
deleted file mode 100644
index 9ee96e139..000000000
--- a/vendor/github.com/containerd/cgroups/v3/cgroup1/blkio.go
+++ /dev/null
@@ -1,362 +0,0 @@
-/*
- Copyright The containerd Authors.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-
-package cgroup1
-
-import (
- "bufio"
- "fmt"
- "io"
- "os"
- "path/filepath"
- "strconv"
- "strings"
-
- v1 "github.com/containerd/cgroups/v3/cgroup1/stats"
-
- specs "github.com/opencontainers/runtime-spec/specs-go"
-)
-
-// NewBlkio returns a Blkio controller given the root folder of cgroups.
-// It may optionally accept other configuration options, such as ProcRoot(path)
-func NewBlkio(root string, options ...func(controller *blkioController)) *blkioController {
- ctrl := &blkioController{
- root: filepath.Join(root, string(Blkio)),
- procRoot: "/proc",
- }
- for _, opt := range options {
- opt(ctrl)
- }
- return ctrl
-}
-
-// ProcRoot overrides the default location of the "/proc" filesystem
-func ProcRoot(path string) func(controller *blkioController) {
- return func(c *blkioController) {
- c.procRoot = path
- }
-}
-
-type blkioController struct {
- root string
- procRoot string
-}
-
-func (b *blkioController) Name() Name {
- return Blkio
-}
-
-func (b *blkioController) Path(path string) string {
- return filepath.Join(b.root, path)
-}
-
-func (b *blkioController) Create(path string, resources *specs.LinuxResources) error {
- if err := os.MkdirAll(b.Path(path), defaultDirPerm); err != nil {
- return err
- }
- if resources.BlockIO == nil {
- return nil
- }
- for _, t := range createBlkioSettings(resources.BlockIO) {
- if t.value != nil {
- if err := os.WriteFile(
- filepath.Join(b.Path(path), "blkio."+t.name),
- t.format(t.value),
- defaultFilePerm,
- ); err != nil {
- return err
- }
- }
- }
- return nil
-}
-
-func (b *blkioController) Update(path string, resources *specs.LinuxResources) error {
- return b.Create(path, resources)
-}
-
-func (b *blkioController) Stat(path string, stats *v1.Metrics) error {
- stats.Blkio = &v1.BlkIOStat{}
-
- var settings []blkioStatSettings
-
- // Try to read CFQ stats available on all CFQ enabled kernels first
- if _, err := os.Lstat(filepath.Join(b.Path(path), "blkio.io_serviced_recursive")); err == nil {
- settings = []blkioStatSettings{
- {
- name: "sectors_recursive",
- entry: &stats.Blkio.SectorsRecursive,
- },
- {
- name: "io_service_bytes_recursive",
- entry: &stats.Blkio.IoServiceBytesRecursive,
- },
- {
- name: "io_serviced_recursive",
- entry: &stats.Blkio.IoServicedRecursive,
- },
- {
- name: "io_queued_recursive",
- entry: &stats.Blkio.IoQueuedRecursive,
- },
- {
- name: "io_service_time_recursive",
- entry: &stats.Blkio.IoServiceTimeRecursive,
- },
- {
- name: "io_wait_time_recursive",
- entry: &stats.Blkio.IoWaitTimeRecursive,
- },
- {
- name: "io_merged_recursive",
- entry: &stats.Blkio.IoMergedRecursive,
- },
- {
- name: "time_recursive",
- entry: &stats.Blkio.IoTimeRecursive,
- },
- }
- }
-
- f, err := os.Open(filepath.Join(b.procRoot, "partitions"))
- if err != nil {
- return err
- }
- defer f.Close()
-
- devices, err := getDevices(f)
- if err != nil {
- return err
- }
-
- var size int
- for _, t := range settings {
- if err := b.readEntry(devices, path, t.name, t.entry); err != nil {
- return err
- }
- size += len(*t.entry)
- }
- if size > 0 {
- return nil
- }
-
- // Even the kernel is compiled with the CFQ scheduler, the cgroup may not use
- // block devices with the CFQ scheduler. If so, we should fallback to throttle.* files.
- settings = []blkioStatSettings{
- {
- name: "throttle.io_serviced",
- entry: &stats.Blkio.IoServicedRecursive,
- },
- {
- name: "throttle.io_service_bytes",
- entry: &stats.Blkio.IoServiceBytesRecursive,
- },
- }
- for _, t := range settings {
- if err := b.readEntry(devices, path, t.name, t.entry); err != nil {
- return err
- }
- }
- return nil
-}
-
-func (b *blkioController) readEntry(devices map[deviceKey]string, path, name string, entry *[]*v1.BlkIOEntry) error {
- f, err := os.Open(filepath.Join(b.Path(path), "blkio."+name))
- if err != nil {
- return err
- }
- defer f.Close()
- sc := bufio.NewScanner(f)
- for sc.Scan() {
- // format: dev type amount
- fields := strings.FieldsFunc(sc.Text(), splitBlkIOStatLine)
- if len(fields) < 3 {
- if len(fields) == 2 && fields[0] == "Total" {
- // skip total line
- continue
- } else {
- return fmt.Errorf("invalid line found while parsing %s: %s", path, sc.Text())
- }
- }
- major, err := strconv.ParseUint(fields[0], 10, 64)
- if err != nil {
- return err
- }
- minor, err := strconv.ParseUint(fields[1], 10, 64)
- if err != nil {
- return err
- }
- op := ""
- valueField := 2
- if len(fields) == 4 {
- op = fields[2]
- valueField = 3
- }
- v, err := strconv.ParseUint(fields[valueField], 10, 64)
- if err != nil {
- return err
- }
- *entry = append(*entry, &v1.BlkIOEntry{
- Device: devices[deviceKey{major, minor}],
- Major: major,
- Minor: minor,
- Op: op,
- Value: v,
- })
- }
- return sc.Err()
-}
-
-func createBlkioSettings(blkio *specs.LinuxBlockIO) []blkioSettings {
- settings := []blkioSettings{}
-
- if blkio.Weight != nil {
- settings = append(settings,
- blkioSettings{
- name: "weight",
- value: blkio.Weight,
- format: uintf,
- })
- }
- if blkio.LeafWeight != nil {
- settings = append(settings,
- blkioSettings{
- name: "leaf_weight",
- value: blkio.LeafWeight,
- format: uintf,
- })
- }
- for _, wd := range blkio.WeightDevice {
- if wd.Weight != nil {
- settings = append(settings,
- blkioSettings{
- name: "weight_device",
- value: wd,
- format: weightdev,
- })
- }
- if wd.LeafWeight != nil {
- settings = append(settings,
- blkioSettings{
- name: "leaf_weight_device",
- value: wd,
- format: weightleafdev,
- })
- }
- }
- for _, t := range []struct {
- name string
- list []specs.LinuxThrottleDevice
- }{
- {
- name: "throttle.read_bps_device",
- list: blkio.ThrottleReadBpsDevice,
- },
- {
- name: "throttle.read_iops_device",
- list: blkio.ThrottleReadIOPSDevice,
- },
- {
- name: "throttle.write_bps_device",
- list: blkio.ThrottleWriteBpsDevice,
- },
- {
- name: "throttle.write_iops_device",
- list: blkio.ThrottleWriteIOPSDevice,
- },
- } {
- for _, td := range t.list {
- settings = append(settings, blkioSettings{
- name: t.name,
- value: td,
- format: throttleddev,
- })
- }
- }
- return settings
-}
-
-type blkioSettings struct {
- name string
- value interface{}
- format func(v interface{}) []byte
-}
-
-type blkioStatSettings struct {
- name string
- entry *[]*v1.BlkIOEntry
-}
-
-func uintf(v interface{}) []byte {
- return []byte(strconv.FormatUint(uint64(*v.(*uint16)), 10))
-}
-
-func weightdev(v interface{}) []byte {
- wd := v.(specs.LinuxWeightDevice)
- return []byte(fmt.Sprintf("%d:%d %d", wd.Major, wd.Minor, *wd.Weight))
-}
-
-func weightleafdev(v interface{}) []byte {
- wd := v.(specs.LinuxWeightDevice)
- return []byte(fmt.Sprintf("%d:%d %d", wd.Major, wd.Minor, *wd.LeafWeight))
-}
-
-func throttleddev(v interface{}) []byte {
- td := v.(specs.LinuxThrottleDevice)
- return []byte(fmt.Sprintf("%d:%d %d", td.Major, td.Minor, td.Rate))
-}
-
-func splitBlkIOStatLine(r rune) bool {
- return r == ' ' || r == ':'
-}
-
-type deviceKey struct {
- major, minor uint64
-}
-
-// getDevices makes a best effort attempt to read all the devices into a map
-// keyed by major and minor number. Since devices may be mapped multiple times,
-// we err on taking the first occurrence.
-func getDevices(r io.Reader) (map[deviceKey]string, error) {
-
- var (
- s = bufio.NewScanner(r)
- devices = make(map[deviceKey]string)
- )
- for i := 0; s.Scan(); i++ {
- if i < 2 {
- continue
- }
- fields := strings.Fields(s.Text())
- major, err := strconv.Atoi(fields[0])
- if err != nil {
- return nil, err
- }
- minor, err := strconv.Atoi(fields[1])
- if err != nil {
- return nil, err
- }
- key := deviceKey{
- major: uint64(major),
- minor: uint64(minor),
- }
- if _, ok := devices[key]; ok {
- continue
- }
- devices[key] = filepath.Join("/dev", fields[3])
- }
- return devices, s.Err()
-}
diff --git a/vendor/github.com/containerd/cgroups/v3/cgroup1/cgroup.go b/vendor/github.com/containerd/cgroups/v3/cgroup1/cgroup.go
deleted file mode 100644
index 2a31b8041..000000000
--- a/vendor/github.com/containerd/cgroups/v3/cgroup1/cgroup.go
+++ /dev/null
@@ -1,571 +0,0 @@
-/*
- Copyright The containerd Authors.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-
-package cgroup1
-
-import (
- "errors"
- "fmt"
- "io/fs"
- "os"
- "path/filepath"
- "strconv"
- "strings"
- "sync"
- "syscall"
- "time"
-
- v1 "github.com/containerd/cgroups/v3/cgroup1/stats"
-
- "github.com/opencontainers/runtime-spec/specs-go"
-)
-
-// New returns a new control via the cgroup cgroups interface
-func New(path Path, resources *specs.LinuxResources, opts ...InitOpts) (Cgroup, error) {
- config := newInitConfig()
- for _, o := range opts {
- if err := o(config); err != nil {
- return nil, err
- }
- }
- subsystems, err := config.hiearchy()
- if err != nil {
- return nil, err
- }
- var active []Subsystem
- for _, s := range subsystems {
- // check if subsystem exists
- if err := initializeSubsystem(s, path, resources); err != nil {
- if err == ErrControllerNotActive {
- if config.InitCheck != nil {
- if skerr := config.InitCheck(s, path, err); skerr != nil {
- if skerr != ErrIgnoreSubsystem {
- return nil, skerr
- }
- }
- }
- continue
- }
- return nil, err
- }
- active = append(active, s)
- }
- return &cgroup{
- path: path,
- subsystems: active,
- }, nil
-}
-
-// Load will load an existing cgroup and allow it to be controlled
-// All static path should not include `/sys/fs/cgroup/` prefix, it should start with your own cgroups name
-func Load(path Path, opts ...InitOpts) (Cgroup, error) {
- config := newInitConfig()
- for _, o := range opts {
- if err := o(config); err != nil {
- return nil, err
- }
- }
- var activeSubsystems []Subsystem
- subsystems, err := config.hiearchy()
- if err != nil {
- return nil, err
- }
- // check that the subsystems still exist, and keep only those that actually exist
- for _, s := range pathers(subsystems) {
- p, err := path(s.Name())
- if err != nil {
- if errors.Is(err, os.ErrNotExist) {
- return nil, ErrCgroupDeleted
- }
- if err == ErrControllerNotActive {
- if config.InitCheck != nil {
- if skerr := config.InitCheck(s, path, err); skerr != nil {
- if skerr != ErrIgnoreSubsystem {
- return nil, skerr
- }
- }
- }
- continue
- }
- return nil, err
- }
- if _, err := os.Lstat(s.Path(p)); err != nil {
- if os.IsNotExist(err) {
- continue
- }
- return nil, err
- }
- activeSubsystems = append(activeSubsystems, s)
- }
- // if we do not have any active systems then the cgroup is deleted
- if len(activeSubsystems) == 0 {
- return nil, ErrCgroupDeleted
- }
- return &cgroup{
- path: path,
- subsystems: activeSubsystems,
- }, nil
-}
-
-type cgroup struct {
- path Path
-
- subsystems []Subsystem
- mu sync.Mutex
- err error
-}
-
-// New returns a new sub cgroup
-func (c *cgroup) New(name string, resources *specs.LinuxResources) (Cgroup, error) {
- c.mu.Lock()
- defer c.mu.Unlock()
- if c.err != nil {
- return nil, c.err
- }
- path := subPath(c.path, name)
- for _, s := range c.subsystems {
- if err := initializeSubsystem(s, path, resources); err != nil {
- return nil, err
- }
- }
- return &cgroup{
- path: path,
- subsystems: c.subsystems,
- }, nil
-}
-
-// Subsystems returns all the subsystems that are currently being
-// consumed by the group
-func (c *cgroup) Subsystems() []Subsystem {
- return c.subsystems
-}
-
-func (c *cgroup) subsystemsFilter(subsystems ...Name) []Subsystem {
- if len(subsystems) == 0 {
- return c.subsystems
- }
-
- var filteredSubsystems = []Subsystem{}
- for _, s := range c.subsystems {
- for _, f := range subsystems {
- if s.Name() == f {
- filteredSubsystems = append(filteredSubsystems, s)
- break
- }
- }
- }
-
- return filteredSubsystems
-}
-
-// Add moves the provided process into the new cgroup.
-// Without additional arguments, the process is added to all the cgroup subsystems.
-// When giving Add a list of subsystem names, the process is only added to those
-// subsystems, provided that they are active in the targeted cgroup.
-func (c *cgroup) Add(process Process, subsystems ...Name) error {
- return c.add(process, cgroupProcs, subsystems...)
-}
-
-// AddProc moves the provided process id into the new cgroup.
-// Without additional arguments, the process with the given id is added to all
-// the cgroup subsystems. When giving AddProc a list of subsystem names, the process
-// id is only added to those subsystems, provided that they are active in the targeted
-// cgroup.
-func (c *cgroup) AddProc(pid uint64, subsystems ...Name) error {
- return c.add(Process{Pid: int(pid)}, cgroupProcs, subsystems...)
-}
-
-// AddTask moves the provided tasks (threads) into the new cgroup.
-// Without additional arguments, the task is added to all the cgroup subsystems.
-// When giving AddTask a list of subsystem names, the task is only added to those
-// subsystems, provided that they are active in the targeted cgroup.
-func (c *cgroup) AddTask(process Process, subsystems ...Name) error {
- return c.add(process, cgroupTasks, subsystems...)
-}
-
-// writeCgroupsProcs writes to the file, but retries on EINVAL.
-func writeCgroupProcs(path string, content []byte, perm fs.FileMode) error {
- f, err := os.OpenFile(path, os.O_CREATE|os.O_WRONLY, perm)
- if err != nil {
- return err
- }
- defer f.Close()
-
- for i := 0; i < 5; i++ {
- _, err = f.Write(content)
- if err == nil {
- return nil
- }
- // If the process's associated task's state is TASK_NEW, the kernel
- // returns EINVAL. The function will retry on the error like runc.
- // https://github.com/torvalds/linux/blob/v6.0/kernel/sched/core.c#L10308-L10337
- // https://github.com/opencontainers/runc/pull/1950
- if !errors.Is(err, syscall.EINVAL) {
- return err
- }
- time.Sleep(30 * time.Millisecond)
- }
- return err
-}
-
-func (c *cgroup) add(process Process, pType procType, subsystems ...Name) error {
- if process.Pid <= 0 {
- return ErrInvalidPid
- }
- c.mu.Lock()
- defer c.mu.Unlock()
- if c.err != nil {
- return c.err
- }
- for _, s := range pathers(c.subsystemsFilter(subsystems...)) {
- p, err := c.path(s.Name())
- if err != nil {
- return err
- }
- err = writeCgroupProcs(
- filepath.Join(s.Path(p), pType),
- []byte(strconv.Itoa(process.Pid)),
- defaultFilePerm,
- )
- if err != nil {
- return err
- }
- }
- return nil
-}
-
-// Delete will remove the control group from each of the subsystems registered
-func (c *cgroup) Delete() error {
- c.mu.Lock()
- defer c.mu.Unlock()
- if c.err != nil {
- return c.err
- }
- var errs []string
- for _, s := range c.subsystems {
- // kernel prevents cgroups with running process from being removed, check the tree is empty
- procs, err := c.processes(s.Name(), true, cgroupProcs)
- if err != nil {
- return err
- }
- if len(procs) > 0 {
- errs = append(errs, fmt.Sprintf("%s (contains running processes)", string(s.Name())))
- continue
- }
- if d, ok := s.(deleter); ok {
- sp, err := c.path(s.Name())
- if err != nil {
- return err
- }
- if err := d.Delete(sp); err != nil {
- errs = append(errs, string(s.Name()))
- }
- continue
- }
- if p, ok := s.(pather); ok {
- sp, err := c.path(s.Name())
- if err != nil {
- return err
- }
- path := p.Path(sp)
- if err := remove(path); err != nil {
- errs = append(errs, path)
- }
- continue
- }
- }
- if len(errs) > 0 {
- return fmt.Errorf("cgroups: unable to remove paths %s", strings.Join(errs, ", "))
- }
- c.err = ErrCgroupDeleted
- return nil
-}
-
-// Stat returns the current metrics for the cgroup
-func (c *cgroup) Stat(handlers ...ErrorHandler) (*v1.Metrics, error) {
- c.mu.Lock()
- defer c.mu.Unlock()
- if c.err != nil {
- return nil, c.err
- }
- if len(handlers) == 0 {
- handlers = append(handlers, errPassthrough)
- }
- var (
- stats = &v1.Metrics{
- CPU: &v1.CPUStat{
- Throttling: &v1.Throttle{},
- Usage: &v1.CPUUsage{},
- },
- }
- wg = &sync.WaitGroup{}
- errs = make(chan error, len(c.subsystems))
- )
- for _, s := range c.subsystems {
- if ss, ok := s.(stater); ok {
- sp, err := c.path(s.Name())
- if err != nil {
- return nil, err
- }
- wg.Add(1)
- go func() {
- defer wg.Done()
- if err := ss.Stat(sp, stats); err != nil {
- for _, eh := range handlers {
- if herr := eh(err); herr != nil {
- errs <- herr
- }
- }
- }
- }()
- }
- }
- wg.Wait()
- close(errs)
- for err := range errs {
- return nil, err
- }
- return stats, nil
-}
-
-// Update updates the cgroup with the new resource values provided
-//
-// Be prepared to handle EBUSY when trying to update a cgroup with
-// live processes and other operations like Stats being performed at the
-// same time
-func (c *cgroup) Update(resources *specs.LinuxResources) error {
- c.mu.Lock()
- defer c.mu.Unlock()
- if c.err != nil {
- return c.err
- }
- for _, s := range c.subsystems {
- if u, ok := s.(updater); ok {
- sp, err := c.path(s.Name())
- if err != nil {
- return err
- }
- if err := u.Update(sp, resources); err != nil {
- return err
- }
- }
- }
- return nil
-}
-
-// Processes returns the processes running inside the cgroup along
-// with the subsystem used, pid, and path
-func (c *cgroup) Processes(subsystem Name, recursive bool) ([]Process, error) {
- c.mu.Lock()
- defer c.mu.Unlock()
- if c.err != nil {
- return nil, c.err
- }
- return c.processes(subsystem, recursive, cgroupProcs)
-}
-
-// Tasks returns the tasks running inside the cgroup along
-// with the subsystem used, pid, and path
-func (c *cgroup) Tasks(subsystem Name, recursive bool) ([]Task, error) {
- c.mu.Lock()
- defer c.mu.Unlock()
- if c.err != nil {
- return nil, c.err
- }
- return c.processes(subsystem, recursive, cgroupTasks)
-}
-
-func (c *cgroup) processes(subsystem Name, recursive bool, pType procType) ([]Process, error) {
- s := c.getSubsystem(subsystem)
- sp, err := c.path(subsystem)
- if err != nil {
- return nil, err
- }
- if s == nil {
- return nil, fmt.Errorf("cgroups: %s doesn't exist in %s subsystem", sp, subsystem)
- }
- path := s.(pather).Path(sp)
- var processes []Process
- err = filepath.Walk(path, func(p string, info os.FileInfo, err error) error {
- if err != nil {
- return err
- }
- if !recursive && info.IsDir() {
- if p == path {
- return nil
- }
- return filepath.SkipDir
- }
- dir, name := filepath.Split(p)
- if name != pType {
- return nil
- }
- procs, err := readPids(dir, subsystem, pType)
- if err != nil {
- return err
- }
- processes = append(processes, procs...)
- return nil
- })
- return processes, err
-}
-
-// Freeze freezes the entire cgroup and all the processes inside it
-func (c *cgroup) Freeze() error {
- c.mu.Lock()
- defer c.mu.Unlock()
- if c.err != nil {
- return c.err
- }
- s := c.getSubsystem(Freezer)
- if s == nil {
- return ErrFreezerNotSupported
- }
- sp, err := c.path(Freezer)
- if err != nil {
- return err
- }
- return s.(*freezerController).Freeze(sp)
-}
-
-// Thaw thaws out the cgroup and all the processes inside it
-func (c *cgroup) Thaw() error {
- c.mu.Lock()
- defer c.mu.Unlock()
- if c.err != nil {
- return c.err
- }
- s := c.getSubsystem(Freezer)
- if s == nil {
- return ErrFreezerNotSupported
- }
- sp, err := c.path(Freezer)
- if err != nil {
- return err
- }
- return s.(*freezerController).Thaw(sp)
-}
-
-// OOMEventFD returns the memory cgroup's out of memory event fd that triggers
-// when processes inside the cgroup receive an oom event. Returns
-// ErrMemoryNotSupported if memory cgroups is not supported.
-func (c *cgroup) OOMEventFD() (uintptr, error) {
- c.mu.Lock()
- defer c.mu.Unlock()
- if c.err != nil {
- return 0, c.err
- }
- s := c.getSubsystem(Memory)
- if s == nil {
- return 0, ErrMemoryNotSupported
- }
- sp, err := c.path(Memory)
- if err != nil {
- return 0, err
- }
- return s.(*memoryController).memoryEvent(sp, OOMEvent())
-}
-
-// RegisterMemoryEvent allows the ability to register for all v1 memory cgroups
-// notifications.
-func (c *cgroup) RegisterMemoryEvent(event MemoryEvent) (uintptr, error) {
- c.mu.Lock()
- defer c.mu.Unlock()
- if c.err != nil {
- return 0, c.err
- }
- s := c.getSubsystem(Memory)
- if s == nil {
- return 0, ErrMemoryNotSupported
- }
- sp, err := c.path(Memory)
- if err != nil {
- return 0, err
- }
- return s.(*memoryController).memoryEvent(sp, event)
-}
-
-// State returns the state of the cgroup and its processes
-func (c *cgroup) State() State {
- c.mu.Lock()
- defer c.mu.Unlock()
- c.checkExists()
- if c.err != nil && c.err == ErrCgroupDeleted {
- return Deleted
- }
- s := c.getSubsystem(Freezer)
- if s == nil {
- return Thawed
- }
- sp, err := c.path(Freezer)
- if err != nil {
- return Unknown
- }
- state, err := s.(*freezerController).state(sp)
- if err != nil {
- return Unknown
- }
- return state
-}
-
-// MoveTo does a recursive move subsystem by subsystem of all the processes
-// inside the group
-func (c *cgroup) MoveTo(destination Cgroup) error {
- c.mu.Lock()
- defer c.mu.Unlock()
- if c.err != nil {
- return c.err
- }
- for _, s := range c.subsystems {
- processes, err := c.processes(s.Name(), true, cgroupProcs)
- if err != nil {
- return err
- }
- for _, p := range processes {
- if err := destination.Add(p); err != nil {
- if strings.Contains(err.Error(), "no such process") {
- continue
- }
- return err
- }
- }
- }
- return nil
-}
-
-func (c *cgroup) getSubsystem(n Name) Subsystem {
- for _, s := range c.subsystems {
- if s.Name() == n {
- return s
- }
- }
- return nil
-}
-
-func (c *cgroup) checkExists() {
- for _, s := range pathers(c.subsystems) {
- p, err := c.path(s.Name())
- if err != nil {
- return
- }
- if _, err := os.Lstat(s.Path(p)); err != nil {
- if os.IsNotExist(err) {
- c.err = ErrCgroupDeleted
- return
- }
- }
- }
-}
diff --git a/vendor/github.com/containerd/cgroups/v3/cgroup1/control.go b/vendor/github.com/containerd/cgroups/v3/cgroup1/control.go
deleted file mode 100644
index 6cbf5323e..000000000
--- a/vendor/github.com/containerd/cgroups/v3/cgroup1/control.go
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- Copyright The containerd Authors.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-
-package cgroup1
-
-import (
- "os"
-
- v1 "github.com/containerd/cgroups/v3/cgroup1/stats"
- specs "github.com/opencontainers/runtime-spec/specs-go"
-)
-
-type procType = string
-
-const (
- cgroupProcs procType = "cgroup.procs"
- cgroupTasks procType = "tasks"
- defaultDirPerm = 0755
-)
-
-// defaultFilePerm is a var so that the test framework can change the filemode
-// of all files created when the tests are running. The difference between the
-// tests and real world use is that files like "cgroup.procs" will exist when writing
-// to a read cgroup filesystem and do not exist prior when running in the tests.
-// this is set to a non 0 value in the test code
-var defaultFilePerm = os.FileMode(0)
-
-type Process struct {
- // Subsystem is the name of the subsystem that the process / task is in.
- Subsystem Name
- // Pid is the process id of the process / task.
- Pid int
- // Path is the full path of the subsystem and location that the process / task is in.
- Path string
-}
-
-type Task = Process
-
-// Cgroup handles interactions with the individual groups to perform
-// actions on them as them main interface to this cgroup package
-type Cgroup interface {
- // New creates a new cgroup under the calling cgroup
- New(string, *specs.LinuxResources) (Cgroup, error)
- // Add adds a process to the cgroup (cgroup.procs). Without additional arguments,
- // the process is added to all the cgroup subsystems. When giving Add a list of
- // subsystem names, the process is only added to those subsystems, provided that
- // they are active in the targeted cgroup.
- Add(Process, ...Name) error
- // AddProc adds the process with the given id to the cgroup (cgroup.procs).
- // Without additional arguments, the process with the given id is added to all
- // the cgroup subsystems. When giving AddProc a list of subsystem names, the process
- // id is only added to those subsystems, provided that they are active in the targeted
- // cgroup.
- AddProc(uint64, ...Name) error
- // AddTask adds a process to the cgroup (tasks). Without additional arguments, the
- // task is added to all the cgroup subsystems. When giving AddTask a list of subsystem
- // names, the task is only added to those subsystems, provided that they are active in
- // the targeted cgroup.
- AddTask(Process, ...Name) error
- // Delete removes the cgroup as a whole
- Delete() error
- // MoveTo moves all the processes under the calling cgroup to the provided one
- // subsystems are moved one at a time
- MoveTo(Cgroup) error
- // Stat returns the stats for all subsystems in the cgroup
- Stat(...ErrorHandler) (*v1.Metrics, error)
- // Update updates all the subsystems with the provided resource changes
- Update(resources *specs.LinuxResources) error
- // Processes returns all the processes in a select subsystem for the cgroup
- Processes(Name, bool) ([]Process, error)
- // Tasks returns all the tasks in a select subsystem for the cgroup
- Tasks(Name, bool) ([]Task, error)
- // Freeze freezes or pauses all processes inside the cgroup
- Freeze() error
- // Thaw thaw or resumes all processes inside the cgroup
- Thaw() error
- // OOMEventFD returns the memory subsystem's event fd for OOM events
- OOMEventFD() (uintptr, error)
- // RegisterMemoryEvent returns the memory subsystems event fd for whatever memory event was
- // registered for. Can alternatively register for the oom event with this method.
- RegisterMemoryEvent(MemoryEvent) (uintptr, error)
- // State returns the cgroups current state
- State() State
- // Subsystems returns all the subsystems in the cgroup
- Subsystems() []Subsystem
-}
diff --git a/vendor/github.com/containerd/cgroups/v3/cgroup1/cpu.go b/vendor/github.com/containerd/cgroups/v3/cgroup1/cpu.go
deleted file mode 100644
index e02ca0d8e..000000000
--- a/vendor/github.com/containerd/cgroups/v3/cgroup1/cpu.go
+++ /dev/null
@@ -1,125 +0,0 @@
-/*
- Copyright The containerd Authors.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-
-package cgroup1
-
-import (
- "bufio"
- "os"
- "path/filepath"
- "strconv"
-
- v1 "github.com/containerd/cgroups/v3/cgroup1/stats"
- specs "github.com/opencontainers/runtime-spec/specs-go"
-)
-
-func NewCpu(root string) *cpuController {
- return &cpuController{
- root: filepath.Join(root, string(Cpu)),
- }
-}
-
-type cpuController struct {
- root string
-}
-
-func (c *cpuController) Name() Name {
- return Cpu
-}
-
-func (c *cpuController) Path(path string) string {
- return filepath.Join(c.root, path)
-}
-
-func (c *cpuController) Create(path string, resources *specs.LinuxResources) error {
- if err := os.MkdirAll(c.Path(path), defaultDirPerm); err != nil {
- return err
- }
- if cpu := resources.CPU; cpu != nil {
- for _, t := range []struct {
- name string
- ivalue *int64
- uvalue *uint64
- }{
- {
- name: "rt_period_us",
- uvalue: cpu.RealtimePeriod,
- },
- {
- name: "rt_runtime_us",
- ivalue: cpu.RealtimeRuntime,
- },
- {
- name: "shares",
- uvalue: cpu.Shares,
- },
- {
- name: "cfs_period_us",
- uvalue: cpu.Period,
- },
- {
- name: "cfs_quota_us",
- ivalue: cpu.Quota,
- },
- } {
- var value []byte
- if t.uvalue != nil {
- value = []byte(strconv.FormatUint(*t.uvalue, 10))
- } else if t.ivalue != nil {
- value = []byte(strconv.FormatInt(*t.ivalue, 10))
- }
- if value != nil {
- if err := os.WriteFile(
- filepath.Join(c.Path(path), "cpu."+t.name),
- value,
- defaultFilePerm,
- ); err != nil {
- return err
- }
- }
- }
- }
- return nil
-}
-
-func (c *cpuController) Update(path string, resources *specs.LinuxResources) error {
- return c.Create(path, resources)
-}
-
-func (c *cpuController) Stat(path string, stats *v1.Metrics) error {
- f, err := os.Open(filepath.Join(c.Path(path), "cpu.stat"))
- if err != nil {
- return err
- }
- defer f.Close()
- // get or create the cpu field because cpuacct can also set values on this struct
- sc := bufio.NewScanner(f)
- for sc.Scan() {
- key, v, err := parseKV(sc.Text())
- if err != nil {
- return err
- }
- switch key {
- case "nr_periods":
- stats.CPU.Throttling.Periods = v
- case "nr_throttled":
- stats.CPU.Throttling.ThrottledPeriods = v
- case "throttled_time":
- stats.CPU.Throttling.ThrottledTime = v
- }
- }
- return sc.Err()
-}
diff --git a/vendor/github.com/containerd/cgroups/v3/cgroup1/cpuacct.go b/vendor/github.com/containerd/cgroups/v3/cgroup1/cpuacct.go
deleted file mode 100644
index b7a3e8f6a..000000000
--- a/vendor/github.com/containerd/cgroups/v3/cgroup1/cpuacct.go
+++ /dev/null
@@ -1,129 +0,0 @@
-/*
- Copyright The containerd Authors.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-
-package cgroup1
-
-import (
- "bufio"
- "fmt"
- "os"
- "path/filepath"
- "strconv"
- "strings"
-
- v1 "github.com/containerd/cgroups/v3/cgroup1/stats"
-)
-
-const nanosecondsInSecond = 1000000000
-
-var clockTicks = getClockTicks()
-
-func NewCpuacct(root string) *cpuacctController {
- return &cpuacctController{
- root: filepath.Join(root, string(Cpuacct)),
- }
-}
-
-type cpuacctController struct {
- root string
-}
-
-func (c *cpuacctController) Name() Name {
- return Cpuacct
-}
-
-func (c *cpuacctController) Path(path string) string {
- return filepath.Join(c.root, path)
-}
-
-func (c *cpuacctController) Stat(path string, stats *v1.Metrics) error {
- user, kernel, err := c.getUsage(path)
- if err != nil {
- return err
- }
- total, err := readUint(filepath.Join(c.Path(path), "cpuacct.usage"))
- if err != nil {
- return err
- }
- percpu, err := c.percpuUsage(path)
- if err != nil {
- return err
- }
- stats.CPU.Usage.Total = total
- stats.CPU.Usage.User = user
- stats.CPU.Usage.Kernel = kernel
- stats.CPU.Usage.PerCPU = percpu
- return nil
-}
-
-func (c *cpuacctController) percpuUsage(path string) ([]uint64, error) {
- var usage []uint64
- data, err := os.ReadFile(filepath.Join(c.Path(path), "cpuacct.usage_percpu"))
- if err != nil {
- return nil, err
- }
- for _, v := range strings.Fields(string(data)) {
- u, err := strconv.ParseUint(v, 10, 64)
- if err != nil {
- return nil, err
- }
- usage = append(usage, u)
- }
- return usage, nil
-}
-
-func (c *cpuacctController) getUsage(path string) (user uint64, kernel uint64, err error) {
- statPath := filepath.Join(c.Path(path), "cpuacct.stat")
- f, err := os.Open(statPath)
- if err != nil {
- return 0, 0, err
- }
- defer f.Close()
- var (
- raw = make(map[string]uint64)
- sc = bufio.NewScanner(f)
- )
- for sc.Scan() {
- key, v, err := parseKV(sc.Text())
- if err != nil {
- return 0, 0, err
- }
- raw[key] = v
- }
- if err := sc.Err(); err != nil {
- return 0, 0, err
- }
- for _, t := range []struct {
- name string
- value *uint64
- }{
- {
- name: "user",
- value: &user,
- },
- {
- name: "system",
- value: &kernel,
- },
- } {
- v, ok := raw[t.name]
- if !ok {
- return 0, 0, fmt.Errorf("expected field %q but not found in %q", t.name, statPath)
- }
- *t.value = v
- }
- return (user * nanosecondsInSecond) / clockTicks, (kernel * nanosecondsInSecond) / clockTicks, nil
-}
diff --git a/vendor/github.com/containerd/cgroups/v3/cgroup1/cpuset.go b/vendor/github.com/containerd/cgroups/v3/cgroup1/cpuset.go
deleted file mode 100644
index 242f77ed5..000000000
--- a/vendor/github.com/containerd/cgroups/v3/cgroup1/cpuset.go
+++ /dev/null
@@ -1,158 +0,0 @@
-/*
- Copyright The containerd Authors.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-
-package cgroup1
-
-import (
- "bytes"
- "fmt"
- "os"
- "path/filepath"
-
- specs "github.com/opencontainers/runtime-spec/specs-go"
-)
-
-func NewCpuset(root string) *cpusetController {
- return &cpusetController{
- root: filepath.Join(root, string(Cpuset)),
- }
-}
-
-type cpusetController struct {
- root string
-}
-
-func (c *cpusetController) Name() Name {
- return Cpuset
-}
-
-func (c *cpusetController) Path(path string) string {
- return filepath.Join(c.root, path)
-}
-
-func (c *cpusetController) Create(path string, resources *specs.LinuxResources) error {
- if err := c.ensureParent(c.Path(path), c.root); err != nil {
- return err
- }
- if err := os.MkdirAll(c.Path(path), defaultDirPerm); err != nil {
- return err
- }
- if err := c.copyIfNeeded(c.Path(path), filepath.Dir(c.Path(path))); err != nil {
- return err
- }
- if resources.CPU != nil {
- for _, t := range []struct {
- name string
- value string
- }{
- {
- name: "cpus",
- value: resources.CPU.Cpus,
- },
- {
- name: "mems",
- value: resources.CPU.Mems,
- },
- } {
- if t.value != "" {
- if err := os.WriteFile(
- filepath.Join(c.Path(path), "cpuset."+t.name),
- []byte(t.value),
- defaultFilePerm,
- ); err != nil {
- return err
- }
- }
- }
- }
- return nil
-}
-
-func (c *cpusetController) Update(path string, resources *specs.LinuxResources) error {
- return c.Create(path, resources)
-}
-
-func (c *cpusetController) getValues(path string) (cpus []byte, mems []byte, err error) {
- if cpus, err = os.ReadFile(filepath.Join(path, "cpuset.cpus")); err != nil && !os.IsNotExist(err) {
- return
- }
- if mems, err = os.ReadFile(filepath.Join(path, "cpuset.mems")); err != nil && !os.IsNotExist(err) {
- return
- }
- return cpus, mems, nil
-}
-
-// ensureParent makes sure that the parent directory of current is created
-// and populated with the proper cpus and mems files copied from
-// it's parent.
-func (c *cpusetController) ensureParent(current, root string) error {
- parent := filepath.Dir(current)
- if _, err := filepath.Rel(root, parent); err != nil {
- return nil
- }
- // Avoid infinite recursion.
- if parent == current {
- return fmt.Errorf("cpuset: cgroup parent path outside cgroup root")
- }
- if cleanPath(parent) != root {
- if err := c.ensureParent(parent, root); err != nil {
- return err
- }
- }
- if err := os.MkdirAll(current, defaultDirPerm); err != nil {
- return err
- }
- return c.copyIfNeeded(current, parent)
-}
-
-// copyIfNeeded copies the cpuset.cpus and cpuset.mems from the parent
-// directory to the current directory if the file's contents are 0
-func (c *cpusetController) copyIfNeeded(current, parent string) error {
- var (
- err error
- currentCpus, currentMems []byte
- parentCpus, parentMems []byte
- )
- if currentCpus, currentMems, err = c.getValues(current); err != nil {
- return err
- }
- if parentCpus, parentMems, err = c.getValues(parent); err != nil {
- return err
- }
- if isEmpty(currentCpus) {
- if err := os.WriteFile(
- filepath.Join(current, "cpuset.cpus"),
- parentCpus,
- defaultFilePerm,
- ); err != nil {
- return err
- }
- }
- if isEmpty(currentMems) {
- if err := os.WriteFile(
- filepath.Join(current, "cpuset.mems"),
- parentMems,
- defaultFilePerm,
- ); err != nil {
- return err
- }
- }
- return nil
-}
-
-func isEmpty(b []byte) bool {
- return len(bytes.Trim(b, "\n")) == 0
-}
diff --git a/vendor/github.com/containerd/cgroups/v3/cgroup1/devices.go b/vendor/github.com/containerd/cgroups/v3/cgroup1/devices.go
deleted file mode 100644
index 80d76fa30..000000000
--- a/vendor/github.com/containerd/cgroups/v3/cgroup1/devices.go
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- Copyright The containerd Authors.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-
-package cgroup1
-
-import (
- "fmt"
- "os"
- "path/filepath"
-
- specs "github.com/opencontainers/runtime-spec/specs-go"
-)
-
-const (
- allowDeviceFile = "devices.allow"
- denyDeviceFile = "devices.deny"
- wildcard = -1
-)
-
-func NewDevices(root string) *devicesController {
- return &devicesController{
- root: filepath.Join(root, string(Devices)),
- }
-}
-
-type devicesController struct {
- root string
-}
-
-func (d *devicesController) Name() Name {
- return Devices
-}
-
-func (d *devicesController) Path(path string) string {
- return filepath.Join(d.root, path)
-}
-
-func (d *devicesController) Create(path string, resources *specs.LinuxResources) error {
- if err := os.MkdirAll(d.Path(path), defaultDirPerm); err != nil {
- return err
- }
- for _, device := range resources.Devices {
- file := denyDeviceFile
- if device.Allow {
- file = allowDeviceFile
- }
- if device.Type == "" {
- device.Type = "a"
- }
- if err := os.WriteFile(
- filepath.Join(d.Path(path), file),
- []byte(deviceString(device)),
- defaultFilePerm,
- ); err != nil {
- return err
- }
- }
- return nil
-}
-
-func (d *devicesController) Update(path string, resources *specs.LinuxResources) error {
- return d.Create(path, resources)
-}
-
-func deviceString(device specs.LinuxDeviceCgroup) string {
- return fmt.Sprintf("%s %s:%s %s",
- device.Type,
- deviceNumber(device.Major),
- deviceNumber(device.Minor),
- device.Access,
- )
-}
-
-func deviceNumber(number *int64) string {
- if number == nil || *number == wildcard {
- return "*"
- }
- return fmt.Sprint(*number)
-}
diff --git a/vendor/github.com/containerd/cgroups/v3/cgroup1/errors.go b/vendor/github.com/containerd/cgroups/v3/cgroup1/errors.go
deleted file mode 100644
index d3ff6fbd1..000000000
--- a/vendor/github.com/containerd/cgroups/v3/cgroup1/errors.go
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- Copyright The containerd Authors.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-
-package cgroup1
-
-import (
- "errors"
- "os"
-)
-
-var (
- ErrInvalidPid = errors.New("cgroups: pid must be greater than 0")
- ErrMountPointNotExist = errors.New("cgroups: cgroup mountpoint does not exist")
- ErrInvalidFormat = errors.New("cgroups: parsing file with invalid format failed")
- ErrFreezerNotSupported = errors.New("cgroups: freezer cgroup not supported on this system")
- ErrMemoryNotSupported = errors.New("cgroups: memory cgroup not supported on this system")
- ErrCgroupDeleted = errors.New("cgroups: cgroup deleted")
- ErrNoCgroupMountDestination = errors.New("cgroups: cannot find cgroup mount destination")
-)
-
-// ErrorHandler is a function that handles and acts on errors
-type ErrorHandler func(err error) error
-
-// IgnoreNotExist ignores any errors that are for not existing files
-func IgnoreNotExist(err error) error {
- if os.IsNotExist(err) {
- return nil
- }
- return err
-}
-
-func errPassthrough(err error) error {
- return err
-}
diff --git a/vendor/github.com/containerd/cgroups/v3/cgroup1/freezer.go b/vendor/github.com/containerd/cgroups/v3/cgroup1/freezer.go
deleted file mode 100644
index 05d9f6c27..000000000
--- a/vendor/github.com/containerd/cgroups/v3/cgroup1/freezer.go
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- Copyright The containerd Authors.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-
-package cgroup1
-
-import (
- "os"
- "path/filepath"
- "strings"
- "time"
-)
-
-func NewFreezer(root string) *freezerController {
- return &freezerController{
- root: filepath.Join(root, string(Freezer)),
- }
-}
-
-type freezerController struct {
- root string
-}
-
-func (f *freezerController) Name() Name {
- return Freezer
-}
-
-func (f *freezerController) Path(path string) string {
- return filepath.Join(f.root, path)
-}
-
-func (f *freezerController) Freeze(path string) error {
- return f.waitState(path, Frozen)
-}
-
-func (f *freezerController) Thaw(path string) error {
- return f.waitState(path, Thawed)
-}
-
-func (f *freezerController) changeState(path string, state State) error {
- return os.WriteFile(
- filepath.Join(f.root, path, "freezer.state"),
- []byte(strings.ToUpper(string(state))),
- defaultFilePerm,
- )
-}
-
-func (f *freezerController) state(path string) (State, error) {
- current, err := os.ReadFile(filepath.Join(f.root, path, "freezer.state"))
- if err != nil {
- return "", err
- }
- return State(strings.ToLower(strings.TrimSpace(string(current)))), nil
-}
-
-func (f *freezerController) waitState(path string, state State) error {
- for {
- if err := f.changeState(path, state); err != nil {
- return err
- }
- current, err := f.state(path)
- if err != nil {
- return err
- }
- if current == state {
- return nil
- }
- time.Sleep(1 * time.Millisecond)
- }
-}
diff --git a/vendor/github.com/containerd/cgroups/v3/cgroup1/hierarchy.go b/vendor/github.com/containerd/cgroups/v3/cgroup1/hierarchy.go
deleted file mode 100644
index 1af9aa6be..000000000
--- a/vendor/github.com/containerd/cgroups/v3/cgroup1/hierarchy.go
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- Copyright The containerd Authors.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-
-package cgroup1
-
-// Hierarchy enables both unified and split hierarchy for cgroups
-type Hierarchy func() ([]Subsystem, error)
diff --git a/vendor/github.com/containerd/cgroups/v3/cgroup1/hugetlb.go b/vendor/github.com/containerd/cgroups/v3/cgroup1/hugetlb.go
deleted file mode 100644
index 75519d9da..000000000
--- a/vendor/github.com/containerd/cgroups/v3/cgroup1/hugetlb.go
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
- Copyright The containerd Authors.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-
-package cgroup1
-
-import (
- "os"
- "path/filepath"
- "strconv"
- "strings"
-
- v1 "github.com/containerd/cgroups/v3/cgroup1/stats"
- specs "github.com/opencontainers/runtime-spec/specs-go"
-)
-
-func NewHugetlb(root string) (*hugetlbController, error) {
- sizes, err := hugePageSizes()
- if err != nil {
- return nil, err
- }
-
- return &hugetlbController{
- root: filepath.Join(root, string(Hugetlb)),
- sizes: sizes,
- }, nil
-}
-
-type hugetlbController struct {
- root string
- sizes []string
-}
-
-func (h *hugetlbController) Name() Name {
- return Hugetlb
-}
-
-func (h *hugetlbController) Path(path string) string {
- return filepath.Join(h.root, path)
-}
-
-func (h *hugetlbController) Create(path string, resources *specs.LinuxResources) error {
- if err := os.MkdirAll(h.Path(path), defaultDirPerm); err != nil {
- return err
- }
- for _, limit := range resources.HugepageLimits {
- if err := os.WriteFile(
- filepath.Join(h.Path(path), strings.Join([]string{"hugetlb", limit.Pagesize, "limit_in_bytes"}, ".")),
- []byte(strconv.FormatUint(limit.Limit, 10)),
- defaultFilePerm,
- ); err != nil {
- return err
- }
- }
- return nil
-}
-
-func (h *hugetlbController) Stat(path string, stats *v1.Metrics) error {
- for _, size := range h.sizes {
- s, err := h.readSizeStat(path, size)
- if err != nil {
- return err
- }
- stats.Hugetlb = append(stats.Hugetlb, s)
- }
- return nil
-}
-
-func (h *hugetlbController) readSizeStat(path, size string) (*v1.HugetlbStat, error) {
- s := v1.HugetlbStat{
- Pagesize: size,
- }
- for _, t := range []struct {
- name string
- value *uint64
- }{
- {
- name: "usage_in_bytes",
- value: &s.Usage,
- },
- {
- name: "max_usage_in_bytes",
- value: &s.Max,
- },
- {
- name: "failcnt",
- value: &s.Failcnt,
- },
- } {
- v, err := readUint(filepath.Join(h.Path(path), strings.Join([]string{"hugetlb", size, t.name}, ".")))
- if err != nil {
- return nil, err
- }
- *t.value = v
- }
- return &s, nil
-}
diff --git a/vendor/github.com/containerd/cgroups/v3/cgroup1/memory.go b/vendor/github.com/containerd/cgroups/v3/cgroup1/memory.go
deleted file mode 100644
index e84ec2b3c..000000000
--- a/vendor/github.com/containerd/cgroups/v3/cgroup1/memory.go
+++ /dev/null
@@ -1,480 +0,0 @@
-/*
- Copyright The containerd Authors.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-
-package cgroup1
-
-import (
- "bufio"
- "fmt"
- "io"
- "os"
- "path/filepath"
- "strconv"
- "strings"
-
- v1 "github.com/containerd/cgroups/v3/cgroup1/stats"
- specs "github.com/opencontainers/runtime-spec/specs-go"
- "golang.org/x/sys/unix"
-)
-
-// MemoryEvent is an interface that V1 memory Cgroup notifications implement. Arg returns the
-// file name whose fd should be written to "cgroups.event_control". EventFile returns the name of
-// the file that supports the notification api e.g. "memory.usage_in_bytes".
-type MemoryEvent interface {
- Arg() string
- EventFile() string
-}
-
-type memoryThresholdEvent struct {
- threshold uint64
- swap bool
-}
-
-// MemoryThresholdEvent returns a new [MemoryEvent] representing the memory threshold set.
-// If swap is true, the event will be registered using memory.memsw.usage_in_bytes
-func MemoryThresholdEvent(threshold uint64, swap bool) MemoryEvent {
- return &memoryThresholdEvent{
- threshold,
- swap,
- }
-}
-
-func (m *memoryThresholdEvent) Arg() string {
- return strconv.FormatUint(m.threshold, 10)
-}
-
-func (m *memoryThresholdEvent) EventFile() string {
- if m.swap {
- return "memory.memsw.usage_in_bytes"
- }
- return "memory.usage_in_bytes"
-}
-
-type oomEvent struct{}
-
-// OOMEvent returns a new oom event to be used with RegisterMemoryEvent.
-func OOMEvent() MemoryEvent {
- return &oomEvent{}
-}
-
-func (oom *oomEvent) Arg() string {
- return ""
-}
-
-func (oom *oomEvent) EventFile() string {
- return "memory.oom_control"
-}
-
-type memoryPressureEvent struct {
- pressureLevel MemoryPressureLevel
- hierarchy EventNotificationMode
-}
-
-// MemoryPressureEvent returns a new [MemoryEvent] representing the memory pressure set.
-func MemoryPressureEvent(pressureLevel MemoryPressureLevel, hierarchy EventNotificationMode) MemoryEvent {
- return &memoryPressureEvent{
- pressureLevel,
- hierarchy,
- }
-}
-
-func (m *memoryPressureEvent) Arg() string {
- return string(m.pressureLevel) + "," + string(m.hierarchy)
-}
-
-func (m *memoryPressureEvent) EventFile() string {
- return "memory.pressure_level"
-}
-
-// MemoryPressureLevel corresponds to the memory pressure levels defined
-// for memory cgroups.
-type MemoryPressureLevel string
-
-// The three memory pressure levels are as follows.
-// - The "low" level means that the system is reclaiming memory for new
-// allocations. Monitoring this reclaiming activity might be useful for
-// maintaining cache level. Upon notification, the program (typically
-// "Activity Manager") might analyze vmstat and act in advance (i.e.
-// prematurely shutdown unimportant services).
-// - The "medium" level means that the system is experiencing medium memory
-// pressure, the system might be making swap, paging out active file caches,
-// etc. Upon this event applications may decide to further analyze
-// vmstat/zoneinfo/memcg or internal memory usage statistics and free any
-// resources that can be easily reconstructed or re-read from a disk.
-// - The "critical" level means that the system is actively thrashing, it is
-// about to out of memory (OOM) or even the in-kernel OOM killer is on its
-// way to trigger. Applications should do whatever they can to help the
-// system. It might be too late to consult with vmstat or any other
-// statistics, so it is advisable to take an immediate action.
-// "https://www.kernel.org/doc/Documentation/cgroup-v1/memory.txt" Section 11
-const (
- LowPressure MemoryPressureLevel = "low"
- MediumPressure MemoryPressureLevel = "medium"
- CriticalPressure MemoryPressureLevel = "critical"
-)
-
-// EventNotificationMode corresponds to the notification modes
-// for the memory cgroups pressure level notifications.
-type EventNotificationMode string
-
-// There are three optional modes that specify different propagation behavior:
-// - "default": this is the default behavior specified above. This mode is the
-// same as omitting the optional mode parameter, preserved by backwards
-// compatibility.
-// - "hierarchy": events always propagate up to the root, similar to the default
-// behavior, except that propagation continues regardless of whether there are
-// event listeners at each level, with the "hierarchy" mode. In the above
-// example, groups A, B, and C will receive notification of memory pressure.
-// - "local": events are pass-through, i.e. they only receive notifications when
-// memory pressure is experienced in the memcg for which the notification is
-// registered. In the above example, group C will receive notification if
-// registered for "local" notification and the group experiences memory
-// pressure. However, group B will never receive notification, regardless if
-// there is an event listener for group C or not, if group B is registered for
-// local notification.
-// "https://www.kernel.org/doc/Documentation/cgroup-v1/memory.txt" Section 11
-const (
- DefaultMode EventNotificationMode = "default"
- LocalMode EventNotificationMode = "local"
- HierarchyMode EventNotificationMode = "hierarchy"
-)
-
-// NewMemory returns a Memory controller given the root folder of cgroups.
-// It may optionally accept other configuration options, such as IgnoreModules(...)
-func NewMemory(root string, options ...func(*memoryController)) *memoryController {
- mc := &memoryController{
- root: filepath.Join(root, string(Memory)),
- ignored: map[string]struct{}{},
- }
- for _, opt := range options {
- opt(mc)
- }
- return mc
-}
-
-// IgnoreModules configure the memory controller to not read memory metrics for some
-// module names (e.g. passing "memsw" would avoid all the memory.memsw.* entries)
-func IgnoreModules(names ...string) func(*memoryController) {
- return func(mc *memoryController) {
- for _, name := range names {
- mc.ignored[name] = struct{}{}
- }
- }
-}
-
-// OptionalSwap allows the memory controller to not fail if cgroups is not accounting
-// Swap memory (there are no memory.memsw.* entries)
-func OptionalSwap() func(*memoryController) {
- return func(mc *memoryController) {
- _, err := os.Stat(filepath.Join(mc.root, "memory.memsw.usage_in_bytes"))
- if os.IsNotExist(err) {
- mc.ignored["memsw"] = struct{}{}
- }
- }
-}
-
-type memoryController struct {
- root string
- ignored map[string]struct{}
-}
-
-func (m *memoryController) Name() Name {
- return Memory
-}
-
-func (m *memoryController) Path(path string) string {
- return filepath.Join(m.root, path)
-}
-
-func (m *memoryController) Create(path string, resources *specs.LinuxResources) error {
- if err := os.MkdirAll(m.Path(path), defaultDirPerm); err != nil {
- return err
- }
- if resources.Memory == nil {
- return nil
- }
- return m.set(path, getMemorySettings(resources))
-}
-
-func (m *memoryController) Update(path string, resources *specs.LinuxResources) error {
- if resources.Memory == nil {
- return nil
- }
- g := func(v *int64) bool {
- return v != nil && *v > 0
- }
- settings := getMemorySettings(resources)
- if g(resources.Memory.Limit) && g(resources.Memory.Swap) {
- // if the updated swap value is larger than the current memory limit set the swap changes first
- // then set the memory limit as swap must always be larger than the current limit
- current, err := readUint(filepath.Join(m.Path(path), "memory.limit_in_bytes"))
- if err != nil {
- return err
- }
- if current < uint64(*resources.Memory.Swap) {
- settings[0], settings[1] = settings[1], settings[0]
- }
- }
- return m.set(path, settings)
-}
-
-func (m *memoryController) Stat(path string, stats *v1.Metrics) error {
- fMemStat, err := os.Open(filepath.Join(m.Path(path), "memory.stat"))
- if err != nil {
- return err
- }
- defer fMemStat.Close()
- stats.Memory = &v1.MemoryStat{
- Usage: &v1.MemoryEntry{},
- Swap: &v1.MemoryEntry{},
- Kernel: &v1.MemoryEntry{},
- KernelTCP: &v1.MemoryEntry{},
- }
- if err := m.parseStats(fMemStat, stats.Memory); err != nil {
- return err
- }
-
- fMemOomControl, err := os.Open(filepath.Join(m.Path(path), "memory.oom_control"))
- if err != nil {
- return err
- }
- defer fMemOomControl.Close()
- stats.MemoryOomControl = &v1.MemoryOomControl{}
- if err := m.parseOomControlStats(fMemOomControl, stats.MemoryOomControl); err != nil {
- return err
- }
- for _, t := range []struct {
- module string
- entry *v1.MemoryEntry
- }{
- {
- module: "",
- entry: stats.Memory.Usage,
- },
- {
- module: "memsw",
- entry: stats.Memory.Swap,
- },
- {
- module: "kmem",
- entry: stats.Memory.Kernel,
- },
- {
- module: "kmem.tcp",
- entry: stats.Memory.KernelTCP,
- },
- } {
- if _, ok := m.ignored[t.module]; ok {
- continue
- }
- for _, tt := range []struct {
- name string
- value *uint64
- }{
- {
- name: "usage_in_bytes",
- value: &t.entry.Usage,
- },
- {
- name: "max_usage_in_bytes",
- value: &t.entry.Max,
- },
- {
- name: "failcnt",
- value: &t.entry.Failcnt,
- },
- {
- name: "limit_in_bytes",
- value: &t.entry.Limit,
- },
- } {
- parts := []string{"memory"}
- if t.module != "" {
- parts = append(parts, t.module)
- }
- parts = append(parts, tt.name)
- v, err := readUint(filepath.Join(m.Path(path), strings.Join(parts, ".")))
- if err != nil {
- return err
- }
- *tt.value = v
- }
- }
- return nil
-}
-
-func (m *memoryController) parseStats(r io.Reader, stat *v1.MemoryStat) error {
- var (
- raw = make(map[string]uint64)
- sc = bufio.NewScanner(r)
- line int
- )
- for sc.Scan() {
- key, v, err := parseKV(sc.Text())
- if err != nil {
- return fmt.Errorf("%d: %v", line, err)
- }
- raw[key] = v
- line++
- }
- if err := sc.Err(); err != nil {
- return err
- }
- stat.Cache = raw["cache"]
- stat.RSS = raw["rss"]
- stat.RSSHuge = raw["rss_huge"]
- stat.MappedFile = raw["mapped_file"]
- stat.Dirty = raw["dirty"]
- stat.Writeback = raw["writeback"]
- stat.PgPgIn = raw["pgpgin"]
- stat.PgPgOut = raw["pgpgout"]
- stat.PgFault = raw["pgfault"]
- stat.PgMajFault = raw["pgmajfault"]
- stat.InactiveAnon = raw["inactive_anon"]
- stat.ActiveAnon = raw["active_anon"]
- stat.InactiveFile = raw["inactive_file"]
- stat.ActiveFile = raw["active_file"]
- stat.Unevictable = raw["unevictable"]
- stat.HierarchicalMemoryLimit = raw["hierarchical_memory_limit"]
- stat.HierarchicalSwapLimit = raw["hierarchical_memsw_limit"]
- stat.TotalCache = raw["total_cache"]
- stat.TotalRSS = raw["total_rss"]
- stat.TotalRSSHuge = raw["total_rss_huge"]
- stat.TotalMappedFile = raw["total_mapped_file"]
- stat.TotalDirty = raw["total_dirty"]
- stat.TotalWriteback = raw["total_writeback"]
- stat.TotalPgPgIn = raw["total_pgpgin"]
- stat.TotalPgPgOut = raw["total_pgpgout"]
- stat.TotalPgFault = raw["total_pgfault"]
- stat.TotalPgMajFault = raw["total_pgmajfault"]
- stat.TotalInactiveAnon = raw["total_inactive_anon"]
- stat.TotalActiveAnon = raw["total_active_anon"]
- stat.TotalInactiveFile = raw["total_inactive_file"]
- stat.TotalActiveFile = raw["total_active_file"]
- stat.TotalUnevictable = raw["total_unevictable"]
- return nil
-}
-
-func (m *memoryController) parseOomControlStats(r io.Reader, stat *v1.MemoryOomControl) error {
- var (
- raw = make(map[string]uint64)
- sc = bufio.NewScanner(r)
- line int
- )
- for sc.Scan() {
- key, v, err := parseKV(sc.Text())
- if err != nil {
- return fmt.Errorf("%d: %v", line, err)
- }
- raw[key] = v
- line++
- }
- if err := sc.Err(); err != nil {
- return err
- }
- stat.OomKillDisable = raw["oom_kill_disable"]
- stat.UnderOom = raw["under_oom"]
- stat.OomKill = raw["oom_kill"]
- return nil
-}
-
-func (m *memoryController) set(path string, settings []memorySettings) error {
- for _, t := range settings {
- if t.value != nil {
- if err := os.WriteFile(
- filepath.Join(m.Path(path), "memory."+t.name),
- []byte(strconv.FormatInt(*t.value, 10)),
- defaultFilePerm,
- ); err != nil {
- return err
- }
- }
- }
- return nil
-}
-
-type memorySettings struct {
- name string
- value *int64
-}
-
-func getMemorySettings(resources *specs.LinuxResources) []memorySettings {
- mem := resources.Memory
- var swappiness *int64
- if mem.Swappiness != nil {
- v := int64(*mem.Swappiness)
- swappiness = &v
- }
- return []memorySettings{
- {
- name: "limit_in_bytes",
- value: mem.Limit,
- },
- {
- name: "soft_limit_in_bytes",
- value: mem.Reservation,
- },
- {
- name: "memsw.limit_in_bytes",
- value: mem.Swap,
- },
- {
- name: "kmem.limit_in_bytes",
- value: mem.Kernel,
- },
- {
- name: "kmem.tcp.limit_in_bytes",
- value: mem.KernelTCP,
- },
- {
- name: "oom_control",
- value: getOomControlValue(mem),
- },
- {
- name: "swappiness",
- value: swappiness,
- },
- }
-}
-
-func getOomControlValue(mem *specs.LinuxMemory) *int64 {
- if mem.DisableOOMKiller != nil && *mem.DisableOOMKiller {
- i := int64(1)
- return &i
- }
- return nil
-}
-
-func (m *memoryController) memoryEvent(path string, event MemoryEvent) (uintptr, error) {
- root := m.Path(path)
- efd, err := unix.Eventfd(0, unix.EFD_CLOEXEC)
- if err != nil {
- return 0, err
- }
- evtFile, err := os.Open(filepath.Join(root, event.EventFile()))
- if err != nil {
- unix.Close(efd)
- return 0, err
- }
- defer evtFile.Close()
- data := fmt.Sprintf("%d %d %s", efd, evtFile.Fd(), event.Arg())
- evctlPath := filepath.Join(root, "cgroup.event_control")
- if err := os.WriteFile(evctlPath, []byte(data), 0700); err != nil {
- unix.Close(efd)
- return 0, err
- }
- return uintptr(efd), nil
-}
diff --git a/vendor/github.com/containerd/cgroups/v3/cgroup1/named.go b/vendor/github.com/containerd/cgroups/v3/cgroup1/named.go
deleted file mode 100644
index 95bda388e..000000000
--- a/vendor/github.com/containerd/cgroups/v3/cgroup1/named.go
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- Copyright The containerd Authors.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-
-package cgroup1
-
-import "path/filepath"
-
-func NewNamed(root string, name Name) *namedController {
- return &namedController{
- root: root,
- name: name,
- }
-}
-
-type namedController struct {
- root string
- name Name
-}
-
-func (n *namedController) Name() Name {
- return n.name
-}
-
-func (n *namedController) Path(path string) string {
- return filepath.Join(n.root, string(n.name), path)
-}
diff --git a/vendor/github.com/containerd/cgroups/v3/cgroup1/net_cls.go b/vendor/github.com/containerd/cgroups/v3/cgroup1/net_cls.go
deleted file mode 100644
index 22b3c95bb..000000000
--- a/vendor/github.com/containerd/cgroups/v3/cgroup1/net_cls.go
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- Copyright The containerd Authors.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-
-package cgroup1
-
-import (
- "os"
- "path/filepath"
- "strconv"
-
- specs "github.com/opencontainers/runtime-spec/specs-go"
-)
-
-func NewNetCls(root string) *netclsController {
- return &netclsController{
- root: filepath.Join(root, string(NetCLS)),
- }
-}
-
-type netclsController struct {
- root string
-}
-
-func (n *netclsController) Name() Name {
- return NetCLS
-}
-
-func (n *netclsController) Path(path string) string {
- return filepath.Join(n.root, path)
-}
-
-func (n *netclsController) Create(path string, resources *specs.LinuxResources) error {
- if err := os.MkdirAll(n.Path(path), defaultDirPerm); err != nil {
- return err
- }
- if resources.Network != nil && resources.Network.ClassID != nil && *resources.Network.ClassID > 0 {
- return os.WriteFile(
- filepath.Join(n.Path(path), "net_cls.classid"),
- []byte(strconv.FormatUint(uint64(*resources.Network.ClassID), 10)),
- defaultFilePerm,
- )
- }
- return nil
-}
-
-func (n *netclsController) Update(path string, resources *specs.LinuxResources) error {
- return n.Create(path, resources)
-}
diff --git a/vendor/github.com/containerd/cgroups/v3/cgroup1/net_prio.go b/vendor/github.com/containerd/cgroups/v3/cgroup1/net_prio.go
deleted file mode 100644
index 0936442b9..000000000
--- a/vendor/github.com/containerd/cgroups/v3/cgroup1/net_prio.go
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- Copyright The containerd Authors.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-
-package cgroup1
-
-import (
- "fmt"
- "os"
- "path/filepath"
-
- specs "github.com/opencontainers/runtime-spec/specs-go"
-)
-
-func NewNetPrio(root string) *netprioController {
- return &netprioController{
- root: filepath.Join(root, string(NetPrio)),
- }
-}
-
-type netprioController struct {
- root string
-}
-
-func (n *netprioController) Name() Name {
- return NetPrio
-}
-
-func (n *netprioController) Path(path string) string {
- return filepath.Join(n.root, path)
-}
-
-func (n *netprioController) Create(path string, resources *specs.LinuxResources) error {
- if err := os.MkdirAll(n.Path(path), defaultDirPerm); err != nil {
- return err
- }
- if resources.Network != nil {
- for _, prio := range resources.Network.Priorities {
- if err := os.WriteFile(
- filepath.Join(n.Path(path), "net_prio.ifpriomap"),
- formatPrio(prio.Name, prio.Priority),
- defaultFilePerm,
- ); err != nil {
- return err
- }
- }
- }
- return nil
-}
-
-func formatPrio(name string, prio uint32) []byte {
- return []byte(fmt.Sprintf("%s %d", name, prio))
-}
diff --git a/vendor/github.com/containerd/cgroups/v3/cgroup1/opts.go b/vendor/github.com/containerd/cgroups/v3/cgroup1/opts.go
deleted file mode 100644
index 187e0f5ea..000000000
--- a/vendor/github.com/containerd/cgroups/v3/cgroup1/opts.go
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- Copyright The containerd Authors.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-
-package cgroup1
-
-import (
- "errors"
-)
-
-var (
- // ErrIgnoreSubsystem allows the specific subsystem to be skipped
- ErrIgnoreSubsystem = errors.New("skip subsystem")
- // ErrDevicesRequired is returned when the devices subsystem is required but
- // does not exist or is not active
- ErrDevicesRequired = errors.New("devices subsystem is required")
-)
-
-// InitOpts allows configuration for the creation or loading of a cgroup
-type InitOpts func(*InitConfig) error
-
-// InitConfig provides configuration options for the creation
-// or loading of a cgroup and its subsystems
-type InitConfig struct {
- // InitCheck can be used to check initialization errors from the subsystem
- InitCheck InitCheck
- hiearchy Hierarchy
-}
-
-func newInitConfig() *InitConfig {
- return &InitConfig{
- InitCheck: RequireDevices,
- hiearchy: Default,
- }
-}
-
-// InitCheck allows subsystems errors to be checked when initialized or loaded
-type InitCheck func(Subsystem, Path, error) error
-
-// AllowAny allows any subsystem errors to be skipped
-func AllowAny(_ Subsystem, _ Path, _ error) error {
- return ErrIgnoreSubsystem
-}
-
-// RequireDevices requires the device subsystem but no others
-func RequireDevices(s Subsystem, _ Path, _ error) error {
- if s.Name() == Devices {
- return ErrDevicesRequired
- }
- return ErrIgnoreSubsystem
-}
-
-// WithHiearchy sets a list of cgroup subsystems.
-// The default list is coming from /proc/self/mountinfo.
-func WithHiearchy(h Hierarchy) InitOpts {
- return func(c *InitConfig) error {
- c.hiearchy = h
- return nil
- }
-}
diff --git a/vendor/github.com/containerd/cgroups/v3/cgroup1/paths.go b/vendor/github.com/containerd/cgroups/v3/cgroup1/paths.go
deleted file mode 100644
index 54de9a18e..000000000
--- a/vendor/github.com/containerd/cgroups/v3/cgroup1/paths.go
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- Copyright The containerd Authors.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-
-package cgroup1
-
-import (
- "errors"
- "fmt"
- "path/filepath"
-)
-
-type Path func(subsystem Name) (string, error)
-
-func RootPath(subsystem Name) (string, error) {
- return "/", nil
-}
-
-// StaticPath returns a static path to use for all cgroups
-func StaticPath(path string) Path {
- return func(_ Name) (string, error) {
- return path, nil
- }
-}
-
-// NestedPath will nest the cgroups based on the calling processes cgroup
-// placing its child processes inside its own path
-func NestedPath(suffix string) Path {
- paths, err := ParseCgroupFile("/proc/self/cgroup")
- if err != nil {
- return errorPath(err)
- }
- return existingPath(paths, suffix)
-}
-
-// PidPath will return the correct cgroup paths for an existing process running inside a cgroup
-// This is commonly used for the Load function to restore an existing container
-func PidPath(pid int) Path {
- p := fmt.Sprintf("/proc/%d/cgroup", pid)
- paths, err := ParseCgroupFile(p)
- if err != nil {
- return errorPath(fmt.Errorf("parse cgroup file %s: %w", p, err))
- }
- return existingPath(paths, "")
-}
-
-// ErrControllerNotActive is returned when a controller is not supported or enabled
-var ErrControllerNotActive = errors.New("controller is not supported")
-
-func existingPath(paths map[string]string, suffix string) Path {
- // localize the paths based on the root mount dest for nested cgroups
- for n, p := range paths {
- dest, err := getCgroupDestination(n)
- if err != nil {
- return errorPath(err)
- }
- rel, err := filepath.Rel(dest, p)
- if err != nil {
- return errorPath(err)
- }
- if rel == "." {
- rel = dest
- }
- paths[n] = filepath.Join("/", rel)
- }
- return func(name Name) (string, error) {
- root, ok := paths[string(name)]
- if !ok {
- if root, ok = paths["name="+string(name)]; !ok {
- return "", ErrControllerNotActive
- }
- }
- if suffix != "" {
- return filepath.Join(root, suffix), nil
- }
- return root, nil
- }
-}
-
-func subPath(path Path, subName string) Path {
- return func(name Name) (string, error) {
- p, err := path(name)
- if err != nil {
- return "", err
- }
- return filepath.Join(p, subName), nil
- }
-}
-
-func errorPath(err error) Path {
- return func(_ Name) (string, error) {
- return "", err
- }
-}
diff --git a/vendor/github.com/containerd/cgroups/v3/cgroup1/perf_event.go b/vendor/github.com/containerd/cgroups/v3/cgroup1/perf_event.go
deleted file mode 100644
index 4bd6d7e23..000000000
--- a/vendor/github.com/containerd/cgroups/v3/cgroup1/perf_event.go
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- Copyright The containerd Authors.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-
-package cgroup1
-
-import "path/filepath"
-
-func NewPerfEvent(root string) *PerfEventController {
- return &PerfEventController{
- root: filepath.Join(root, string(PerfEvent)),
- }
-}
-
-type PerfEventController struct {
- root string
-}
-
-func (p *PerfEventController) Name() Name {
- return PerfEvent
-}
-
-func (p *PerfEventController) Path(path string) string {
- return filepath.Join(p.root, path)
-}
diff --git a/vendor/github.com/containerd/cgroups/v3/cgroup1/pids.go b/vendor/github.com/containerd/cgroups/v3/cgroup1/pids.go
deleted file mode 100644
index 9b5b263af..000000000
--- a/vendor/github.com/containerd/cgroups/v3/cgroup1/pids.go
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- Copyright The containerd Authors.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-
-package cgroup1
-
-import (
- "os"
- "path/filepath"
- "strconv"
- "strings"
-
- v1 "github.com/containerd/cgroups/v3/cgroup1/stats"
- specs "github.com/opencontainers/runtime-spec/specs-go"
-)
-
-func NewPids(root string) *pidsController {
- return &pidsController{
- root: filepath.Join(root, string(Pids)),
- }
-}
-
-type pidsController struct {
- root string
-}
-
-func (p *pidsController) Name() Name {
- return Pids
-}
-
-func (p *pidsController) Path(path string) string {
- return filepath.Join(p.root, path)
-}
-
-func (p *pidsController) Create(path string, resources *specs.LinuxResources) error {
- if err := os.MkdirAll(p.Path(path), defaultDirPerm); err != nil {
- return err
- }
- if resources.Pids != nil && resources.Pids.Limit > 0 {
- return os.WriteFile(
- filepath.Join(p.Path(path), "pids.max"),
- []byte(strconv.FormatInt(resources.Pids.Limit, 10)),
- defaultFilePerm,
- )
- }
- return nil
-}
-
-func (p *pidsController) Update(path string, resources *specs.LinuxResources) error {
- return p.Create(path, resources)
-}
-
-func (p *pidsController) Stat(path string, stats *v1.Metrics) error {
- current, err := readUint(filepath.Join(p.Path(path), "pids.current"))
- if err != nil {
- return err
- }
- var max uint64
- maxData, err := os.ReadFile(filepath.Join(p.Path(path), "pids.max"))
- if err != nil {
- return err
- }
- if maxS := strings.TrimSpace(string(maxData)); maxS != "max" {
- if max, err = parseUint(maxS, 10, 64); err != nil {
- return err
- }
- }
- stats.Pids = &v1.PidsStat{
- Current: current,
- Limit: max,
- }
- return nil
-}
diff --git a/vendor/github.com/containerd/cgroups/v3/cgroup1/rdma.go b/vendor/github.com/containerd/cgroups/v3/cgroup1/rdma.go
deleted file mode 100644
index 99299070c..000000000
--- a/vendor/github.com/containerd/cgroups/v3/cgroup1/rdma.go
+++ /dev/null
@@ -1,154 +0,0 @@
-/*
- Copyright The containerd Authors.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-
-package cgroup1
-
-import (
- "math"
- "os"
- "path/filepath"
- "strconv"
- "strings"
-
- v1 "github.com/containerd/cgroups/v3/cgroup1/stats"
- specs "github.com/opencontainers/runtime-spec/specs-go"
-)
-
-type rdmaController struct {
- root string
-}
-
-func (p *rdmaController) Name() Name {
- return Rdma
-}
-
-func (p *rdmaController) Path(path string) string {
- return filepath.Join(p.root, path)
-}
-
-func NewRdma(root string) *rdmaController {
- return &rdmaController{
- root: filepath.Join(root, string(Rdma)),
- }
-}
-
-func createCmdString(device string, limits *specs.LinuxRdma) string {
- var cmdString string
-
- cmdString = device
- if limits.HcaHandles != nil {
- cmdString = cmdString + " " + "hca_handle=" + strconv.FormatUint(uint64(*limits.HcaHandles), 10)
- }
-
- if limits.HcaObjects != nil {
- cmdString = cmdString + " " + "hca_object=" + strconv.FormatUint(uint64(*limits.HcaObjects), 10)
- }
- return cmdString
-}
-
-func (p *rdmaController) Create(path string, resources *specs.LinuxResources) error {
- if err := os.MkdirAll(p.Path(path), defaultDirPerm); err != nil {
- return err
- }
-
- for device, limit := range resources.Rdma {
- if device != "" && (limit.HcaHandles != nil || limit.HcaObjects != nil) {
- limit := limit
- return os.WriteFile(
- filepath.Join(p.Path(path), "rdma.max"),
- []byte(createCmdString(device, &limit)),
- defaultFilePerm,
- )
- }
- }
- return nil
-}
-
-func (p *rdmaController) Update(path string, resources *specs.LinuxResources) error {
- return p.Create(path, resources)
-}
-
-func parseRdmaKV(raw string, entry *v1.RdmaEntry) {
- var value uint64
- var err error
-
- parts := strings.Split(raw, "=")
- switch len(parts) {
- case 2:
- if parts[1] == "max" {
- value = math.MaxUint32
- } else {
- value, err = parseUint(parts[1], 10, 32)
- if err != nil {
- return
- }
- }
- if parts[0] == "hca_handle" {
- entry.HcaHandles = uint32(value)
- } else if parts[0] == "hca_object" {
- entry.HcaObjects = uint32(value)
- }
- }
-}
-
-func toRdmaEntry(strEntries []string) []*v1.RdmaEntry {
- var rdmaEntries []*v1.RdmaEntry
- for i := range strEntries {
- parts := strings.Fields(strEntries[i])
- switch len(parts) {
- case 3:
- entry := new(v1.RdmaEntry)
- entry.Device = parts[0]
- parseRdmaKV(parts[1], entry)
- parseRdmaKV(parts[2], entry)
-
- rdmaEntries = append(rdmaEntries, entry)
- default:
- continue
- }
- }
- return rdmaEntries
-}
-
-func (p *rdmaController) Stat(path string, stats *v1.Metrics) error {
-
- currentData, err := os.ReadFile(filepath.Join(p.Path(path), "rdma.current"))
- if err != nil {
- return err
- }
- currentPerDevices := strings.Split(string(currentData), "\n")
-
- maxData, err := os.ReadFile(filepath.Join(p.Path(path), "rdma.max"))
- if err != nil {
- return err
- }
- maxPerDevices := strings.Split(string(maxData), "\n")
-
- // If device got removed between reading two files, ignore returning
- // stats.
- if len(currentPerDevices) != len(maxPerDevices) {
- return nil
- }
-
- currentEntries := toRdmaEntry(currentPerDevices)
- maxEntries := toRdmaEntry(maxPerDevices)
-
- stats.Rdma = &v1.RdmaStat{
- Current: currentEntries,
- Limit: maxEntries,
- }
- return nil
-}
diff --git a/vendor/github.com/containerd/cgroups/v3/cgroup1/state.go b/vendor/github.com/containerd/cgroups/v3/cgroup1/state.go
deleted file mode 100644
index 6ea81cccc..000000000
--- a/vendor/github.com/containerd/cgroups/v3/cgroup1/state.go
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- Copyright The containerd Authors.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-
-package cgroup1
-
-// State is a type that represents the state of the current cgroup
-type State string
-
-const (
- Unknown State = ""
- Thawed State = "thawed"
- Frozen State = "frozen"
- Freezing State = "freezing"
- Deleted State = "deleted"
-)
diff --git a/vendor/github.com/containerd/cgroups/v3/cgroup1/stats/doc.go b/vendor/github.com/containerd/cgroups/v3/cgroup1/stats/doc.go
deleted file mode 100644
index e51e12f80..000000000
--- a/vendor/github.com/containerd/cgroups/v3/cgroup1/stats/doc.go
+++ /dev/null
@@ -1,17 +0,0 @@
-/*
- Copyright The containerd Authors.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-
-package stats
diff --git a/vendor/github.com/containerd/cgroups/v3/cgroup1/stats/metrics.pb.go b/vendor/github.com/containerd/cgroups/v3/cgroup1/stats/metrics.pb.go
deleted file mode 100644
index 75206889b..000000000
--- a/vendor/github.com/containerd/cgroups/v3/cgroup1/stats/metrics.pb.go
+++ /dev/null
@@ -1,1959 +0,0 @@
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// versions:
-// protoc-gen-go v1.28.1
-// protoc v3.21.5
-// source: github.com/containerd/cgroups/cgroup1/stats/metrics.proto
-
-package stats
-
-import (
- protoreflect "google.golang.org/protobuf/reflect/protoreflect"
- protoimpl "google.golang.org/protobuf/runtime/protoimpl"
- reflect "reflect"
- sync "sync"
-)
-
-const (
- // Verify that this generated code is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
- // Verify that runtime/protoimpl is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
-)
-
-type Metrics struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Hugetlb []*HugetlbStat `protobuf:"bytes,1,rep,name=hugetlb,proto3" json:"hugetlb,omitempty"`
- Pids *PidsStat `protobuf:"bytes,2,opt,name=pids,proto3" json:"pids,omitempty"`
- CPU *CPUStat `protobuf:"bytes,3,opt,name=cpu,proto3" json:"cpu,omitempty"`
- Memory *MemoryStat `protobuf:"bytes,4,opt,name=memory,proto3" json:"memory,omitempty"`
- Blkio *BlkIOStat `protobuf:"bytes,5,opt,name=blkio,proto3" json:"blkio,omitempty"`
- Rdma *RdmaStat `protobuf:"bytes,6,opt,name=rdma,proto3" json:"rdma,omitempty"`
- Network []*NetworkStat `protobuf:"bytes,7,rep,name=network,proto3" json:"network,omitempty"`
- CgroupStats *CgroupStats `protobuf:"bytes,8,opt,name=cgroup_stats,json=cgroupStats,proto3" json:"cgroup_stats,omitempty"`
- MemoryOomControl *MemoryOomControl `protobuf:"bytes,9,opt,name=memory_oom_control,json=memoryOomControl,proto3" json:"memory_oom_control,omitempty"`
-}
-
-func (x *Metrics) Reset() {
- *x = Metrics{}
- if protoimpl.UnsafeEnabled {
- mi := &file_github_com_containerd_cgroups_cgroup1_stats_metrics_proto_msgTypes[0]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Metrics) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Metrics) ProtoMessage() {}
-
-func (x *Metrics) ProtoReflect() protoreflect.Message {
- mi := &file_github_com_containerd_cgroups_cgroup1_stats_metrics_proto_msgTypes[0]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Metrics.ProtoReflect.Descriptor instead.
-func (*Metrics) Descriptor() ([]byte, []int) {
- return file_github_com_containerd_cgroups_cgroup1_stats_metrics_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *Metrics) GetHugetlb() []*HugetlbStat {
- if x != nil {
- return x.Hugetlb
- }
- return nil
-}
-
-func (x *Metrics) GetPids() *PidsStat {
- if x != nil {
- return x.Pids
- }
- return nil
-}
-
-func (x *Metrics) GetCPU() *CPUStat {
- if x != nil {
- return x.CPU
- }
- return nil
-}
-
-func (x *Metrics) GetMemory() *MemoryStat {
- if x != nil {
- return x.Memory
- }
- return nil
-}
-
-func (x *Metrics) GetBlkio() *BlkIOStat {
- if x != nil {
- return x.Blkio
- }
- return nil
-}
-
-func (x *Metrics) GetRdma() *RdmaStat {
- if x != nil {
- return x.Rdma
- }
- return nil
-}
-
-func (x *Metrics) GetNetwork() []*NetworkStat {
- if x != nil {
- return x.Network
- }
- return nil
-}
-
-func (x *Metrics) GetCgroupStats() *CgroupStats {
- if x != nil {
- return x.CgroupStats
- }
- return nil
-}
-
-func (x *Metrics) GetMemoryOomControl() *MemoryOomControl {
- if x != nil {
- return x.MemoryOomControl
- }
- return nil
-}
-
-type HugetlbStat struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Usage uint64 `protobuf:"varint,1,opt,name=usage,proto3" json:"usage,omitempty"`
- Max uint64 `protobuf:"varint,2,opt,name=max,proto3" json:"max,omitempty"`
- Failcnt uint64 `protobuf:"varint,3,opt,name=failcnt,proto3" json:"failcnt,omitempty"`
- Pagesize string `protobuf:"bytes,4,opt,name=pagesize,proto3" json:"pagesize,omitempty"`
-}
-
-func (x *HugetlbStat) Reset() {
- *x = HugetlbStat{}
- if protoimpl.UnsafeEnabled {
- mi := &file_github_com_containerd_cgroups_cgroup1_stats_metrics_proto_msgTypes[1]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *HugetlbStat) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*HugetlbStat) ProtoMessage() {}
-
-func (x *HugetlbStat) ProtoReflect() protoreflect.Message {
- mi := &file_github_com_containerd_cgroups_cgroup1_stats_metrics_proto_msgTypes[1]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use HugetlbStat.ProtoReflect.Descriptor instead.
-func (*HugetlbStat) Descriptor() ([]byte, []int) {
- return file_github_com_containerd_cgroups_cgroup1_stats_metrics_proto_rawDescGZIP(), []int{1}
-}
-
-func (x *HugetlbStat) GetUsage() uint64 {
- if x != nil {
- return x.Usage
- }
- return 0
-}
-
-func (x *HugetlbStat) GetMax() uint64 {
- if x != nil {
- return x.Max
- }
- return 0
-}
-
-func (x *HugetlbStat) GetFailcnt() uint64 {
- if x != nil {
- return x.Failcnt
- }
- return 0
-}
-
-func (x *HugetlbStat) GetPagesize() string {
- if x != nil {
- return x.Pagesize
- }
- return ""
-}
-
-type PidsStat struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Current uint64 `protobuf:"varint,1,opt,name=current,proto3" json:"current,omitempty"`
- Limit uint64 `protobuf:"varint,2,opt,name=limit,proto3" json:"limit,omitempty"`
-}
-
-func (x *PidsStat) Reset() {
- *x = PidsStat{}
- if protoimpl.UnsafeEnabled {
- mi := &file_github_com_containerd_cgroups_cgroup1_stats_metrics_proto_msgTypes[2]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *PidsStat) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*PidsStat) ProtoMessage() {}
-
-func (x *PidsStat) ProtoReflect() protoreflect.Message {
- mi := &file_github_com_containerd_cgroups_cgroup1_stats_metrics_proto_msgTypes[2]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use PidsStat.ProtoReflect.Descriptor instead.
-func (*PidsStat) Descriptor() ([]byte, []int) {
- return file_github_com_containerd_cgroups_cgroup1_stats_metrics_proto_rawDescGZIP(), []int{2}
-}
-
-func (x *PidsStat) GetCurrent() uint64 {
- if x != nil {
- return x.Current
- }
- return 0
-}
-
-func (x *PidsStat) GetLimit() uint64 {
- if x != nil {
- return x.Limit
- }
- return 0
-}
-
-type CPUStat struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Usage *CPUUsage `protobuf:"bytes,1,opt,name=usage,proto3" json:"usage,omitempty"`
- Throttling *Throttle `protobuf:"bytes,2,opt,name=throttling,proto3" json:"throttling,omitempty"`
-}
-
-func (x *CPUStat) Reset() {
- *x = CPUStat{}
- if protoimpl.UnsafeEnabled {
- mi := &file_github_com_containerd_cgroups_cgroup1_stats_metrics_proto_msgTypes[3]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *CPUStat) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*CPUStat) ProtoMessage() {}
-
-func (x *CPUStat) ProtoReflect() protoreflect.Message {
- mi := &file_github_com_containerd_cgroups_cgroup1_stats_metrics_proto_msgTypes[3]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use CPUStat.ProtoReflect.Descriptor instead.
-func (*CPUStat) Descriptor() ([]byte, []int) {
- return file_github_com_containerd_cgroups_cgroup1_stats_metrics_proto_rawDescGZIP(), []int{3}
-}
-
-func (x *CPUStat) GetUsage() *CPUUsage {
- if x != nil {
- return x.Usage
- }
- return nil
-}
-
-func (x *CPUStat) GetThrottling() *Throttle {
- if x != nil {
- return x.Throttling
- }
- return nil
-}
-
-type CPUUsage struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // values in nanoseconds
- Total uint64 `protobuf:"varint,1,opt,name=total,proto3" json:"total,omitempty"`
- Kernel uint64 `protobuf:"varint,2,opt,name=kernel,proto3" json:"kernel,omitempty"`
- User uint64 `protobuf:"varint,3,opt,name=user,proto3" json:"user,omitempty"`
- PerCPU []uint64 `protobuf:"varint,4,rep,packed,name=per_cpu,json=perCpu,proto3" json:"per_cpu,omitempty"`
-}
-
-func (x *CPUUsage) Reset() {
- *x = CPUUsage{}
- if protoimpl.UnsafeEnabled {
- mi := &file_github_com_containerd_cgroups_cgroup1_stats_metrics_proto_msgTypes[4]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *CPUUsage) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*CPUUsage) ProtoMessage() {}
-
-func (x *CPUUsage) ProtoReflect() protoreflect.Message {
- mi := &file_github_com_containerd_cgroups_cgroup1_stats_metrics_proto_msgTypes[4]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use CPUUsage.ProtoReflect.Descriptor instead.
-func (*CPUUsage) Descriptor() ([]byte, []int) {
- return file_github_com_containerd_cgroups_cgroup1_stats_metrics_proto_rawDescGZIP(), []int{4}
-}
-
-func (x *CPUUsage) GetTotal() uint64 {
- if x != nil {
- return x.Total
- }
- return 0
-}
-
-func (x *CPUUsage) GetKernel() uint64 {
- if x != nil {
- return x.Kernel
- }
- return 0
-}
-
-func (x *CPUUsage) GetUser() uint64 {
- if x != nil {
- return x.User
- }
- return 0
-}
-
-func (x *CPUUsage) GetPerCPU() []uint64 {
- if x != nil {
- return x.PerCPU
- }
- return nil
-}
-
-type Throttle struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Periods uint64 `protobuf:"varint,1,opt,name=periods,proto3" json:"periods,omitempty"`
- ThrottledPeriods uint64 `protobuf:"varint,2,opt,name=throttled_periods,json=throttledPeriods,proto3" json:"throttled_periods,omitempty"`
- ThrottledTime uint64 `protobuf:"varint,3,opt,name=throttled_time,json=throttledTime,proto3" json:"throttled_time,omitempty"`
-}
-
-func (x *Throttle) Reset() {
- *x = Throttle{}
- if protoimpl.UnsafeEnabled {
- mi := &file_github_com_containerd_cgroups_cgroup1_stats_metrics_proto_msgTypes[5]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Throttle) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Throttle) ProtoMessage() {}
-
-func (x *Throttle) ProtoReflect() protoreflect.Message {
- mi := &file_github_com_containerd_cgroups_cgroup1_stats_metrics_proto_msgTypes[5]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Throttle.ProtoReflect.Descriptor instead.
-func (*Throttle) Descriptor() ([]byte, []int) {
- return file_github_com_containerd_cgroups_cgroup1_stats_metrics_proto_rawDescGZIP(), []int{5}
-}
-
-func (x *Throttle) GetPeriods() uint64 {
- if x != nil {
- return x.Periods
- }
- return 0
-}
-
-func (x *Throttle) GetThrottledPeriods() uint64 {
- if x != nil {
- return x.ThrottledPeriods
- }
- return 0
-}
-
-func (x *Throttle) GetThrottledTime() uint64 {
- if x != nil {
- return x.ThrottledTime
- }
- return 0
-}
-
-type MemoryStat struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Cache uint64 `protobuf:"varint,1,opt,name=cache,proto3" json:"cache,omitempty"`
- RSS uint64 `protobuf:"varint,2,opt,name=rss,proto3" json:"rss,omitempty"`
- RSSHuge uint64 `protobuf:"varint,3,opt,name=rss_huge,json=rssHuge,proto3" json:"rss_huge,omitempty"`
- MappedFile uint64 `protobuf:"varint,4,opt,name=mapped_file,json=mappedFile,proto3" json:"mapped_file,omitempty"`
- Dirty uint64 `protobuf:"varint,5,opt,name=dirty,proto3" json:"dirty,omitempty"`
- Writeback uint64 `protobuf:"varint,6,opt,name=writeback,proto3" json:"writeback,omitempty"`
- PgPgIn uint64 `protobuf:"varint,7,opt,name=pg_pg_in,json=pgPgIn,proto3" json:"pg_pg_in,omitempty"`
- PgPgOut uint64 `protobuf:"varint,8,opt,name=pg_pg_out,json=pgPgOut,proto3" json:"pg_pg_out,omitempty"`
- PgFault uint64 `protobuf:"varint,9,opt,name=pg_fault,json=pgFault,proto3" json:"pg_fault,omitempty"`
- PgMajFault uint64 `protobuf:"varint,10,opt,name=pg_maj_fault,json=pgMajFault,proto3" json:"pg_maj_fault,omitempty"`
- InactiveAnon uint64 `protobuf:"varint,11,opt,name=inactive_anon,json=inactiveAnon,proto3" json:"inactive_anon,omitempty"`
- ActiveAnon uint64 `protobuf:"varint,12,opt,name=active_anon,json=activeAnon,proto3" json:"active_anon,omitempty"`
- InactiveFile uint64 `protobuf:"varint,13,opt,name=inactive_file,json=inactiveFile,proto3" json:"inactive_file,omitempty"`
- ActiveFile uint64 `protobuf:"varint,14,opt,name=active_file,json=activeFile,proto3" json:"active_file,omitempty"`
- Unevictable uint64 `protobuf:"varint,15,opt,name=unevictable,proto3" json:"unevictable,omitempty"`
- HierarchicalMemoryLimit uint64 `protobuf:"varint,16,opt,name=hierarchical_memory_limit,json=hierarchicalMemoryLimit,proto3" json:"hierarchical_memory_limit,omitempty"`
- HierarchicalSwapLimit uint64 `protobuf:"varint,17,opt,name=hierarchical_swap_limit,json=hierarchicalSwapLimit,proto3" json:"hierarchical_swap_limit,omitempty"`
- TotalCache uint64 `protobuf:"varint,18,opt,name=total_cache,json=totalCache,proto3" json:"total_cache,omitempty"`
- TotalRSS uint64 `protobuf:"varint,19,opt,name=total_rss,json=totalRss,proto3" json:"total_rss,omitempty"`
- TotalRSSHuge uint64 `protobuf:"varint,20,opt,name=total_rss_huge,json=totalRssHuge,proto3" json:"total_rss_huge,omitempty"`
- TotalMappedFile uint64 `protobuf:"varint,21,opt,name=total_mapped_file,json=totalMappedFile,proto3" json:"total_mapped_file,omitempty"`
- TotalDirty uint64 `protobuf:"varint,22,opt,name=total_dirty,json=totalDirty,proto3" json:"total_dirty,omitempty"`
- TotalWriteback uint64 `protobuf:"varint,23,opt,name=total_writeback,json=totalWriteback,proto3" json:"total_writeback,omitempty"`
- TotalPgPgIn uint64 `protobuf:"varint,24,opt,name=total_pg_pg_in,json=totalPgPgIn,proto3" json:"total_pg_pg_in,omitempty"`
- TotalPgPgOut uint64 `protobuf:"varint,25,opt,name=total_pg_pg_out,json=totalPgPgOut,proto3" json:"total_pg_pg_out,omitempty"`
- TotalPgFault uint64 `protobuf:"varint,26,opt,name=total_pg_fault,json=totalPgFault,proto3" json:"total_pg_fault,omitempty"`
- TotalPgMajFault uint64 `protobuf:"varint,27,opt,name=total_pg_maj_fault,json=totalPgMajFault,proto3" json:"total_pg_maj_fault,omitempty"`
- TotalInactiveAnon uint64 `protobuf:"varint,28,opt,name=total_inactive_anon,json=totalInactiveAnon,proto3" json:"total_inactive_anon,omitempty"`
- TotalActiveAnon uint64 `protobuf:"varint,29,opt,name=total_active_anon,json=totalActiveAnon,proto3" json:"total_active_anon,omitempty"`
- TotalInactiveFile uint64 `protobuf:"varint,30,opt,name=total_inactive_file,json=totalInactiveFile,proto3" json:"total_inactive_file,omitempty"`
- TotalActiveFile uint64 `protobuf:"varint,31,opt,name=total_active_file,json=totalActiveFile,proto3" json:"total_active_file,omitempty"`
- TotalUnevictable uint64 `protobuf:"varint,32,opt,name=total_unevictable,json=totalUnevictable,proto3" json:"total_unevictable,omitempty"`
- Usage *MemoryEntry `protobuf:"bytes,33,opt,name=usage,proto3" json:"usage,omitempty"`
- Swap *MemoryEntry `protobuf:"bytes,34,opt,name=swap,proto3" json:"swap,omitempty"`
- Kernel *MemoryEntry `protobuf:"bytes,35,opt,name=kernel,proto3" json:"kernel,omitempty"`
- KernelTCP *MemoryEntry `protobuf:"bytes,36,opt,name=kernel_tcp,json=kernelTcp,proto3" json:"kernel_tcp,omitempty"`
-}
-
-func (x *MemoryStat) Reset() {
- *x = MemoryStat{}
- if protoimpl.UnsafeEnabled {
- mi := &file_github_com_containerd_cgroups_cgroup1_stats_metrics_proto_msgTypes[6]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *MemoryStat) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*MemoryStat) ProtoMessage() {}
-
-func (x *MemoryStat) ProtoReflect() protoreflect.Message {
- mi := &file_github_com_containerd_cgroups_cgroup1_stats_metrics_proto_msgTypes[6]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use MemoryStat.ProtoReflect.Descriptor instead.
-func (*MemoryStat) Descriptor() ([]byte, []int) {
- return file_github_com_containerd_cgroups_cgroup1_stats_metrics_proto_rawDescGZIP(), []int{6}
-}
-
-func (x *MemoryStat) GetCache() uint64 {
- if x != nil {
- return x.Cache
- }
- return 0
-}
-
-func (x *MemoryStat) GetRSS() uint64 {
- if x != nil {
- return x.RSS
- }
- return 0
-}
-
-func (x *MemoryStat) GetRSSHuge() uint64 {
- if x != nil {
- return x.RSSHuge
- }
- return 0
-}
-
-func (x *MemoryStat) GetMappedFile() uint64 {
- if x != nil {
- return x.MappedFile
- }
- return 0
-}
-
-func (x *MemoryStat) GetDirty() uint64 {
- if x != nil {
- return x.Dirty
- }
- return 0
-}
-
-func (x *MemoryStat) GetWriteback() uint64 {
- if x != nil {
- return x.Writeback
- }
- return 0
-}
-
-func (x *MemoryStat) GetPgPgIn() uint64 {
- if x != nil {
- return x.PgPgIn
- }
- return 0
-}
-
-func (x *MemoryStat) GetPgPgOut() uint64 {
- if x != nil {
- return x.PgPgOut
- }
- return 0
-}
-
-func (x *MemoryStat) GetPgFault() uint64 {
- if x != nil {
- return x.PgFault
- }
- return 0
-}
-
-func (x *MemoryStat) GetPgMajFault() uint64 {
- if x != nil {
- return x.PgMajFault
- }
- return 0
-}
-
-func (x *MemoryStat) GetInactiveAnon() uint64 {
- if x != nil {
- return x.InactiveAnon
- }
- return 0
-}
-
-func (x *MemoryStat) GetActiveAnon() uint64 {
- if x != nil {
- return x.ActiveAnon
- }
- return 0
-}
-
-func (x *MemoryStat) GetInactiveFile() uint64 {
- if x != nil {
- return x.InactiveFile
- }
- return 0
-}
-
-func (x *MemoryStat) GetActiveFile() uint64 {
- if x != nil {
- return x.ActiveFile
- }
- return 0
-}
-
-func (x *MemoryStat) GetUnevictable() uint64 {
- if x != nil {
- return x.Unevictable
- }
- return 0
-}
-
-func (x *MemoryStat) GetHierarchicalMemoryLimit() uint64 {
- if x != nil {
- return x.HierarchicalMemoryLimit
- }
- return 0
-}
-
-func (x *MemoryStat) GetHierarchicalSwapLimit() uint64 {
- if x != nil {
- return x.HierarchicalSwapLimit
- }
- return 0
-}
-
-func (x *MemoryStat) GetTotalCache() uint64 {
- if x != nil {
- return x.TotalCache
- }
- return 0
-}
-
-func (x *MemoryStat) GetTotalRSS() uint64 {
- if x != nil {
- return x.TotalRSS
- }
- return 0
-}
-
-func (x *MemoryStat) GetTotalRSSHuge() uint64 {
- if x != nil {
- return x.TotalRSSHuge
- }
- return 0
-}
-
-func (x *MemoryStat) GetTotalMappedFile() uint64 {
- if x != nil {
- return x.TotalMappedFile
- }
- return 0
-}
-
-func (x *MemoryStat) GetTotalDirty() uint64 {
- if x != nil {
- return x.TotalDirty
- }
- return 0
-}
-
-func (x *MemoryStat) GetTotalWriteback() uint64 {
- if x != nil {
- return x.TotalWriteback
- }
- return 0
-}
-
-func (x *MemoryStat) GetTotalPgPgIn() uint64 {
- if x != nil {
- return x.TotalPgPgIn
- }
- return 0
-}
-
-func (x *MemoryStat) GetTotalPgPgOut() uint64 {
- if x != nil {
- return x.TotalPgPgOut
- }
- return 0
-}
-
-func (x *MemoryStat) GetTotalPgFault() uint64 {
- if x != nil {
- return x.TotalPgFault
- }
- return 0
-}
-
-func (x *MemoryStat) GetTotalPgMajFault() uint64 {
- if x != nil {
- return x.TotalPgMajFault
- }
- return 0
-}
-
-func (x *MemoryStat) GetTotalInactiveAnon() uint64 {
- if x != nil {
- return x.TotalInactiveAnon
- }
- return 0
-}
-
-func (x *MemoryStat) GetTotalActiveAnon() uint64 {
- if x != nil {
- return x.TotalActiveAnon
- }
- return 0
-}
-
-func (x *MemoryStat) GetTotalInactiveFile() uint64 {
- if x != nil {
- return x.TotalInactiveFile
- }
- return 0
-}
-
-func (x *MemoryStat) GetTotalActiveFile() uint64 {
- if x != nil {
- return x.TotalActiveFile
- }
- return 0
-}
-
-func (x *MemoryStat) GetTotalUnevictable() uint64 {
- if x != nil {
- return x.TotalUnevictable
- }
- return 0
-}
-
-func (x *MemoryStat) GetUsage() *MemoryEntry {
- if x != nil {
- return x.Usage
- }
- return nil
-}
-
-func (x *MemoryStat) GetSwap() *MemoryEntry {
- if x != nil {
- return x.Swap
- }
- return nil
-}
-
-func (x *MemoryStat) GetKernel() *MemoryEntry {
- if x != nil {
- return x.Kernel
- }
- return nil
-}
-
-func (x *MemoryStat) GetKernelTCP() *MemoryEntry {
- if x != nil {
- return x.KernelTCP
- }
- return nil
-}
-
-type MemoryEntry struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Limit uint64 `protobuf:"varint,1,opt,name=limit,proto3" json:"limit,omitempty"`
- Usage uint64 `protobuf:"varint,2,opt,name=usage,proto3" json:"usage,omitempty"`
- Max uint64 `protobuf:"varint,3,opt,name=max,proto3" json:"max,omitempty"`
- Failcnt uint64 `protobuf:"varint,4,opt,name=failcnt,proto3" json:"failcnt,omitempty"`
-}
-
-func (x *MemoryEntry) Reset() {
- *x = MemoryEntry{}
- if protoimpl.UnsafeEnabled {
- mi := &file_github_com_containerd_cgroups_cgroup1_stats_metrics_proto_msgTypes[7]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *MemoryEntry) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*MemoryEntry) ProtoMessage() {}
-
-func (x *MemoryEntry) ProtoReflect() protoreflect.Message {
- mi := &file_github_com_containerd_cgroups_cgroup1_stats_metrics_proto_msgTypes[7]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use MemoryEntry.ProtoReflect.Descriptor instead.
-func (*MemoryEntry) Descriptor() ([]byte, []int) {
- return file_github_com_containerd_cgroups_cgroup1_stats_metrics_proto_rawDescGZIP(), []int{7}
-}
-
-func (x *MemoryEntry) GetLimit() uint64 {
- if x != nil {
- return x.Limit
- }
- return 0
-}
-
-func (x *MemoryEntry) GetUsage() uint64 {
- if x != nil {
- return x.Usage
- }
- return 0
-}
-
-func (x *MemoryEntry) GetMax() uint64 {
- if x != nil {
- return x.Max
- }
- return 0
-}
-
-func (x *MemoryEntry) GetFailcnt() uint64 {
- if x != nil {
- return x.Failcnt
- }
- return 0
-}
-
-type MemoryOomControl struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- OomKillDisable uint64 `protobuf:"varint,1,opt,name=oom_kill_disable,json=oomKillDisable,proto3" json:"oom_kill_disable,omitempty"`
- UnderOom uint64 `protobuf:"varint,2,opt,name=under_oom,json=underOom,proto3" json:"under_oom,omitempty"`
- OomKill uint64 `protobuf:"varint,3,opt,name=oom_kill,json=oomKill,proto3" json:"oom_kill,omitempty"`
-}
-
-func (x *MemoryOomControl) Reset() {
- *x = MemoryOomControl{}
- if protoimpl.UnsafeEnabled {
- mi := &file_github_com_containerd_cgroups_cgroup1_stats_metrics_proto_msgTypes[8]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *MemoryOomControl) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*MemoryOomControl) ProtoMessage() {}
-
-func (x *MemoryOomControl) ProtoReflect() protoreflect.Message {
- mi := &file_github_com_containerd_cgroups_cgroup1_stats_metrics_proto_msgTypes[8]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use MemoryOomControl.ProtoReflect.Descriptor instead.
-func (*MemoryOomControl) Descriptor() ([]byte, []int) {
- return file_github_com_containerd_cgroups_cgroup1_stats_metrics_proto_rawDescGZIP(), []int{8}
-}
-
-func (x *MemoryOomControl) GetOomKillDisable() uint64 {
- if x != nil {
- return x.OomKillDisable
- }
- return 0
-}
-
-func (x *MemoryOomControl) GetUnderOom() uint64 {
- if x != nil {
- return x.UnderOom
- }
- return 0
-}
-
-func (x *MemoryOomControl) GetOomKill() uint64 {
- if x != nil {
- return x.OomKill
- }
- return 0
-}
-
-type BlkIOStat struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- IoServiceBytesRecursive []*BlkIOEntry `protobuf:"bytes,1,rep,name=io_service_bytes_recursive,json=ioServiceBytesRecursive,proto3" json:"io_service_bytes_recursive,omitempty"`
- IoServicedRecursive []*BlkIOEntry `protobuf:"bytes,2,rep,name=io_serviced_recursive,json=ioServicedRecursive,proto3" json:"io_serviced_recursive,omitempty"`
- IoQueuedRecursive []*BlkIOEntry `protobuf:"bytes,3,rep,name=io_queued_recursive,json=ioQueuedRecursive,proto3" json:"io_queued_recursive,omitempty"`
- IoServiceTimeRecursive []*BlkIOEntry `protobuf:"bytes,4,rep,name=io_service_time_recursive,json=ioServiceTimeRecursive,proto3" json:"io_service_time_recursive,omitempty"`
- IoWaitTimeRecursive []*BlkIOEntry `protobuf:"bytes,5,rep,name=io_wait_time_recursive,json=ioWaitTimeRecursive,proto3" json:"io_wait_time_recursive,omitempty"`
- IoMergedRecursive []*BlkIOEntry `protobuf:"bytes,6,rep,name=io_merged_recursive,json=ioMergedRecursive,proto3" json:"io_merged_recursive,omitempty"`
- IoTimeRecursive []*BlkIOEntry `protobuf:"bytes,7,rep,name=io_time_recursive,json=ioTimeRecursive,proto3" json:"io_time_recursive,omitempty"`
- SectorsRecursive []*BlkIOEntry `protobuf:"bytes,8,rep,name=sectors_recursive,json=sectorsRecursive,proto3" json:"sectors_recursive,omitempty"`
-}
-
-func (x *BlkIOStat) Reset() {
- *x = BlkIOStat{}
- if protoimpl.UnsafeEnabled {
- mi := &file_github_com_containerd_cgroups_cgroup1_stats_metrics_proto_msgTypes[9]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *BlkIOStat) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*BlkIOStat) ProtoMessage() {}
-
-func (x *BlkIOStat) ProtoReflect() protoreflect.Message {
- mi := &file_github_com_containerd_cgroups_cgroup1_stats_metrics_proto_msgTypes[9]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use BlkIOStat.ProtoReflect.Descriptor instead.
-func (*BlkIOStat) Descriptor() ([]byte, []int) {
- return file_github_com_containerd_cgroups_cgroup1_stats_metrics_proto_rawDescGZIP(), []int{9}
-}
-
-func (x *BlkIOStat) GetIoServiceBytesRecursive() []*BlkIOEntry {
- if x != nil {
- return x.IoServiceBytesRecursive
- }
- return nil
-}
-
-func (x *BlkIOStat) GetIoServicedRecursive() []*BlkIOEntry {
- if x != nil {
- return x.IoServicedRecursive
- }
- return nil
-}
-
-func (x *BlkIOStat) GetIoQueuedRecursive() []*BlkIOEntry {
- if x != nil {
- return x.IoQueuedRecursive
- }
- return nil
-}
-
-func (x *BlkIOStat) GetIoServiceTimeRecursive() []*BlkIOEntry {
- if x != nil {
- return x.IoServiceTimeRecursive
- }
- return nil
-}
-
-func (x *BlkIOStat) GetIoWaitTimeRecursive() []*BlkIOEntry {
- if x != nil {
- return x.IoWaitTimeRecursive
- }
- return nil
-}
-
-func (x *BlkIOStat) GetIoMergedRecursive() []*BlkIOEntry {
- if x != nil {
- return x.IoMergedRecursive
- }
- return nil
-}
-
-func (x *BlkIOStat) GetIoTimeRecursive() []*BlkIOEntry {
- if x != nil {
- return x.IoTimeRecursive
- }
- return nil
-}
-
-func (x *BlkIOStat) GetSectorsRecursive() []*BlkIOEntry {
- if x != nil {
- return x.SectorsRecursive
- }
- return nil
-}
-
-type BlkIOEntry struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Op string `protobuf:"bytes,1,opt,name=op,proto3" json:"op,omitempty"`
- Device string `protobuf:"bytes,2,opt,name=device,proto3" json:"device,omitempty"`
- Major uint64 `protobuf:"varint,3,opt,name=major,proto3" json:"major,omitempty"`
- Minor uint64 `protobuf:"varint,4,opt,name=minor,proto3" json:"minor,omitempty"`
- Value uint64 `protobuf:"varint,5,opt,name=value,proto3" json:"value,omitempty"`
-}
-
-func (x *BlkIOEntry) Reset() {
- *x = BlkIOEntry{}
- if protoimpl.UnsafeEnabled {
- mi := &file_github_com_containerd_cgroups_cgroup1_stats_metrics_proto_msgTypes[10]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *BlkIOEntry) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*BlkIOEntry) ProtoMessage() {}
-
-func (x *BlkIOEntry) ProtoReflect() protoreflect.Message {
- mi := &file_github_com_containerd_cgroups_cgroup1_stats_metrics_proto_msgTypes[10]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use BlkIOEntry.ProtoReflect.Descriptor instead.
-func (*BlkIOEntry) Descriptor() ([]byte, []int) {
- return file_github_com_containerd_cgroups_cgroup1_stats_metrics_proto_rawDescGZIP(), []int{10}
-}
-
-func (x *BlkIOEntry) GetOp() string {
- if x != nil {
- return x.Op
- }
- return ""
-}
-
-func (x *BlkIOEntry) GetDevice() string {
- if x != nil {
- return x.Device
- }
- return ""
-}
-
-func (x *BlkIOEntry) GetMajor() uint64 {
- if x != nil {
- return x.Major
- }
- return 0
-}
-
-func (x *BlkIOEntry) GetMinor() uint64 {
- if x != nil {
- return x.Minor
- }
- return 0
-}
-
-func (x *BlkIOEntry) GetValue() uint64 {
- if x != nil {
- return x.Value
- }
- return 0
-}
-
-type RdmaStat struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Current []*RdmaEntry `protobuf:"bytes,1,rep,name=current,proto3" json:"current,omitempty"`
- Limit []*RdmaEntry `protobuf:"bytes,2,rep,name=limit,proto3" json:"limit,omitempty"`
-}
-
-func (x *RdmaStat) Reset() {
- *x = RdmaStat{}
- if protoimpl.UnsafeEnabled {
- mi := &file_github_com_containerd_cgroups_cgroup1_stats_metrics_proto_msgTypes[11]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *RdmaStat) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*RdmaStat) ProtoMessage() {}
-
-func (x *RdmaStat) ProtoReflect() protoreflect.Message {
- mi := &file_github_com_containerd_cgroups_cgroup1_stats_metrics_proto_msgTypes[11]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use RdmaStat.ProtoReflect.Descriptor instead.
-func (*RdmaStat) Descriptor() ([]byte, []int) {
- return file_github_com_containerd_cgroups_cgroup1_stats_metrics_proto_rawDescGZIP(), []int{11}
-}
-
-func (x *RdmaStat) GetCurrent() []*RdmaEntry {
- if x != nil {
- return x.Current
- }
- return nil
-}
-
-func (x *RdmaStat) GetLimit() []*RdmaEntry {
- if x != nil {
- return x.Limit
- }
- return nil
-}
-
-type RdmaEntry struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Device string `protobuf:"bytes,1,opt,name=device,proto3" json:"device,omitempty"`
- HcaHandles uint32 `protobuf:"varint,2,opt,name=hca_handles,json=hcaHandles,proto3" json:"hca_handles,omitempty"`
- HcaObjects uint32 `protobuf:"varint,3,opt,name=hca_objects,json=hcaObjects,proto3" json:"hca_objects,omitempty"`
-}
-
-func (x *RdmaEntry) Reset() {
- *x = RdmaEntry{}
- if protoimpl.UnsafeEnabled {
- mi := &file_github_com_containerd_cgroups_cgroup1_stats_metrics_proto_msgTypes[12]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *RdmaEntry) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*RdmaEntry) ProtoMessage() {}
-
-func (x *RdmaEntry) ProtoReflect() protoreflect.Message {
- mi := &file_github_com_containerd_cgroups_cgroup1_stats_metrics_proto_msgTypes[12]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use RdmaEntry.ProtoReflect.Descriptor instead.
-func (*RdmaEntry) Descriptor() ([]byte, []int) {
- return file_github_com_containerd_cgroups_cgroup1_stats_metrics_proto_rawDescGZIP(), []int{12}
-}
-
-func (x *RdmaEntry) GetDevice() string {
- if x != nil {
- return x.Device
- }
- return ""
-}
-
-func (x *RdmaEntry) GetHcaHandles() uint32 {
- if x != nil {
- return x.HcaHandles
- }
- return 0
-}
-
-func (x *RdmaEntry) GetHcaObjects() uint32 {
- if x != nil {
- return x.HcaObjects
- }
- return 0
-}
-
-type NetworkStat struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
- RxBytes uint64 `protobuf:"varint,2,opt,name=rx_bytes,json=rxBytes,proto3" json:"rx_bytes,omitempty"`
- RxPackets uint64 `protobuf:"varint,3,opt,name=rx_packets,json=rxPackets,proto3" json:"rx_packets,omitempty"`
- RxErrors uint64 `protobuf:"varint,4,opt,name=rx_errors,json=rxErrors,proto3" json:"rx_errors,omitempty"`
- RxDropped uint64 `protobuf:"varint,5,opt,name=rx_dropped,json=rxDropped,proto3" json:"rx_dropped,omitempty"`
- TxBytes uint64 `protobuf:"varint,6,opt,name=tx_bytes,json=txBytes,proto3" json:"tx_bytes,omitempty"`
- TxPackets uint64 `protobuf:"varint,7,opt,name=tx_packets,json=txPackets,proto3" json:"tx_packets,omitempty"`
- TxErrors uint64 `protobuf:"varint,8,opt,name=tx_errors,json=txErrors,proto3" json:"tx_errors,omitempty"`
- TxDropped uint64 `protobuf:"varint,9,opt,name=tx_dropped,json=txDropped,proto3" json:"tx_dropped,omitempty"`
-}
-
-func (x *NetworkStat) Reset() {
- *x = NetworkStat{}
- if protoimpl.UnsafeEnabled {
- mi := &file_github_com_containerd_cgroups_cgroup1_stats_metrics_proto_msgTypes[13]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *NetworkStat) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*NetworkStat) ProtoMessage() {}
-
-func (x *NetworkStat) ProtoReflect() protoreflect.Message {
- mi := &file_github_com_containerd_cgroups_cgroup1_stats_metrics_proto_msgTypes[13]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use NetworkStat.ProtoReflect.Descriptor instead.
-func (*NetworkStat) Descriptor() ([]byte, []int) {
- return file_github_com_containerd_cgroups_cgroup1_stats_metrics_proto_rawDescGZIP(), []int{13}
-}
-
-func (x *NetworkStat) GetName() string {
- if x != nil {
- return x.Name
- }
- return ""
-}
-
-func (x *NetworkStat) GetRxBytes() uint64 {
- if x != nil {
- return x.RxBytes
- }
- return 0
-}
-
-func (x *NetworkStat) GetRxPackets() uint64 {
- if x != nil {
- return x.RxPackets
- }
- return 0
-}
-
-func (x *NetworkStat) GetRxErrors() uint64 {
- if x != nil {
- return x.RxErrors
- }
- return 0
-}
-
-func (x *NetworkStat) GetRxDropped() uint64 {
- if x != nil {
- return x.RxDropped
- }
- return 0
-}
-
-func (x *NetworkStat) GetTxBytes() uint64 {
- if x != nil {
- return x.TxBytes
- }
- return 0
-}
-
-func (x *NetworkStat) GetTxPackets() uint64 {
- if x != nil {
- return x.TxPackets
- }
- return 0
-}
-
-func (x *NetworkStat) GetTxErrors() uint64 {
- if x != nil {
- return x.TxErrors
- }
- return 0
-}
-
-func (x *NetworkStat) GetTxDropped() uint64 {
- if x != nil {
- return x.TxDropped
- }
- return 0
-}
-
-// CgroupStats exports per-cgroup statistics.
-type CgroupStats struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // number of tasks sleeping
- NrSleeping uint64 `protobuf:"varint,1,opt,name=nr_sleeping,json=nrSleeping,proto3" json:"nr_sleeping,omitempty"`
- // number of tasks running
- NrRunning uint64 `protobuf:"varint,2,opt,name=nr_running,json=nrRunning,proto3" json:"nr_running,omitempty"`
- // number of tasks in stopped state
- NrStopped uint64 `protobuf:"varint,3,opt,name=nr_stopped,json=nrStopped,proto3" json:"nr_stopped,omitempty"`
- // number of tasks in uninterruptible state
- NrUninterruptible uint64 `protobuf:"varint,4,opt,name=nr_uninterruptible,json=nrUninterruptible,proto3" json:"nr_uninterruptible,omitempty"`
- // number of tasks waiting on IO
- NrIoWait uint64 `protobuf:"varint,5,opt,name=nr_io_wait,json=nrIoWait,proto3" json:"nr_io_wait,omitempty"`
-}
-
-func (x *CgroupStats) Reset() {
- *x = CgroupStats{}
- if protoimpl.UnsafeEnabled {
- mi := &file_github_com_containerd_cgroups_cgroup1_stats_metrics_proto_msgTypes[14]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *CgroupStats) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*CgroupStats) ProtoMessage() {}
-
-func (x *CgroupStats) ProtoReflect() protoreflect.Message {
- mi := &file_github_com_containerd_cgroups_cgroup1_stats_metrics_proto_msgTypes[14]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use CgroupStats.ProtoReflect.Descriptor instead.
-func (*CgroupStats) Descriptor() ([]byte, []int) {
- return file_github_com_containerd_cgroups_cgroup1_stats_metrics_proto_rawDescGZIP(), []int{14}
-}
-
-func (x *CgroupStats) GetNrSleeping() uint64 {
- if x != nil {
- return x.NrSleeping
- }
- return 0
-}
-
-func (x *CgroupStats) GetNrRunning() uint64 {
- if x != nil {
- return x.NrRunning
- }
- return 0
-}
-
-func (x *CgroupStats) GetNrStopped() uint64 {
- if x != nil {
- return x.NrStopped
- }
- return 0
-}
-
-func (x *CgroupStats) GetNrUninterruptible() uint64 {
- if x != nil {
- return x.NrUninterruptible
- }
- return 0
-}
-
-func (x *CgroupStats) GetNrIoWait() uint64 {
- if x != nil {
- return x.NrIoWait
- }
- return 0
-}
-
-var File_github_com_containerd_cgroups_cgroup1_stats_metrics_proto protoreflect.FileDescriptor
-
-var file_github_com_containerd_cgroups_cgroup1_stats_metrics_proto_rawDesc = []byte{
- 0x0a, 0x39, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x6f, 0x6e,
- 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x64, 0x2f, 0x63, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2f,
- 0x63, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x31, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2f, 0x6d, 0x65,
- 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x18, 0x69, 0x6f, 0x2e,
- 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x64, 0x2e, 0x63, 0x67, 0x72, 0x6f, 0x75,
- 0x70, 0x73, 0x2e, 0x76, 0x31, 0x22, 0xcd, 0x04, 0x0a, 0x07, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63,
- 0x73, 0x12, 0x3f, 0x0a, 0x07, 0x68, 0x75, 0x67, 0x65, 0x74, 0x6c, 0x62, 0x18, 0x01, 0x20, 0x03,
- 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x69, 0x6f, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65,
- 0x72, 0x64, 0x2e, 0x63, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x75,
- 0x67, 0x65, 0x74, 0x6c, 0x62, 0x53, 0x74, 0x61, 0x74, 0x52, 0x07, 0x68, 0x75, 0x67, 0x65, 0x74,
- 0x6c, 0x62, 0x12, 0x36, 0x0a, 0x04, 0x70, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x22, 0x2e, 0x69, 0x6f, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x64,
- 0x2e, 0x63, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x69, 0x64, 0x73,
- 0x53, 0x74, 0x61, 0x74, 0x52, 0x04, 0x70, 0x69, 0x64, 0x73, 0x12, 0x33, 0x0a, 0x03, 0x63, 0x70,
- 0x75, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x69, 0x6f, 0x2e, 0x63, 0x6f, 0x6e,
- 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x64, 0x2e, 0x63, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2e,
- 0x76, 0x31, 0x2e, 0x43, 0x50, 0x55, 0x53, 0x74, 0x61, 0x74, 0x52, 0x03, 0x63, 0x70, 0x75, 0x12,
- 0x3c, 0x0a, 0x06, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32,
- 0x24, 0x2e, 0x69, 0x6f, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x64, 0x2e,
- 0x63, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x6d, 0x6f, 0x72,
- 0x79, 0x53, 0x74, 0x61, 0x74, 0x52, 0x06, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x12, 0x39, 0x0a,
- 0x05, 0x62, 0x6c, 0x6b, 0x69, 0x6f, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x69,
- 0x6f, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x64, 0x2e, 0x63, 0x67, 0x72,
- 0x6f, 0x75, 0x70, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x6c, 0x6b, 0x49, 0x4f, 0x53, 0x74, 0x61,
- 0x74, 0x52, 0x05, 0x62, 0x6c, 0x6b, 0x69, 0x6f, 0x12, 0x36, 0x0a, 0x04, 0x72, 0x64, 0x6d, 0x61,
- 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x69, 0x6f, 0x2e, 0x63, 0x6f, 0x6e, 0x74,
- 0x61, 0x69, 0x6e, 0x65, 0x72, 0x64, 0x2e, 0x63, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2e, 0x76,
- 0x31, 0x2e, 0x52, 0x64, 0x6d, 0x61, 0x53, 0x74, 0x61, 0x74, 0x52, 0x04, 0x72, 0x64, 0x6d, 0x61,
- 0x12, 0x3f, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x07, 0x20, 0x03, 0x28,
- 0x0b, 0x32, 0x25, 0x2e, 0x69, 0x6f, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72,
- 0x64, 0x2e, 0x63, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x65, 0x74,
- 0x77, 0x6f, 0x72, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x52, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72,
- 0x6b, 0x12, 0x48, 0x0a, 0x0c, 0x63, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x73, 0x74, 0x61, 0x74,
- 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x69, 0x6f, 0x2e, 0x63, 0x6f, 0x6e,
- 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x64, 0x2e, 0x63, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2e,
- 0x76, 0x31, 0x2e, 0x43, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x0b,
- 0x63, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x58, 0x0a, 0x12, 0x6d,
- 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x6f, 0x6f, 0x6d, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f,
- 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x69, 0x6f, 0x2e, 0x63, 0x6f, 0x6e,
- 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x64, 0x2e, 0x63, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2e,
- 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x4f, 0x6f, 0x6d, 0x43, 0x6f, 0x6e, 0x74,
- 0x72, 0x6f, 0x6c, 0x52, 0x10, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x4f, 0x6f, 0x6d, 0x43, 0x6f,
- 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x22, 0x6b, 0x0a, 0x0b, 0x48, 0x75, 0x67, 0x65, 0x74, 0x6c, 0x62,
- 0x53, 0x74, 0x61, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x75, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x04, 0x52, 0x05, 0x75, 0x73, 0x61, 0x67, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x61,
- 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6d, 0x61, 0x78, 0x12, 0x18, 0x0a, 0x07,
- 0x66, 0x61, 0x69, 0x6c, 0x63, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x66,
- 0x61, 0x69, 0x6c, 0x63, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x67, 0x65, 0x73, 0x69,
- 0x7a, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x73, 0x69,
- 0x7a, 0x65, 0x22, 0x3a, 0x0a, 0x08, 0x50, 0x69, 0x64, 0x73, 0x53, 0x74, 0x61, 0x74, 0x12, 0x18,
- 0x0a, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52,
- 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69,
- 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x22, 0x87,
- 0x01, 0x0a, 0x07, 0x43, 0x50, 0x55, 0x53, 0x74, 0x61, 0x74, 0x12, 0x38, 0x0a, 0x05, 0x75, 0x73,
- 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x69, 0x6f, 0x2e, 0x63,
- 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x64, 0x2e, 0x63, 0x67, 0x72, 0x6f, 0x75, 0x70,
- 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x50, 0x55, 0x55, 0x73, 0x61, 0x67, 0x65, 0x52, 0x05, 0x75,
- 0x73, 0x61, 0x67, 0x65, 0x12, 0x42, 0x0a, 0x0a, 0x74, 0x68, 0x72, 0x6f, 0x74, 0x74, 0x6c, 0x69,
- 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x69, 0x6f, 0x2e, 0x63, 0x6f,
- 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x64, 0x2e, 0x63, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73,
- 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x68, 0x72, 0x6f, 0x74, 0x74, 0x6c, 0x65, 0x52, 0x0a, 0x74, 0x68,
- 0x72, 0x6f, 0x74, 0x74, 0x6c, 0x69, 0x6e, 0x67, 0x22, 0x65, 0x0a, 0x08, 0x43, 0x50, 0x55, 0x55,
- 0x73, 0x61, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x04, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x6b, 0x65,
- 0x72, 0x6e, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x6b, 0x65, 0x72, 0x6e,
- 0x65, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04,
- 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x17, 0x0a, 0x07, 0x70, 0x65, 0x72, 0x5f, 0x63, 0x70,
- 0x75, 0x18, 0x04, 0x20, 0x03, 0x28, 0x04, 0x52, 0x06, 0x70, 0x65, 0x72, 0x43, 0x70, 0x75, 0x22,
- 0x78, 0x0a, 0x08, 0x54, 0x68, 0x72, 0x6f, 0x74, 0x74, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x70,
- 0x65, 0x72, 0x69, 0x6f, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x70, 0x65,
- 0x72, 0x69, 0x6f, 0x64, 0x73, 0x12, 0x2b, 0x0a, 0x11, 0x74, 0x68, 0x72, 0x6f, 0x74, 0x74, 0x6c,
- 0x65, 0x64, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04,
- 0x52, 0x10, 0x74, 0x68, 0x72, 0x6f, 0x74, 0x74, 0x6c, 0x65, 0x64, 0x50, 0x65, 0x72, 0x69, 0x6f,
- 0x64, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x74, 0x68, 0x72, 0x6f, 0x74, 0x74, 0x6c, 0x65, 0x64, 0x5f,
- 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0d, 0x74, 0x68, 0x72, 0x6f,
- 0x74, 0x74, 0x6c, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x94, 0x0b, 0x0a, 0x0a, 0x4d, 0x65,
- 0x6d, 0x6f, 0x72, 0x79, 0x53, 0x74, 0x61, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x61, 0x63, 0x68,
- 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x63, 0x61, 0x63, 0x68, 0x65, 0x12, 0x10,
- 0x0a, 0x03, 0x72, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x72, 0x73, 0x73,
- 0x12, 0x19, 0x0a, 0x08, 0x72, 0x73, 0x73, 0x5f, 0x68, 0x75, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01,
- 0x28, 0x04, 0x52, 0x07, 0x72, 0x73, 0x73, 0x48, 0x75, 0x67, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x6d,
- 0x61, 0x70, 0x70, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04,
- 0x52, 0x0a, 0x6d, 0x61, 0x70, 0x70, 0x65, 0x64, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x14, 0x0a, 0x05,
- 0x64, 0x69, 0x72, 0x74, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x64, 0x69, 0x72,
- 0x74, 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x77, 0x72, 0x69, 0x74, 0x65, 0x62, 0x61, 0x63, 0x6b, 0x18,
- 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x77, 0x72, 0x69, 0x74, 0x65, 0x62, 0x61, 0x63, 0x6b,
- 0x12, 0x18, 0x0a, 0x08, 0x70, 0x67, 0x5f, 0x70, 0x67, 0x5f, 0x69, 0x6e, 0x18, 0x07, 0x20, 0x01,
- 0x28, 0x04, 0x52, 0x06, 0x70, 0x67, 0x50, 0x67, 0x49, 0x6e, 0x12, 0x1a, 0x0a, 0x09, 0x70, 0x67,
- 0x5f, 0x70, 0x67, 0x5f, 0x6f, 0x75, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x70,
- 0x67, 0x50, 0x67, 0x4f, 0x75, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x67, 0x5f, 0x66, 0x61, 0x75,
- 0x6c, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x70, 0x67, 0x46, 0x61, 0x75, 0x6c,
- 0x74, 0x12, 0x20, 0x0a, 0x0c, 0x70, 0x67, 0x5f, 0x6d, 0x61, 0x6a, 0x5f, 0x66, 0x61, 0x75, 0x6c,
- 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x70, 0x67, 0x4d, 0x61, 0x6a, 0x46, 0x61,
- 0x75, 0x6c, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x6e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f,
- 0x61, 0x6e, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x69, 0x6e, 0x61, 0x63,
- 0x74, 0x69, 0x76, 0x65, 0x41, 0x6e, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x63, 0x74, 0x69,
- 0x76, 0x65, 0x5f, 0x61, 0x6e, 0x6f, 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x61,
- 0x63, 0x74, 0x69, 0x76, 0x65, 0x41, 0x6e, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x6e, 0x61,
- 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x04,
- 0x52, 0x0c, 0x69, 0x6e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x1f,
- 0x0a, 0x0b, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x0e, 0x20,
- 0x01, 0x28, 0x04, 0x52, 0x0a, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x12,
- 0x20, 0x0a, 0x0b, 0x75, 0x6e, 0x65, 0x76, 0x69, 0x63, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x0f,
- 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x75, 0x6e, 0x65, 0x76, 0x69, 0x63, 0x74, 0x61, 0x62, 0x6c,
- 0x65, 0x12, 0x3a, 0x0a, 0x19, 0x68, 0x69, 0x65, 0x72, 0x61, 0x72, 0x63, 0x68, 0x69, 0x63, 0x61,
- 0x6c, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x10,
- 0x20, 0x01, 0x28, 0x04, 0x52, 0x17, 0x68, 0x69, 0x65, 0x72, 0x61, 0x72, 0x63, 0x68, 0x69, 0x63,
- 0x61, 0x6c, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x36, 0x0a,
- 0x17, 0x68, 0x69, 0x65, 0x72, 0x61, 0x72, 0x63, 0x68, 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x73, 0x77,
- 0x61, 0x70, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x11, 0x20, 0x01, 0x28, 0x04, 0x52, 0x15,
- 0x68, 0x69, 0x65, 0x72, 0x61, 0x72, 0x63, 0x68, 0x69, 0x63, 0x61, 0x6c, 0x53, 0x77, 0x61, 0x70,
- 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x63,
- 0x61, 0x63, 0x68, 0x65, 0x18, 0x12, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x74, 0x6f, 0x74, 0x61,
- 0x6c, 0x43, 0x61, 0x63, 0x68, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f,
- 0x72, 0x73, 0x73, 0x18, 0x13, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x74, 0x6f, 0x74, 0x61, 0x6c,
- 0x52, 0x73, 0x73, 0x12, 0x24, 0x0a, 0x0e, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x72, 0x73, 0x73,
- 0x5f, 0x68, 0x75, 0x67, 0x65, 0x18, 0x14, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x74, 0x6f, 0x74,
- 0x61, 0x6c, 0x52, 0x73, 0x73, 0x48, 0x75, 0x67, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x74, 0x6f, 0x74,
- 0x61, 0x6c, 0x5f, 0x6d, 0x61, 0x70, 0x70, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x15,
- 0x20, 0x01, 0x28, 0x04, 0x52, 0x0f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x4d, 0x61, 0x70, 0x70, 0x65,
- 0x64, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x64,
- 0x69, 0x72, 0x74, 0x79, 0x18, 0x16, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x74, 0x6f, 0x74, 0x61,
- 0x6c, 0x44, 0x69, 0x72, 0x74, 0x79, 0x12, 0x27, 0x0a, 0x0f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f,
- 0x77, 0x72, 0x69, 0x74, 0x65, 0x62, 0x61, 0x63, 0x6b, 0x18, 0x17, 0x20, 0x01, 0x28, 0x04, 0x52,
- 0x0e, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x57, 0x72, 0x69, 0x74, 0x65, 0x62, 0x61, 0x63, 0x6b, 0x12,
- 0x23, 0x0a, 0x0e, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x70, 0x67, 0x5f, 0x70, 0x67, 0x5f, 0x69,
- 0x6e, 0x18, 0x18, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x50, 0x67,
- 0x50, 0x67, 0x49, 0x6e, 0x12, 0x25, 0x0a, 0x0f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x70, 0x67,
- 0x5f, 0x70, 0x67, 0x5f, 0x6f, 0x75, 0x74, 0x18, 0x19, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x74,
- 0x6f, 0x74, 0x61, 0x6c, 0x50, 0x67, 0x50, 0x67, 0x4f, 0x75, 0x74, 0x12, 0x24, 0x0a, 0x0e, 0x74,
- 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x70, 0x67, 0x5f, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x18, 0x1a, 0x20,
- 0x01, 0x28, 0x04, 0x52, 0x0c, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x50, 0x67, 0x46, 0x61, 0x75, 0x6c,
- 0x74, 0x12, 0x2b, 0x0a, 0x12, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x70, 0x67, 0x5f, 0x6d, 0x61,
- 0x6a, 0x5f, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0f, 0x74,
- 0x6f, 0x74, 0x61, 0x6c, 0x50, 0x67, 0x4d, 0x61, 0x6a, 0x46, 0x61, 0x75, 0x6c, 0x74, 0x12, 0x2e,
- 0x0a, 0x13, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x69, 0x6e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65,
- 0x5f, 0x61, 0x6e, 0x6f, 0x6e, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x04, 0x52, 0x11, 0x74, 0x6f, 0x74,
- 0x61, 0x6c, 0x49, 0x6e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x41, 0x6e, 0x6f, 0x6e, 0x12, 0x2a,
- 0x0a, 0x11, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x61,
- 0x6e, 0x6f, 0x6e, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0f, 0x74, 0x6f, 0x74, 0x61, 0x6c,
- 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x41, 0x6e, 0x6f, 0x6e, 0x12, 0x2e, 0x0a, 0x13, 0x74, 0x6f,
- 0x74, 0x61, 0x6c, 0x5f, 0x69, 0x6e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x66, 0x69, 0x6c,
- 0x65, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x04, 0x52, 0x11, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x49, 0x6e,
- 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x74, 0x6f,
- 0x74, 0x61, 0x6c, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x18,
- 0x1f, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x41, 0x63, 0x74, 0x69,
- 0x76, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x2b, 0x0a, 0x11, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f,
- 0x75, 0x6e, 0x65, 0x76, 0x69, 0x63, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x20, 0x20, 0x01, 0x28,
- 0x04, 0x52, 0x10, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x55, 0x6e, 0x65, 0x76, 0x69, 0x63, 0x74, 0x61,
- 0x62, 0x6c, 0x65, 0x12, 0x3b, 0x0a, 0x05, 0x75, 0x73, 0x61, 0x67, 0x65, 0x18, 0x21, 0x20, 0x01,
- 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x69, 0x6f, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65,
- 0x72, 0x64, 0x2e, 0x63, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65,
- 0x6d, 0x6f, 0x72, 0x79, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x75, 0x73, 0x61, 0x67, 0x65,
- 0x12, 0x39, 0x0a, 0x04, 0x73, 0x77, 0x61, 0x70, 0x18, 0x22, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25,
- 0x2e, 0x69, 0x6f, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x64, 0x2e, 0x63,
- 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79,
- 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x73, 0x77, 0x61, 0x70, 0x12, 0x3d, 0x0a, 0x06, 0x6b,
- 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x18, 0x23, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x69, 0x6f,
- 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x64, 0x2e, 0x63, 0x67, 0x72, 0x6f,
- 0x75, 0x70, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x45, 0x6e, 0x74,
- 0x72, 0x79, 0x52, 0x06, 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x12, 0x44, 0x0a, 0x0a, 0x6b, 0x65,
- 0x72, 0x6e, 0x65, 0x6c, 0x5f, 0x74, 0x63, 0x70, 0x18, 0x24, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25,
- 0x2e, 0x69, 0x6f, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x64, 0x2e, 0x63,
- 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79,
- 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x09, 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x54, 0x63, 0x70,
- 0x22, 0x65, 0x0a, 0x0b, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12,
- 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05,
- 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x75, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02,
- 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x75, 0x73, 0x61, 0x67, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6d,
- 0x61, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6d, 0x61, 0x78, 0x12, 0x18, 0x0a,
- 0x07, 0x66, 0x61, 0x69, 0x6c, 0x63, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07,
- 0x66, 0x61, 0x69, 0x6c, 0x63, 0x6e, 0x74, 0x22, 0x74, 0x0a, 0x10, 0x4d, 0x65, 0x6d, 0x6f, 0x72,
- 0x79, 0x4f, 0x6f, 0x6d, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x12, 0x28, 0x0a, 0x10, 0x6f,
- 0x6f, 0x6d, 0x5f, 0x6b, 0x69, 0x6c, 0x6c, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, 0x6f, 0x6f, 0x6d, 0x4b, 0x69, 0x6c, 0x6c, 0x44, 0x69,
- 0x73, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x75, 0x6e, 0x64, 0x65, 0x72, 0x5f, 0x6f,
- 0x6f, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x75, 0x6e, 0x64, 0x65, 0x72, 0x4f,
- 0x6f, 0x6d, 0x12, 0x19, 0x0a, 0x08, 0x6f, 0x6f, 0x6d, 0x5f, 0x6b, 0x69, 0x6c, 0x6c, 0x18, 0x03,
- 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x6f, 0x6f, 0x6d, 0x4b, 0x69, 0x6c, 0x6c, 0x22, 0xd5, 0x05,
- 0x0a, 0x09, 0x42, 0x6c, 0x6b, 0x49, 0x4f, 0x53, 0x74, 0x61, 0x74, 0x12, 0x61, 0x0a, 0x1a, 0x69,
- 0x6f, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f,
- 0x72, 0x65, 0x63, 0x75, 0x72, 0x73, 0x69, 0x76, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
- 0x24, 0x2e, 0x69, 0x6f, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x64, 0x2e,
- 0x63, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x6c, 0x6b, 0x49, 0x4f,
- 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x17, 0x69, 0x6f, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,
- 0x42, 0x79, 0x74, 0x65, 0x73, 0x52, 0x65, 0x63, 0x75, 0x72, 0x73, 0x69, 0x76, 0x65, 0x12, 0x58,
- 0x0a, 0x15, 0x69, 0x6f, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x64, 0x5f, 0x72, 0x65,
- 0x63, 0x75, 0x72, 0x73, 0x69, 0x76, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e,
- 0x69, 0x6f, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x64, 0x2e, 0x63, 0x67,
- 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x6c, 0x6b, 0x49, 0x4f, 0x45, 0x6e,
- 0x74, 0x72, 0x79, 0x52, 0x13, 0x69, 0x6f, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x64, 0x52,
- 0x65, 0x63, 0x75, 0x72, 0x73, 0x69, 0x76, 0x65, 0x12, 0x54, 0x0a, 0x13, 0x69, 0x6f, 0x5f, 0x71,
- 0x75, 0x65, 0x75, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x63, 0x75, 0x72, 0x73, 0x69, 0x76, 0x65, 0x18,
- 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x69, 0x6f, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61,
- 0x69, 0x6e, 0x65, 0x72, 0x64, 0x2e, 0x63, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2e, 0x76, 0x31,
- 0x2e, 0x42, 0x6c, 0x6b, 0x49, 0x4f, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x11, 0x69, 0x6f, 0x51,
- 0x75, 0x65, 0x75, 0x65, 0x64, 0x52, 0x65, 0x63, 0x75, 0x72, 0x73, 0x69, 0x76, 0x65, 0x12, 0x5f,
- 0x0a, 0x19, 0x69, 0x6f, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x74, 0x69, 0x6d,
- 0x65, 0x5f, 0x72, 0x65, 0x63, 0x75, 0x72, 0x73, 0x69, 0x76, 0x65, 0x18, 0x04, 0x20, 0x03, 0x28,
- 0x0b, 0x32, 0x24, 0x2e, 0x69, 0x6f, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72,
- 0x64, 0x2e, 0x63, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x6c, 0x6b,
- 0x49, 0x4f, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x16, 0x69, 0x6f, 0x53, 0x65, 0x72, 0x76, 0x69,
- 0x63, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x52, 0x65, 0x63, 0x75, 0x72, 0x73, 0x69, 0x76, 0x65, 0x12,
- 0x59, 0x0a, 0x16, 0x69, 0x6f, 0x5f, 0x77, 0x61, 0x69, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f,
- 0x72, 0x65, 0x63, 0x75, 0x72, 0x73, 0x69, 0x76, 0x65, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32,
- 0x24, 0x2e, 0x69, 0x6f, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x64, 0x2e,
- 0x63, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x6c, 0x6b, 0x49, 0x4f,
- 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x13, 0x69, 0x6f, 0x57, 0x61, 0x69, 0x74, 0x54, 0x69, 0x6d,
- 0x65, 0x52, 0x65, 0x63, 0x75, 0x72, 0x73, 0x69, 0x76, 0x65, 0x12, 0x54, 0x0a, 0x13, 0x69, 0x6f,
- 0x5f, 0x6d, 0x65, 0x72, 0x67, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x63, 0x75, 0x72, 0x73, 0x69, 0x76,
- 0x65, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x69, 0x6f, 0x2e, 0x63, 0x6f, 0x6e,
- 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x64, 0x2e, 0x63, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2e,
- 0x76, 0x31, 0x2e, 0x42, 0x6c, 0x6b, 0x49, 0x4f, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x11, 0x69,
- 0x6f, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x64, 0x52, 0x65, 0x63, 0x75, 0x72, 0x73, 0x69, 0x76, 0x65,
- 0x12, 0x50, 0x0a, 0x11, 0x69, 0x6f, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x75,
- 0x72, 0x73, 0x69, 0x76, 0x65, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x69, 0x6f,
- 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x64, 0x2e, 0x63, 0x67, 0x72, 0x6f,
- 0x75, 0x70, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x6c, 0x6b, 0x49, 0x4f, 0x45, 0x6e, 0x74, 0x72,
- 0x79, 0x52, 0x0f, 0x69, 0x6f, 0x54, 0x69, 0x6d, 0x65, 0x52, 0x65, 0x63, 0x75, 0x72, 0x73, 0x69,
- 0x76, 0x65, 0x12, 0x51, 0x0a, 0x11, 0x73, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x5f, 0x72, 0x65,
- 0x63, 0x75, 0x72, 0x73, 0x69, 0x76, 0x65, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e,
- 0x69, 0x6f, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x64, 0x2e, 0x63, 0x67,
- 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x6c, 0x6b, 0x49, 0x4f, 0x45, 0x6e,
- 0x74, 0x72, 0x79, 0x52, 0x10, 0x73, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x52, 0x65, 0x63, 0x75,
- 0x72, 0x73, 0x69, 0x76, 0x65, 0x22, 0x76, 0x0a, 0x0a, 0x42, 0x6c, 0x6b, 0x49, 0x4f, 0x45, 0x6e,
- 0x74, 0x72, 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x02, 0x6f, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x18, 0x02, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6d,
- 0x61, 0x6a, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x6d, 0x61, 0x6a, 0x6f,
- 0x72, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x69, 0x6e, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04,
- 0x52, 0x05, 0x6d, 0x69, 0x6e, 0x6f, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
- 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x84, 0x01,
- 0x0a, 0x08, 0x52, 0x64, 0x6d, 0x61, 0x53, 0x74, 0x61, 0x74, 0x12, 0x3d, 0x0a, 0x07, 0x63, 0x75,
- 0x72, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x69, 0x6f,
- 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x64, 0x2e, 0x63, 0x67, 0x72, 0x6f,
- 0x75, 0x70, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x64, 0x6d, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79,
- 0x52, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x39, 0x0a, 0x05, 0x6c, 0x69, 0x6d,
- 0x69, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x69, 0x6f, 0x2e, 0x63, 0x6f,
- 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x64, 0x2e, 0x63, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73,
- 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x64, 0x6d, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x6c,
- 0x69, 0x6d, 0x69, 0x74, 0x22, 0x65, 0x0a, 0x09, 0x52, 0x64, 0x6d, 0x61, 0x45, 0x6e, 0x74, 0x72,
- 0x79, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x06, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x68, 0x63, 0x61,
- 0x5f, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a,
- 0x68, 0x63, 0x61, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x68, 0x63,
- 0x61, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52,
- 0x0a, 0x68, 0x63, 0x61, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x22, 0x8d, 0x02, 0x0a, 0x0b,
- 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e,
- 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12,
- 0x19, 0x0a, 0x08, 0x72, 0x78, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28,
- 0x04, 0x52, 0x07, 0x72, 0x78, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x78,
- 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09,
- 0x72, 0x78, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x78, 0x5f,
- 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x72, 0x78,
- 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x78, 0x5f, 0x64, 0x72, 0x6f,
- 0x70, 0x70, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x72, 0x78, 0x44, 0x72,
- 0x6f, 0x70, 0x70, 0x65, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x78, 0x5f, 0x62, 0x79, 0x74, 0x65,
- 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x74, 0x78, 0x42, 0x79, 0x74, 0x65, 0x73,
- 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x78, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x18, 0x07,
- 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x74, 0x78, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x12,
- 0x1b, 0x0a, 0x09, 0x74, 0x78, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x08, 0x20, 0x01,
- 0x28, 0x04, 0x52, 0x08, 0x74, 0x78, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x12, 0x1d, 0x0a, 0x0a,
- 0x74, 0x78, 0x5f, 0x64, 0x72, 0x6f, 0x70, 0x70, 0x65, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x04,
- 0x52, 0x09, 0x74, 0x78, 0x44, 0x72, 0x6f, 0x70, 0x70, 0x65, 0x64, 0x22, 0xb9, 0x01, 0x0a, 0x0b,
- 0x43, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x6e,
- 0x72, 0x5f, 0x73, 0x6c, 0x65, 0x65, 0x70, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04,
- 0x52, 0x0a, 0x6e, 0x72, 0x53, 0x6c, 0x65, 0x65, 0x70, 0x69, 0x6e, 0x67, 0x12, 0x1d, 0x0a, 0x0a,
- 0x6e, 0x72, 0x5f, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04,
- 0x52, 0x09, 0x6e, 0x72, 0x52, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x12, 0x1d, 0x0a, 0x0a, 0x6e,
- 0x72, 0x5f, 0x73, 0x74, 0x6f, 0x70, 0x70, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52,
- 0x09, 0x6e, 0x72, 0x53, 0x74, 0x6f, 0x70, 0x70, 0x65, 0x64, 0x12, 0x2d, 0x0a, 0x12, 0x6e, 0x72,
- 0x5f, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x72, 0x75, 0x70, 0x74, 0x69, 0x62, 0x6c, 0x65,
- 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x11, 0x6e, 0x72, 0x55, 0x6e, 0x69, 0x6e, 0x74, 0x65,
- 0x72, 0x72, 0x75, 0x70, 0x74, 0x69, 0x62, 0x6c, 0x65, 0x12, 0x1c, 0x0a, 0x0a, 0x6e, 0x72, 0x5f,
- 0x69, 0x6f, 0x5f, 0x77, 0x61, 0x69, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x6e,
- 0x72, 0x49, 0x6f, 0x57, 0x61, 0x69, 0x74, 0x42, 0x2d, 0x5a, 0x2b, 0x67, 0x69, 0x74, 0x68, 0x75,
- 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x64,
- 0x2f, 0x63, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2f, 0x63, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x31,
- 0x2f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
-}
-
-var (
- file_github_com_containerd_cgroups_cgroup1_stats_metrics_proto_rawDescOnce sync.Once
- file_github_com_containerd_cgroups_cgroup1_stats_metrics_proto_rawDescData = file_github_com_containerd_cgroups_cgroup1_stats_metrics_proto_rawDesc
-)
-
-func file_github_com_containerd_cgroups_cgroup1_stats_metrics_proto_rawDescGZIP() []byte {
- file_github_com_containerd_cgroups_cgroup1_stats_metrics_proto_rawDescOnce.Do(func() {
- file_github_com_containerd_cgroups_cgroup1_stats_metrics_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_containerd_cgroups_cgroup1_stats_metrics_proto_rawDescData)
- })
- return file_github_com_containerd_cgroups_cgroup1_stats_metrics_proto_rawDescData
-}
-
-var file_github_com_containerd_cgroups_cgroup1_stats_metrics_proto_msgTypes = make([]protoimpl.MessageInfo, 15)
-var file_github_com_containerd_cgroups_cgroup1_stats_metrics_proto_goTypes = []interface{}{
- (*Metrics)(nil), // 0: io.containerd.cgroups.v1.Metrics
- (*HugetlbStat)(nil), // 1: io.containerd.cgroups.v1.HugetlbStat
- (*PidsStat)(nil), // 2: io.containerd.cgroups.v1.PidsStat
- (*CPUStat)(nil), // 3: io.containerd.cgroups.v1.CPUStat
- (*CPUUsage)(nil), // 4: io.containerd.cgroups.v1.CPUUsage
- (*Throttle)(nil), // 5: io.containerd.cgroups.v1.Throttle
- (*MemoryStat)(nil), // 6: io.containerd.cgroups.v1.MemoryStat
- (*MemoryEntry)(nil), // 7: io.containerd.cgroups.v1.MemoryEntry
- (*MemoryOomControl)(nil), // 8: io.containerd.cgroups.v1.MemoryOomControl
- (*BlkIOStat)(nil), // 9: io.containerd.cgroups.v1.BlkIOStat
- (*BlkIOEntry)(nil), // 10: io.containerd.cgroups.v1.BlkIOEntry
- (*RdmaStat)(nil), // 11: io.containerd.cgroups.v1.RdmaStat
- (*RdmaEntry)(nil), // 12: io.containerd.cgroups.v1.RdmaEntry
- (*NetworkStat)(nil), // 13: io.containerd.cgroups.v1.NetworkStat
- (*CgroupStats)(nil), // 14: io.containerd.cgroups.v1.CgroupStats
-}
-var file_github_com_containerd_cgroups_cgroup1_stats_metrics_proto_depIdxs = []int32{
- 1, // 0: io.containerd.cgroups.v1.Metrics.hugetlb:type_name -> io.containerd.cgroups.v1.HugetlbStat
- 2, // 1: io.containerd.cgroups.v1.Metrics.pids:type_name -> io.containerd.cgroups.v1.PidsStat
- 3, // 2: io.containerd.cgroups.v1.Metrics.cpu:type_name -> io.containerd.cgroups.v1.CPUStat
- 6, // 3: io.containerd.cgroups.v1.Metrics.memory:type_name -> io.containerd.cgroups.v1.MemoryStat
- 9, // 4: io.containerd.cgroups.v1.Metrics.blkio:type_name -> io.containerd.cgroups.v1.BlkIOStat
- 11, // 5: io.containerd.cgroups.v1.Metrics.rdma:type_name -> io.containerd.cgroups.v1.RdmaStat
- 13, // 6: io.containerd.cgroups.v1.Metrics.network:type_name -> io.containerd.cgroups.v1.NetworkStat
- 14, // 7: io.containerd.cgroups.v1.Metrics.cgroup_stats:type_name -> io.containerd.cgroups.v1.CgroupStats
- 8, // 8: io.containerd.cgroups.v1.Metrics.memory_oom_control:type_name -> io.containerd.cgroups.v1.MemoryOomControl
- 4, // 9: io.containerd.cgroups.v1.CPUStat.usage:type_name -> io.containerd.cgroups.v1.CPUUsage
- 5, // 10: io.containerd.cgroups.v1.CPUStat.throttling:type_name -> io.containerd.cgroups.v1.Throttle
- 7, // 11: io.containerd.cgroups.v1.MemoryStat.usage:type_name -> io.containerd.cgroups.v1.MemoryEntry
- 7, // 12: io.containerd.cgroups.v1.MemoryStat.swap:type_name -> io.containerd.cgroups.v1.MemoryEntry
- 7, // 13: io.containerd.cgroups.v1.MemoryStat.kernel:type_name -> io.containerd.cgroups.v1.MemoryEntry
- 7, // 14: io.containerd.cgroups.v1.MemoryStat.kernel_tcp:type_name -> io.containerd.cgroups.v1.MemoryEntry
- 10, // 15: io.containerd.cgroups.v1.BlkIOStat.io_service_bytes_recursive:type_name -> io.containerd.cgroups.v1.BlkIOEntry
- 10, // 16: io.containerd.cgroups.v1.BlkIOStat.io_serviced_recursive:type_name -> io.containerd.cgroups.v1.BlkIOEntry
- 10, // 17: io.containerd.cgroups.v1.BlkIOStat.io_queued_recursive:type_name -> io.containerd.cgroups.v1.BlkIOEntry
- 10, // 18: io.containerd.cgroups.v1.BlkIOStat.io_service_time_recursive:type_name -> io.containerd.cgroups.v1.BlkIOEntry
- 10, // 19: io.containerd.cgroups.v1.BlkIOStat.io_wait_time_recursive:type_name -> io.containerd.cgroups.v1.BlkIOEntry
- 10, // 20: io.containerd.cgroups.v1.BlkIOStat.io_merged_recursive:type_name -> io.containerd.cgroups.v1.BlkIOEntry
- 10, // 21: io.containerd.cgroups.v1.BlkIOStat.io_time_recursive:type_name -> io.containerd.cgroups.v1.BlkIOEntry
- 10, // 22: io.containerd.cgroups.v1.BlkIOStat.sectors_recursive:type_name -> io.containerd.cgroups.v1.BlkIOEntry
- 12, // 23: io.containerd.cgroups.v1.RdmaStat.current:type_name -> io.containerd.cgroups.v1.RdmaEntry
- 12, // 24: io.containerd.cgroups.v1.RdmaStat.limit:type_name -> io.containerd.cgroups.v1.RdmaEntry
- 25, // [25:25] is the sub-list for method output_type
- 25, // [25:25] is the sub-list for method input_type
- 25, // [25:25] is the sub-list for extension type_name
- 25, // [25:25] is the sub-list for extension extendee
- 0, // [0:25] is the sub-list for field type_name
-}
-
-func init() { file_github_com_containerd_cgroups_cgroup1_stats_metrics_proto_init() }
-func file_github_com_containerd_cgroups_cgroup1_stats_metrics_proto_init() {
- if File_github_com_containerd_cgroups_cgroup1_stats_metrics_proto != nil {
- return
- }
- if !protoimpl.UnsafeEnabled {
- file_github_com_containerd_cgroups_cgroup1_stats_metrics_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Metrics); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_github_com_containerd_cgroups_cgroup1_stats_metrics_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*HugetlbStat); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_github_com_containerd_cgroups_cgroup1_stats_metrics_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*PidsStat); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_github_com_containerd_cgroups_cgroup1_stats_metrics_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*CPUStat); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_github_com_containerd_cgroups_cgroup1_stats_metrics_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*CPUUsage); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_github_com_containerd_cgroups_cgroup1_stats_metrics_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Throttle); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_github_com_containerd_cgroups_cgroup1_stats_metrics_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*MemoryStat); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_github_com_containerd_cgroups_cgroup1_stats_metrics_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*MemoryEntry); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_github_com_containerd_cgroups_cgroup1_stats_metrics_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*MemoryOomControl); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_github_com_containerd_cgroups_cgroup1_stats_metrics_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*BlkIOStat); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_github_com_containerd_cgroups_cgroup1_stats_metrics_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*BlkIOEntry); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_github_com_containerd_cgroups_cgroup1_stats_metrics_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*RdmaStat); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_github_com_containerd_cgroups_cgroup1_stats_metrics_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*RdmaEntry); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_github_com_containerd_cgroups_cgroup1_stats_metrics_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*NetworkStat); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_github_com_containerd_cgroups_cgroup1_stats_metrics_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*CgroupStats); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- }
- type x struct{}
- out := protoimpl.TypeBuilder{
- File: protoimpl.DescBuilder{
- GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
- RawDescriptor: file_github_com_containerd_cgroups_cgroup1_stats_metrics_proto_rawDesc,
- NumEnums: 0,
- NumMessages: 15,
- NumExtensions: 0,
- NumServices: 0,
- },
- GoTypes: file_github_com_containerd_cgroups_cgroup1_stats_metrics_proto_goTypes,
- DependencyIndexes: file_github_com_containerd_cgroups_cgroup1_stats_metrics_proto_depIdxs,
- MessageInfos: file_github_com_containerd_cgroups_cgroup1_stats_metrics_proto_msgTypes,
- }.Build()
- File_github_com_containerd_cgroups_cgroup1_stats_metrics_proto = out.File
- file_github_com_containerd_cgroups_cgroup1_stats_metrics_proto_rawDesc = nil
- file_github_com_containerd_cgroups_cgroup1_stats_metrics_proto_goTypes = nil
- file_github_com_containerd_cgroups_cgroup1_stats_metrics_proto_depIdxs = nil
-}
diff --git a/vendor/github.com/containerd/cgroups/v3/cgroup1/stats/metrics.pb.txt b/vendor/github.com/containerd/cgroups/v3/cgroup1/stats/metrics.pb.txt
deleted file mode 100644
index 7e4313ea5..000000000
--- a/vendor/github.com/containerd/cgroups/v3/cgroup1/stats/metrics.pb.txt
+++ /dev/null
@@ -1,771 +0,0 @@
-file {
- name: "github.com/containerd/cgroups/cgroup1/stats/metrics.proto"
- package: "io.containerd.cgroups.v1"
- message_type {
- name: "Metrics"
- field {
- name: "hugetlb"
- number: 1
- label: LABEL_REPEATED
- type: TYPE_MESSAGE
- type_name: ".io.containerd.cgroups.v1.HugetlbStat"
- json_name: "hugetlb"
- }
- field {
- name: "pids"
- number: 2
- label: LABEL_OPTIONAL
- type: TYPE_MESSAGE
- type_name: ".io.containerd.cgroups.v1.PidsStat"
- json_name: "pids"
- }
- field {
- name: "cpu"
- number: 3
- label: LABEL_OPTIONAL
- type: TYPE_MESSAGE
- type_name: ".io.containerd.cgroups.v1.CPUStat"
- json_name: "cpu"
- }
- field {
- name: "memory"
- number: 4
- label: LABEL_OPTIONAL
- type: TYPE_MESSAGE
- type_name: ".io.containerd.cgroups.v1.MemoryStat"
- json_name: "memory"
- }
- field {
- name: "blkio"
- number: 5
- label: LABEL_OPTIONAL
- type: TYPE_MESSAGE
- type_name: ".io.containerd.cgroups.v1.BlkIOStat"
- json_name: "blkio"
- }
- field {
- name: "rdma"
- number: 6
- label: LABEL_OPTIONAL
- type: TYPE_MESSAGE
- type_name: ".io.containerd.cgroups.v1.RdmaStat"
- json_name: "rdma"
- }
- field {
- name: "network"
- number: 7
- label: LABEL_REPEATED
- type: TYPE_MESSAGE
- type_name: ".io.containerd.cgroups.v1.NetworkStat"
- json_name: "network"
- }
- field {
- name: "cgroup_stats"
- number: 8
- label: LABEL_OPTIONAL
- type: TYPE_MESSAGE
- type_name: ".io.containerd.cgroups.v1.CgroupStats"
- json_name: "cgroupStats"
- }
- field {
- name: "memory_oom_control"
- number: 9
- label: LABEL_OPTIONAL
- type: TYPE_MESSAGE
- type_name: ".io.containerd.cgroups.v1.MemoryOomControl"
- json_name: "memoryOomControl"
- }
- }
- message_type {
- name: "HugetlbStat"
- field {
- name: "usage"
- number: 1
- label: LABEL_OPTIONAL
- type: TYPE_UINT64
- json_name: "usage"
- }
- field {
- name: "max"
- number: 2
- label: LABEL_OPTIONAL
- type: TYPE_UINT64
- json_name: "max"
- }
- field {
- name: "failcnt"
- number: 3
- label: LABEL_OPTIONAL
- type: TYPE_UINT64
- json_name: "failcnt"
- }
- field {
- name: "pagesize"
- number: 4
- label: LABEL_OPTIONAL
- type: TYPE_STRING
- json_name: "pagesize"
- }
- }
- message_type {
- name: "PidsStat"
- field {
- name: "current"
- number: 1
- label: LABEL_OPTIONAL
- type: TYPE_UINT64
- json_name: "current"
- }
- field {
- name: "limit"
- number: 2
- label: LABEL_OPTIONAL
- type: TYPE_UINT64
- json_name: "limit"
- }
- }
- message_type {
- name: "CPUStat"
- field {
- name: "usage"
- number: 1
- label: LABEL_OPTIONAL
- type: TYPE_MESSAGE
- type_name: ".io.containerd.cgroups.v1.CPUUsage"
- json_name: "usage"
- }
- field {
- name: "throttling"
- number: 2
- label: LABEL_OPTIONAL
- type: TYPE_MESSAGE
- type_name: ".io.containerd.cgroups.v1.Throttle"
- json_name: "throttling"
- }
- }
- message_type {
- name: "CPUUsage"
- field {
- name: "total"
- number: 1
- label: LABEL_OPTIONAL
- type: TYPE_UINT64
- json_name: "total"
- }
- field {
- name: "kernel"
- number: 2
- label: LABEL_OPTIONAL
- type: TYPE_UINT64
- json_name: "kernel"
- }
- field {
- name: "user"
- number: 3
- label: LABEL_OPTIONAL
- type: TYPE_UINT64
- json_name: "user"
- }
- field {
- name: "per_cpu"
- number: 4
- label: LABEL_REPEATED
- type: TYPE_UINT64
- json_name: "perCpu"
- }
- }
- message_type {
- name: "Throttle"
- field {
- name: "periods"
- number: 1
- label: LABEL_OPTIONAL
- type: TYPE_UINT64
- json_name: "periods"
- }
- field {
- name: "throttled_periods"
- number: 2
- label: LABEL_OPTIONAL
- type: TYPE_UINT64
- json_name: "throttledPeriods"
- }
- field {
- name: "throttled_time"
- number: 3
- label: LABEL_OPTIONAL
- type: TYPE_UINT64
- json_name: "throttledTime"
- }
- }
- message_type {
- name: "MemoryStat"
- field {
- name: "cache"
- number: 1
- label: LABEL_OPTIONAL
- type: TYPE_UINT64
- json_name: "cache"
- }
- field {
- name: "rss"
- number: 2
- label: LABEL_OPTIONAL
- type: TYPE_UINT64
- json_name: "rss"
- }
- field {
- name: "rss_huge"
- number: 3
- label: LABEL_OPTIONAL
- type: TYPE_UINT64
- json_name: "rssHuge"
- }
- field {
- name: "mapped_file"
- number: 4
- label: LABEL_OPTIONAL
- type: TYPE_UINT64
- json_name: "mappedFile"
- }
- field {
- name: "dirty"
- number: 5
- label: LABEL_OPTIONAL
- type: TYPE_UINT64
- json_name: "dirty"
- }
- field {
- name: "writeback"
- number: 6
- label: LABEL_OPTIONAL
- type: TYPE_UINT64
- json_name: "writeback"
- }
- field {
- name: "pg_pg_in"
- number: 7
- label: LABEL_OPTIONAL
- type: TYPE_UINT64
- json_name: "pgPgIn"
- }
- field {
- name: "pg_pg_out"
- number: 8
- label: LABEL_OPTIONAL
- type: TYPE_UINT64
- json_name: "pgPgOut"
- }
- field {
- name: "pg_fault"
- number: 9
- label: LABEL_OPTIONAL
- type: TYPE_UINT64
- json_name: "pgFault"
- }
- field {
- name: "pg_maj_fault"
- number: 10
- label: LABEL_OPTIONAL
- type: TYPE_UINT64
- json_name: "pgMajFault"
- }
- field {
- name: "inactive_anon"
- number: 11
- label: LABEL_OPTIONAL
- type: TYPE_UINT64
- json_name: "inactiveAnon"
- }
- field {
- name: "active_anon"
- number: 12
- label: LABEL_OPTIONAL
- type: TYPE_UINT64
- json_name: "activeAnon"
- }
- field {
- name: "inactive_file"
- number: 13
- label: LABEL_OPTIONAL
- type: TYPE_UINT64
- json_name: "inactiveFile"
- }
- field {
- name: "active_file"
- number: 14
- label: LABEL_OPTIONAL
- type: TYPE_UINT64
- json_name: "activeFile"
- }
- field {
- name: "unevictable"
- number: 15
- label: LABEL_OPTIONAL
- type: TYPE_UINT64
- json_name: "unevictable"
- }
- field {
- name: "hierarchical_memory_limit"
- number: 16
- label: LABEL_OPTIONAL
- type: TYPE_UINT64
- json_name: "hierarchicalMemoryLimit"
- }
- field {
- name: "hierarchical_swap_limit"
- number: 17
- label: LABEL_OPTIONAL
- type: TYPE_UINT64
- json_name: "hierarchicalSwapLimit"
- }
- field {
- name: "total_cache"
- number: 18
- label: LABEL_OPTIONAL
- type: TYPE_UINT64
- json_name: "totalCache"
- }
- field {
- name: "total_rss"
- number: 19
- label: LABEL_OPTIONAL
- type: TYPE_UINT64
- json_name: "totalRss"
- }
- field {
- name: "total_rss_huge"
- number: 20
- label: LABEL_OPTIONAL
- type: TYPE_UINT64
- json_name: "totalRssHuge"
- }
- field {
- name: "total_mapped_file"
- number: 21
- label: LABEL_OPTIONAL
- type: TYPE_UINT64
- json_name: "totalMappedFile"
- }
- field {
- name: "total_dirty"
- number: 22
- label: LABEL_OPTIONAL
- type: TYPE_UINT64
- json_name: "totalDirty"
- }
- field {
- name: "total_writeback"
- number: 23
- label: LABEL_OPTIONAL
- type: TYPE_UINT64
- json_name: "totalWriteback"
- }
- field {
- name: "total_pg_pg_in"
- number: 24
- label: LABEL_OPTIONAL
- type: TYPE_UINT64
- json_name: "totalPgPgIn"
- }
- field {
- name: "total_pg_pg_out"
- number: 25
- label: LABEL_OPTIONAL
- type: TYPE_UINT64
- json_name: "totalPgPgOut"
- }
- field {
- name: "total_pg_fault"
- number: 26
- label: LABEL_OPTIONAL
- type: TYPE_UINT64
- json_name: "totalPgFault"
- }
- field {
- name: "total_pg_maj_fault"
- number: 27
- label: LABEL_OPTIONAL
- type: TYPE_UINT64
- json_name: "totalPgMajFault"
- }
- field {
- name: "total_inactive_anon"
- number: 28
- label: LABEL_OPTIONAL
- type: TYPE_UINT64
- json_name: "totalInactiveAnon"
- }
- field {
- name: "total_active_anon"
- number: 29
- label: LABEL_OPTIONAL
- type: TYPE_UINT64
- json_name: "totalActiveAnon"
- }
- field {
- name: "total_inactive_file"
- number: 30
- label: LABEL_OPTIONAL
- type: TYPE_UINT64
- json_name: "totalInactiveFile"
- }
- field {
- name: "total_active_file"
- number: 31
- label: LABEL_OPTIONAL
- type: TYPE_UINT64
- json_name: "totalActiveFile"
- }
- field {
- name: "total_unevictable"
- number: 32
- label: LABEL_OPTIONAL
- type: TYPE_UINT64
- json_name: "totalUnevictable"
- }
- field {
- name: "usage"
- number: 33
- label: LABEL_OPTIONAL
- type: TYPE_MESSAGE
- type_name: ".io.containerd.cgroups.v1.MemoryEntry"
- json_name: "usage"
- }
- field {
- name: "swap"
- number: 34
- label: LABEL_OPTIONAL
- type: TYPE_MESSAGE
- type_name: ".io.containerd.cgroups.v1.MemoryEntry"
- json_name: "swap"
- }
- field {
- name: "kernel"
- number: 35
- label: LABEL_OPTIONAL
- type: TYPE_MESSAGE
- type_name: ".io.containerd.cgroups.v1.MemoryEntry"
- json_name: "kernel"
- }
- field {
- name: "kernel_tcp"
- number: 36
- label: LABEL_OPTIONAL
- type: TYPE_MESSAGE
- type_name: ".io.containerd.cgroups.v1.MemoryEntry"
- json_name: "kernelTcp"
- }
- }
- message_type {
- name: "MemoryEntry"
- field {
- name: "limit"
- number: 1
- label: LABEL_OPTIONAL
- type: TYPE_UINT64
- json_name: "limit"
- }
- field {
- name: "usage"
- number: 2
- label: LABEL_OPTIONAL
- type: TYPE_UINT64
- json_name: "usage"
- }
- field {
- name: "max"
- number: 3
- label: LABEL_OPTIONAL
- type: TYPE_UINT64
- json_name: "max"
- }
- field {
- name: "failcnt"
- number: 4
- label: LABEL_OPTIONAL
- type: TYPE_UINT64
- json_name: "failcnt"
- }
- }
- message_type {
- name: "MemoryOomControl"
- field {
- name: "oom_kill_disable"
- number: 1
- label: LABEL_OPTIONAL
- type: TYPE_UINT64
- json_name: "oomKillDisable"
- }
- field {
- name: "under_oom"
- number: 2
- label: LABEL_OPTIONAL
- type: TYPE_UINT64
- json_name: "underOom"
- }
- field {
- name: "oom_kill"
- number: 3
- label: LABEL_OPTIONAL
- type: TYPE_UINT64
- json_name: "oomKill"
- }
- }
- message_type {
- name: "BlkIOStat"
- field {
- name: "io_service_bytes_recursive"
- number: 1
- label: LABEL_REPEATED
- type: TYPE_MESSAGE
- type_name: ".io.containerd.cgroups.v1.BlkIOEntry"
- json_name: "ioServiceBytesRecursive"
- }
- field {
- name: "io_serviced_recursive"
- number: 2
- label: LABEL_REPEATED
- type: TYPE_MESSAGE
- type_name: ".io.containerd.cgroups.v1.BlkIOEntry"
- json_name: "ioServicedRecursive"
- }
- field {
- name: "io_queued_recursive"
- number: 3
- label: LABEL_REPEATED
- type: TYPE_MESSAGE
- type_name: ".io.containerd.cgroups.v1.BlkIOEntry"
- json_name: "ioQueuedRecursive"
- }
- field {
- name: "io_service_time_recursive"
- number: 4
- label: LABEL_REPEATED
- type: TYPE_MESSAGE
- type_name: ".io.containerd.cgroups.v1.BlkIOEntry"
- json_name: "ioServiceTimeRecursive"
- }
- field {
- name: "io_wait_time_recursive"
- number: 5
- label: LABEL_REPEATED
- type: TYPE_MESSAGE
- type_name: ".io.containerd.cgroups.v1.BlkIOEntry"
- json_name: "ioWaitTimeRecursive"
- }
- field {
- name: "io_merged_recursive"
- number: 6
- label: LABEL_REPEATED
- type: TYPE_MESSAGE
- type_name: ".io.containerd.cgroups.v1.BlkIOEntry"
- json_name: "ioMergedRecursive"
- }
- field {
- name: "io_time_recursive"
- number: 7
- label: LABEL_REPEATED
- type: TYPE_MESSAGE
- type_name: ".io.containerd.cgroups.v1.BlkIOEntry"
- json_name: "ioTimeRecursive"
- }
- field {
- name: "sectors_recursive"
- number: 8
- label: LABEL_REPEATED
- type: TYPE_MESSAGE
- type_name: ".io.containerd.cgroups.v1.BlkIOEntry"
- json_name: "sectorsRecursive"
- }
- }
- message_type {
- name: "BlkIOEntry"
- field {
- name: "op"
- number: 1
- label: LABEL_OPTIONAL
- type: TYPE_STRING
- json_name: "op"
- }
- field {
- name: "device"
- number: 2
- label: LABEL_OPTIONAL
- type: TYPE_STRING
- json_name: "device"
- }
- field {
- name: "major"
- number: 3
- label: LABEL_OPTIONAL
- type: TYPE_UINT64
- json_name: "major"
- }
- field {
- name: "minor"
- number: 4
- label: LABEL_OPTIONAL
- type: TYPE_UINT64
- json_name: "minor"
- }
- field {
- name: "value"
- number: 5
- label: LABEL_OPTIONAL
- type: TYPE_UINT64
- json_name: "value"
- }
- }
- message_type {
- name: "RdmaStat"
- field {
- name: "current"
- number: 1
- label: LABEL_REPEATED
- type: TYPE_MESSAGE
- type_name: ".io.containerd.cgroups.v1.RdmaEntry"
- json_name: "current"
- }
- field {
- name: "limit"
- number: 2
- label: LABEL_REPEATED
- type: TYPE_MESSAGE
- type_name: ".io.containerd.cgroups.v1.RdmaEntry"
- json_name: "limit"
- }
- }
- message_type {
- name: "RdmaEntry"
- field {
- name: "device"
- number: 1
- label: LABEL_OPTIONAL
- type: TYPE_STRING
- json_name: "device"
- }
- field {
- name: "hca_handles"
- number: 2
- label: LABEL_OPTIONAL
- type: TYPE_UINT32
- json_name: "hcaHandles"
- }
- field {
- name: "hca_objects"
- number: 3
- label: LABEL_OPTIONAL
- type: TYPE_UINT32
- json_name: "hcaObjects"
- }
- }
- message_type {
- name: "NetworkStat"
- field {
- name: "name"
- number: 1
- label: LABEL_OPTIONAL
- type: TYPE_STRING
- json_name: "name"
- }
- field {
- name: "rx_bytes"
- number: 2
- label: LABEL_OPTIONAL
- type: TYPE_UINT64
- json_name: "rxBytes"
- }
- field {
- name: "rx_packets"
- number: 3
- label: LABEL_OPTIONAL
- type: TYPE_UINT64
- json_name: "rxPackets"
- }
- field {
- name: "rx_errors"
- number: 4
- label: LABEL_OPTIONAL
- type: TYPE_UINT64
- json_name: "rxErrors"
- }
- field {
- name: "rx_dropped"
- number: 5
- label: LABEL_OPTIONAL
- type: TYPE_UINT64
- json_name: "rxDropped"
- }
- field {
- name: "tx_bytes"
- number: 6
- label: LABEL_OPTIONAL
- type: TYPE_UINT64
- json_name: "txBytes"
- }
- field {
- name: "tx_packets"
- number: 7
- label: LABEL_OPTIONAL
- type: TYPE_UINT64
- json_name: "txPackets"
- }
- field {
- name: "tx_errors"
- number: 8
- label: LABEL_OPTIONAL
- type: TYPE_UINT64
- json_name: "txErrors"
- }
- field {
- name: "tx_dropped"
- number: 9
- label: LABEL_OPTIONAL
- type: TYPE_UINT64
- json_name: "txDropped"
- }
- }
- message_type {
- name: "CgroupStats"
- field {
- name: "nr_sleeping"
- number: 1
- label: LABEL_OPTIONAL
- type: TYPE_UINT64
- json_name: "nrSleeping"
- }
- field {
- name: "nr_running"
- number: 2
- label: LABEL_OPTIONAL
- type: TYPE_UINT64
- json_name: "nrRunning"
- }
- field {
- name: "nr_stopped"
- number: 3
- label: LABEL_OPTIONAL
- type: TYPE_UINT64
- json_name: "nrStopped"
- }
- field {
- name: "nr_uninterruptible"
- number: 4
- label: LABEL_OPTIONAL
- type: TYPE_UINT64
- json_name: "nrUninterruptible"
- }
- field {
- name: "nr_io_wait"
- number: 5
- label: LABEL_OPTIONAL
- type: TYPE_UINT64
- json_name: "nrIoWait"
- }
- }
- options {
- go_package: "github.com/containerd/cgroups/cgroup1/stats"
- }
- syntax: "proto3"
-}
diff --git a/vendor/github.com/containerd/cgroups/v3/cgroup1/stats/metrics.proto b/vendor/github.com/containerd/cgroups/v3/cgroup1/stats/metrics.proto
deleted file mode 100644
index e6e4444b1..000000000
--- a/vendor/github.com/containerd/cgroups/v3/cgroup1/stats/metrics.proto
+++ /dev/null
@@ -1,158 +0,0 @@
-syntax = "proto3";
-
-package io.containerd.cgroups.v1;
-
-option go_package = "github.com/containerd/cgroups/cgroup1/stats";
-
-message Metrics {
- repeated HugetlbStat hugetlb = 1;
- PidsStat pids = 2;
- CPUStat cpu = 3;
- MemoryStat memory = 4;
- BlkIOStat blkio = 5;
- RdmaStat rdma = 6;
- repeated NetworkStat network = 7;
- CgroupStats cgroup_stats = 8;
- MemoryOomControl memory_oom_control = 9;
-}
-
-message HugetlbStat {
- uint64 usage = 1;
- uint64 max = 2;
- uint64 failcnt = 3;
- string pagesize = 4;
-}
-
-message PidsStat {
- uint64 current = 1;
- uint64 limit = 2;
-}
-
-message CPUStat {
- CPUUsage usage = 1;
- Throttle throttling = 2;
-}
-
-message CPUUsage {
- // values in nanoseconds
- uint64 total = 1;
- uint64 kernel = 2;
- uint64 user = 3;
- repeated uint64 per_cpu = 4;
-
-}
-
-message Throttle {
- uint64 periods = 1;
- uint64 throttled_periods = 2;
- uint64 throttled_time = 3;
-}
-
-message MemoryStat {
- uint64 cache = 1;
- uint64 rss = 2;
- uint64 rss_huge = 3;
- uint64 mapped_file = 4;
- uint64 dirty = 5;
- uint64 writeback = 6;
- uint64 pg_pg_in = 7;
- uint64 pg_pg_out = 8;
- uint64 pg_fault = 9;
- uint64 pg_maj_fault = 10;
- uint64 inactive_anon = 11;
- uint64 active_anon = 12;
- uint64 inactive_file = 13;
- uint64 active_file = 14;
- uint64 unevictable = 15;
- uint64 hierarchical_memory_limit = 16;
- uint64 hierarchical_swap_limit = 17;
- uint64 total_cache = 18;
- uint64 total_rss = 19;
- uint64 total_rss_huge = 20;
- uint64 total_mapped_file = 21;
- uint64 total_dirty = 22;
- uint64 total_writeback = 23;
- uint64 total_pg_pg_in = 24;
- uint64 total_pg_pg_out = 25;
- uint64 total_pg_fault = 26;
- uint64 total_pg_maj_fault = 27;
- uint64 total_inactive_anon = 28;
- uint64 total_active_anon = 29;
- uint64 total_inactive_file = 30;
- uint64 total_active_file = 31;
- uint64 total_unevictable = 32;
- MemoryEntry usage = 33;
- MemoryEntry swap = 34;
- MemoryEntry kernel = 35;
- MemoryEntry kernel_tcp = 36;
-
-}
-
-message MemoryEntry {
- uint64 limit = 1;
- uint64 usage = 2;
- uint64 max = 3;
- uint64 failcnt = 4;
-}
-
-message MemoryOomControl {
- uint64 oom_kill_disable = 1;
- uint64 under_oom = 2;
- uint64 oom_kill = 3;
-}
-
-message BlkIOStat {
- repeated BlkIOEntry io_service_bytes_recursive = 1;
- repeated BlkIOEntry io_serviced_recursive = 2;
- repeated BlkIOEntry io_queued_recursive = 3;
- repeated BlkIOEntry io_service_time_recursive = 4;
- repeated BlkIOEntry io_wait_time_recursive = 5;
- repeated BlkIOEntry io_merged_recursive = 6;
- repeated BlkIOEntry io_time_recursive = 7;
- repeated BlkIOEntry sectors_recursive = 8;
-}
-
-message BlkIOEntry {
- string op = 1;
- string device = 2;
- uint64 major = 3;
- uint64 minor = 4;
- uint64 value = 5;
-}
-
-message RdmaStat {
- repeated RdmaEntry current = 1;
- repeated RdmaEntry limit = 2;
-}
-
-message RdmaEntry {
- string device = 1;
- uint32 hca_handles = 2;
- uint32 hca_objects = 3;
-}
-
-message NetworkStat {
- string name = 1;
- uint64 rx_bytes = 2;
- uint64 rx_packets = 3;
- uint64 rx_errors = 4;
- uint64 rx_dropped = 5;
- uint64 tx_bytes = 6;
- uint64 tx_packets = 7;
- uint64 tx_errors = 8;
- uint64 tx_dropped = 9;
-}
-
-// CgroupStats exports per-cgroup statistics.
-message CgroupStats {
- // number of tasks sleeping
- uint64 nr_sleeping = 1;
- // number of tasks running
- uint64 nr_running = 2;
- // number of tasks in stopped state
- uint64 nr_stopped = 3;
- // number of tasks in uninterruptible state
- uint64 nr_uninterruptible = 4;
- // number of tasks waiting on IO
- uint64 nr_io_wait = 5;
-}
diff --git a/vendor/github.com/containerd/cgroups/v3/cgroup1/subsystem.go b/vendor/github.com/containerd/cgroups/v3/cgroup1/subsystem.go
deleted file mode 100644
index d32ea2cae..000000000
--- a/vendor/github.com/containerd/cgroups/v3/cgroup1/subsystem.go
+++ /dev/null
@@ -1,117 +0,0 @@
-/*
- Copyright The containerd Authors.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-
-package cgroup1
-
-import (
- "fmt"
- "os"
-
- "github.com/containerd/cgroups/v3"
- v1 "github.com/containerd/cgroups/v3/cgroup1/stats"
- specs "github.com/opencontainers/runtime-spec/specs-go"
-)
-
-// Name is a typed name for a cgroup subsystem
-type Name string
-
-const (
- Devices Name = "devices"
- Hugetlb Name = "hugetlb"
- Freezer Name = "freezer"
- Pids Name = "pids"
- NetCLS Name = "net_cls"
- NetPrio Name = "net_prio"
- PerfEvent Name = "perf_event"
- Cpuset Name = "cpuset"
- Cpu Name = "cpu"
- Cpuacct Name = "cpuacct"
- Memory Name = "memory"
- Blkio Name = "blkio"
- Rdma Name = "rdma"
-)
-
-// Subsystems returns a complete list of the default cgroups
-// available on most linux systems
-func Subsystems() []Name {
- n := []Name{
- Freezer,
- Pids,
- NetCLS,
- NetPrio,
- PerfEvent,
- Cpuset,
- Cpu,
- Cpuacct,
- Memory,
- Blkio,
- Rdma,
- }
- if !cgroups.RunningInUserNS() {
- n = append(n, Devices)
- }
- if _, err := os.Stat("/sys/kernel/mm/hugepages"); err == nil {
- n = append(n, Hugetlb)
- }
- return n
-}
-
-type Subsystem interface {
- Name() Name
-}
-
-type pather interface {
- Subsystem
- Path(path string) string
-}
-
-type creator interface {
- Subsystem
- Create(path string, resources *specs.LinuxResources) error
-}
-
-type deleter interface {
- Subsystem
- Delete(path string) error
-}
-
-type stater interface {
- Subsystem
- Stat(path string, stats *v1.Metrics) error
-}
-
-type updater interface {
- Subsystem
- Update(path string, resources *specs.LinuxResources) error
-}
-
-// SingleSubsystem returns a single cgroup subsystem within the base Hierarchy
-func SingleSubsystem(baseHierarchy Hierarchy, subsystem Name) Hierarchy {
- return func() ([]Subsystem, error) {
- subsystems, err := baseHierarchy()
- if err != nil {
- return nil, err
- }
- for _, s := range subsystems {
- if s.Name() == subsystem {
- return []Subsystem{
- s,
- }, nil
- }
- }
- return nil, fmt.Errorf("unable to find subsystem %s", subsystem)
- }
-}
diff --git a/vendor/github.com/containerd/cgroups/v3/cgroup1/systemd.go b/vendor/github.com/containerd/cgroups/v3/cgroup1/systemd.go
deleted file mode 100644
index d327effc8..000000000
--- a/vendor/github.com/containerd/cgroups/v3/cgroup1/systemd.go
+++ /dev/null
@@ -1,158 +0,0 @@
-/*
- Copyright The containerd Authors.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-
-package cgroup1
-
-import (
- "context"
- "path/filepath"
- "strings"
- "sync"
-
- systemdDbus "github.com/coreos/go-systemd/v22/dbus"
- "github.com/godbus/dbus/v5"
- specs "github.com/opencontainers/runtime-spec/specs-go"
-)
-
-const (
- SystemdDbus Name = "systemd"
- defaultSlice = "system.slice"
-)
-
-var (
- canDelegate bool
- once sync.Once
-)
-
-func Systemd() ([]Subsystem, error) {
- root, err := v1MountPoint()
- if err != nil {
- return nil, err
- }
- defaultSubsystems, err := defaults(root)
- if err != nil {
- return nil, err
- }
- s, err := NewSystemd(root)
- if err != nil {
- return nil, err
- }
- // make sure the systemd controller is added first
- return append([]Subsystem{s}, defaultSubsystems...), nil
-}
-
-func Slice(slice, name string) Path {
- if slice == "" {
- slice = defaultSlice
- }
- return func(subsystem Name) (string, error) {
- return filepath.Join(slice, name), nil
- }
-}
-
-func NewSystemd(root string) (*SystemdController, error) {
- return &SystemdController{
- root: root,
- }, nil
-}
-
-type SystemdController struct {
- mu sync.Mutex
- root string
-}
-
-func (s *SystemdController) Name() Name {
- return SystemdDbus
-}
-
-func (s *SystemdController) Create(path string, _ *specs.LinuxResources) error {
- ctx := context.TODO()
- conn, err := systemdDbus.NewWithContext(ctx)
- if err != nil {
- return err
- }
- defer conn.Close()
- slice, name := splitName(path)
- // We need to see if systemd can handle the delegate property
- // Systemd will return an error if it cannot handle delegate regardless
- // of its bool setting.
- checkDelegate := func() {
- canDelegate = true
- dlSlice := newProperty("Delegate", true)
- if _, err := conn.StartTransientUnitContext(ctx, slice, "testdelegate", []systemdDbus.Property{dlSlice}, nil); err != nil {
- if dbusError, ok := err.(dbus.Error); ok {
- // Starting with systemd v237, Delegate is not even a property of slices anymore,
- // so the D-Bus call fails with "InvalidArgs" error.
- if strings.Contains(dbusError.Name, "org.freedesktop.DBus.Error.PropertyReadOnly") || strings.Contains(dbusError.Name, "org.freedesktop.DBus.Error.InvalidArgs") {
- canDelegate = false
- }
- }
- }
-
- _, _ = conn.StopUnitContext(ctx, slice, "testDelegate", nil)
- }
- once.Do(checkDelegate)
- properties := []systemdDbus.Property{
- systemdDbus.PropDescription("cgroup " + name),
- systemdDbus.PropWants(slice),
- newProperty("DefaultDependencies", false),
- newProperty("MemoryAccounting", true),
- newProperty("CPUAccounting", true),
- newProperty("BlockIOAccounting", true),
- }
-
- // If we can delegate, we add the property back in
- if canDelegate {
- properties = append(properties, newProperty("Delegate", true))
- }
-
- ch := make(chan string)
- _, err = conn.StartTransientUnitContext(ctx, name, "replace", properties, ch)
- if err != nil {
- return err
- }
- <-ch
- return nil
-}
-
-func (s *SystemdController) Delete(path string) error {
- ctx := context.TODO()
- conn, err := systemdDbus.NewWithContext(ctx)
- if err != nil {
- return err
- }
- defer conn.Close()
- _, name := splitName(path)
- ch := make(chan string)
- _, err = conn.StopUnitContext(ctx, name, "replace", ch)
- if err != nil {
- return err
- }
- <-ch
- return nil
-}
-
-func newProperty(name string, units interface{}) systemdDbus.Property {
- return systemdDbus.Property{
- Name: name,
- Value: dbus.MakeVariant(units),
- }
-}
-
-func splitName(path string) (slice string, unit string) {
- slice, unit = filepath.Split(path)
- return strings.TrimSuffix(slice, "/"), unit
-}
diff --git a/vendor/github.com/containerd/cgroups/v3/cgroup1/ticks.go b/vendor/github.com/containerd/cgroups/v3/cgroup1/ticks.go
deleted file mode 100644
index 2c6fbdc0d..000000000
--- a/vendor/github.com/containerd/cgroups/v3/cgroup1/ticks.go
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- Copyright The containerd Authors.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-
-package cgroup1
-
-func getClockTicks() uint64 {
- // The value comes from `C.sysconf(C._SC_CLK_TCK)`, and
- // on Linux it's a constant which is safe to be hard coded,
- // so we can avoid using cgo here.
- // See https://github.com/containerd/cgroups/pull/12 for
- // more details.
- return 100
-}
diff --git a/vendor/github.com/containerd/cgroups/v3/cgroup1/utils.go b/vendor/github.com/containerd/cgroups/v3/cgroup1/utils.go
deleted file mode 100644
index 8ae005dad..000000000
--- a/vendor/github.com/containerd/cgroups/v3/cgroup1/utils.go
+++ /dev/null
@@ -1,265 +0,0 @@
-/*
- Copyright The containerd Authors.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-
-package cgroup1
-
-import (
- "bufio"
- "fmt"
- "os"
- "path/filepath"
- "strconv"
- "strings"
- "time"
-
- "github.com/containerd/cgroups/v3"
- units "github.com/docker/go-units"
- specs "github.com/opencontainers/runtime-spec/specs-go"
-)
-
-// defaults returns all known groups
-func defaults(root string) ([]Subsystem, error) {
- h, err := NewHugetlb(root)
- if err != nil && !os.IsNotExist(err) {
- return nil, err
- }
- s := []Subsystem{
- NewNamed(root, "systemd"),
- NewFreezer(root),
- NewPids(root),
- NewNetCls(root),
- NewNetPrio(root),
- NewPerfEvent(root),
- NewCpuset(root),
- NewCpu(root),
- NewCpuacct(root),
- NewMemory(root),
- NewBlkio(root),
- NewRdma(root),
- }
- // only add the devices cgroup if we are not in a user namespace
- // because modifications are not allowed
- if !cgroups.RunningInUserNS() {
- s = append(s, NewDevices(root))
- }
- // add the hugetlb cgroup if error wasn't due to missing hugetlb
- // cgroup support on the host
- if err == nil {
- s = append(s, h)
- }
- return s, nil
-}
-
-// remove will remove a cgroup path handling EAGAIN and EBUSY errors and
-// retrying the remove after a exp timeout
-func remove(path string) error {
- delay := 10 * time.Millisecond
- for i := 0; i < 5; i++ {
- if i != 0 {
- time.Sleep(delay)
- delay *= 2
- }
- if err := os.RemoveAll(path); err == nil {
- return nil
- }
- }
- return fmt.Errorf("cgroups: unable to remove path %q", path)
-}
-
-// readPids will read all the pids of processes or tasks in a cgroup by the provided path
-func readPids(path string, subsystem Name, pType procType) ([]Process, error) {
- f, err := os.Open(filepath.Join(path, pType))
- if err != nil {
- return nil, err
- }
- defer f.Close()
- var (
- out []Process
- s = bufio.NewScanner(f)
- )
- for s.Scan() {
- if t := s.Text(); t != "" {
- pid, err := strconv.Atoi(t)
- if err != nil {
- return nil, err
- }
- out = append(out, Process{
- Pid: pid,
- Subsystem: subsystem,
- Path: path,
- })
- }
- }
- if err := s.Err(); err != nil {
- // failed to read all pids?
- return nil, err
- }
- return out, nil
-}
-
-func hugePageSizes() ([]string, error) {
- var (
- pageSizes []string
- sizeList = []string{"B", "KB", "MB", "GB", "TB", "PB"}
- )
- files, err := os.ReadDir("/sys/kernel/mm/hugepages")
- if err != nil {
- return nil, err
- }
- for _, st := range files {
- nameArray := strings.Split(st.Name(), "-")
- pageSize, err := units.RAMInBytes(nameArray[1])
- if err != nil {
- return nil, err
- }
- pageSizes = append(pageSizes, units.CustomSize("%g%s", float64(pageSize), 1024.0, sizeList))
- }
- return pageSizes, nil
-}
-
-func readUint(path string) (uint64, error) {
- v, err := os.ReadFile(path)
- if err != nil {
- return 0, err
- }
- return parseUint(strings.TrimSpace(string(v)), 10, 64)
-}
-
-func parseUint(s string, base, bitSize int) (uint64, error) {
- v, err := strconv.ParseUint(s, base, bitSize)
- if err != nil {
- intValue, intErr := strconv.ParseInt(s, base, bitSize)
- // 1. Handle negative values greater than MinInt64 (and)
- // 2. Handle negative values lesser than MinInt64
- if intErr == nil && intValue < 0 {
- return 0, nil
- } else if intErr != nil &&
- intErr.(*strconv.NumError).Err == strconv.ErrRange &&
- intValue < 0 {
- return 0, nil
- }
- return 0, err
- }
- return v, nil
-}
-
-func parseKV(raw string) (string, uint64, error) {
- parts := strings.Fields(raw)
- switch len(parts) {
- case 2:
- v, err := parseUint(parts[1], 10, 64)
- if err != nil {
- return "", 0, err
- }
- return parts[0], v, nil
- default:
- return "", 0, ErrInvalidFormat
- }
-}
-
-// ParseCgroupFile parses the given cgroup file, typically /proc/self/cgroup
-// or /proc/<pid>/cgroup, into a map of subsystems to cgroup paths, e.g.
-//
-// "cpu": "/user.slice/user-1000.slice"
-// "pids": "/user.slice/user-1000.slice"
-//
-// etc.
-//
-// The resulting map does not have an element for cgroup v2 unified hierarchy.
-// Use [cgroups.ParseCgroupFileUnified] to get the unified path.
-func ParseCgroupFile(path string) (map[string]string, error) {
- x, _, err := ParseCgroupFileUnified(path)
- return x, err
-}
-
-// ParseCgroupFileUnified returns legacy subsystem paths as the first value,
-// and returns the unified path as the second value.
-//
-// Deprecated: use [cgroups.ParseCgroupFileUnified] instead .
-func ParseCgroupFileUnified(path string) (map[string]string, string, error) {
- return cgroups.ParseCgroupFileUnified(path)
-}
-
-func getCgroupDestination(subsystem string) (string, error) {
- f, err := os.Open("/proc/self/mountinfo")
- if err != nil {
- return "", err
- }
- defer f.Close()
- s := bufio.NewScanner(f)
- for s.Scan() {
- fields := strings.Split(s.Text(), " ")
- if len(fields) < 10 {
- // broken mountinfo?
- continue
- }
- if fields[len(fields)-3] != "cgroup" {
- continue
- }
- for _, opt := range strings.Split(fields[len(fields)-1], ",") {
- if opt == subsystem {
- return fields[3], nil
- }
- }
- }
- if err := s.Err(); err != nil {
- return "", err
- }
- return "", ErrNoCgroupMountDestination
-}
-
-func pathers(subystems []Subsystem) []pather {
- var out []pather
- for _, s := range subystems {
- if p, ok := s.(pather); ok {
- out = append(out, p)
- }
- }
- return out
-}
-
-func initializeSubsystem(s Subsystem, path Path, resources *specs.LinuxResources) error {
- if c, ok := s.(creator); ok {
- p, err := path(s.Name())
- if err != nil {
- return err
- }
- if err := c.Create(p, resources); err != nil {
- return err
- }
- } else if c, ok := s.(pather); ok {
- p, err := path(s.Name())
- if err != nil {
- return err
- }
- // do the default create if the group does not have a custom one
- if err := os.MkdirAll(c.Path(p), defaultDirPerm); err != nil {
- return err
- }
- }
- return nil
-}
-
-func cleanPath(path string) string {
- if path == "" {
- return ""
- }
- path = filepath.Clean(path)
- if !filepath.IsAbs(path) {
- path, _ = filepath.Rel(string(os.PathSeparator), filepath.Clean(string(os.PathSeparator)+path))
- }
- return path
-}
diff --git a/vendor/github.com/containerd/cgroups/v3/cgroup1/v1.go b/vendor/github.com/containerd/cgroups/v3/cgroup1/v1.go
deleted file mode 100644
index d4c7db6f2..000000000
--- a/vendor/github.com/containerd/cgroups/v3/cgroup1/v1.go
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- Copyright The containerd Authors.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-
-package cgroup1
-
-import (
- "bufio"
- "fmt"
- "os"
- "path/filepath"
- "strings"
-)
-
-// Default returns all the groups in the default cgroups mountpoint in a single hierarchy
-func Default() ([]Subsystem, error) {
- root, err := v1MountPoint()
- if err != nil {
- return nil, err
- }
- subsystems, err := defaults(root)
- if err != nil {
- return nil, err
- }
- var enabled []Subsystem
- for _, s := range pathers(subsystems) {
- // check and remove the default groups that do not exist
- if _, err := os.Lstat(s.Path("/")); err == nil {
- enabled = append(enabled, s)
- }
- }
- return enabled, nil
-}
-
-// v1MountPoint returns the mount point where the cgroup
-// mountpoints are mounted in a single hiearchy
-func v1MountPoint() (string, error) {
- f, err := os.Open("/proc/self/mountinfo")
- if err != nil {
- return "", err
- }
- defer f.Close()
- scanner := bufio.NewScanner(f)
- for scanner.Scan() {
- var (
- text = scanner.Text()
- fields = strings.Split(text, " ")
- numFields = len(fields)
- )
- if numFields < 10 {
- return "", fmt.Errorf("mountinfo: bad entry %q", text)
- }
- if fields[numFields-3] == "cgroup" {
- return filepath.Dir(fields[4]), nil
- }
- }
- if err := scanner.Err(); err != nil {
- return "", err
- }
- return "", ErrMountPointNotExist
-}
diff --git a/vendor/github.com/containerd/cgroups/v3/cgroup2/cpu.go b/vendor/github.com/containerd/cgroups/v3/cgroup2/cpu.go
deleted file mode 100644
index dcb253db5..000000000
--- a/vendor/github.com/containerd/cgroups/v3/cgroup2/cpu.go
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- Copyright The containerd Authors.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-
-package cgroup2
-
-import (
- "math"
- "strconv"
- "strings"
-)
-
-type CPUMax string
-
-func NewCPUMax(quota *int64, period *uint64) CPUMax {
- max := "max"
- if quota != nil {
- max = strconv.FormatInt(*quota, 10)
- }
- return CPUMax(strings.Join([]string{max, strconv.FormatUint(*period, 10)}, " "))
-}
-
-type CPU struct {
- Weight *uint64
- Max CPUMax
- Cpus string
- Mems string
-}
-
-func (c CPUMax) extractQuotaAndPeriod() (int64, uint64) {
- var (
- quota int64
- period uint64
- )
- values := strings.Split(string(c), " ")
- if values[0] == "max" {
- quota = math.MaxInt64
- } else {
- quota, _ = strconv.ParseInt(values[0], 10, 64)
- }
- period, _ = strconv.ParseUint(values[1], 10, 64)
- return quota, period
-}
-
-func (r *CPU) Values() (o []Value) {
- if r.Weight != nil {
- o = append(o, Value{
- filename: "cpu.weight",
- value: *r.Weight,
- })
- }
- if r.Max != "" {
- o = append(o, Value{
- filename: "cpu.max",
- value: r.Max,
- })
- }
- if r.Cpus != "" {
- o = append(o, Value{
- filename: "cpuset.cpus",
- value: r.Cpus,
- })
- }
- if r.Mems != "" {
- o = append(o, Value{
- filename: "cpuset.mems",
- value: r.Mems,
- })
- }
- return o
-}
diff --git a/vendor/github.com/containerd/cgroups/v3/cgroup2/devicefilter.go b/vendor/github.com/containerd/cgroups/v3/cgroup2/devicefilter.go
deleted file mode 100644
index 3a73ab105..000000000
--- a/vendor/github.com/containerd/cgroups/v3/cgroup2/devicefilter.go
+++ /dev/null
@@ -1,200 +0,0 @@
-/*
- Copyright The containerd Authors.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-
-// Devicefilter containes eBPF device filter program
-//
-// The implementation is based on https://github.com/containers/crun/blob/0.10.2/src/libcrun/ebpf.c
-//
-// Although ebpf.c is originally licensed under LGPL-3.0-or-later, the author (Giuseppe Scrivano)
-// agreed to relicense the file in Apache License 2.0: https://github.com/opencontainers/runc/issues/2144#issuecomment-543116397
-//
-// This particular Go implementation based on runc version
-// https://github.com/opencontainers/runc/blob/master/libcontainer/cgroups/ebpf/devicefilter/devicefilter.go
-
-package cgroup2
-
-import (
- "errors"
- "fmt"
- "math"
-
- "github.com/cilium/ebpf/asm"
- "github.com/opencontainers/runtime-spec/specs-go"
- "golang.org/x/sys/unix"
-)
-
-const (
- // license string format is same as kernel MODULE_LICENSE macro
- license = "Apache"
-)
-
-// DeviceFilter returns eBPF device filter program and its license string
-func DeviceFilter(devices []specs.LinuxDeviceCgroup) (asm.Instructions, string, error) {
- p := &program{}
- p.init()
- for i := len(devices) - 1; i >= 0; i-- {
- if err := p.appendDevice(devices[i]); err != nil {
- return nil, "", err
- }
- }
- insts, err := p.finalize()
- return insts, license, err
-}
-
-type program struct {
- insts asm.Instructions
- hasWildCard bool
- blockID int
-}
-
-func (p *program) init() {
- // struct bpf_cgroup_dev_ctx: https://elixir.bootlin.com/linux/v5.3.6/source/include/uapi/linux/bpf.h#L3423
- /*
- u32 access_type
- u32 major
- u32 minor
- */
- // R2 <- type (lower 16 bit of u32 access_type at R1[0])
- p.insts = append(p.insts,
- asm.LoadMem(asm.R2, asm.R1, 0, asm.Half))
-
- // R3 <- access (upper 16 bit of u32 access_type at R1[0])
- p.insts = append(p.insts,
- asm.LoadMem(asm.R3, asm.R1, 0, asm.Word),
- // RSh: bitwise shift right
- asm.RSh.Imm32(asm.R3, 16))
-
- // R4 <- major (u32 major at R1[4])
- p.insts = append(p.insts,
- asm.LoadMem(asm.R4, asm.R1, 4, asm.Word))
-
- // R5 <- minor (u32 minor at R1[8])
- p.insts = append(p.insts,
- asm.LoadMem(asm.R5, asm.R1, 8, asm.Word))
-}
-
-// appendDevice needs to be called from the last element of OCI linux.resources.devices to the head element.
-func (p *program) appendDevice(dev specs.LinuxDeviceCgroup) error {
- if p.blockID < 0 {
- return errors.New("the program is finalized")
- }
- if p.hasWildCard {
- // All entries after wildcard entry are ignored
- return nil
- }
-
- bpfType := int32(-1)
- hasType := true
- switch dev.Type {
- case string('c'):
- bpfType = int32(unix.BPF_DEVCG_DEV_CHAR)
- case string('b'):
- bpfType = int32(unix.BPF_DEVCG_DEV_BLOCK)
- case string('a'):
- hasType = false
- default:
- // if not specified in OCI json, typ is set to DeviceTypeAll
- return fmt.Errorf("invalid DeviceType %q", dev.Type)
- }
- if *dev.Major > math.MaxUint32 {
- return fmt.Errorf("invalid major %d", *dev.Major)
- }
- if *dev.Minor > math.MaxUint32 {
- return fmt.Errorf("invalid minor %d", *dev.Major)
- }
- hasMajor := *dev.Major >= 0 // if not specified in OCI json, major is set to -1
- hasMinor := *dev.Minor >= 0
- bpfAccess := int32(0)
- for _, r := range dev.Access {
- switch r {
- case 'r':
- bpfAccess |= unix.BPF_DEVCG_ACC_READ
- case 'w':
- bpfAccess |= unix.BPF_DEVCG_ACC_WRITE
- case 'm':
- bpfAccess |= unix.BPF_DEVCG_ACC_MKNOD
- default:
- return fmt.Errorf("unknown device access %v", r)
- }
- }
- // If the access is rwm, skip the check.
- hasAccess := bpfAccess != (unix.BPF_DEVCG_ACC_READ | unix.BPF_DEVCG_ACC_WRITE | unix.BPF_DEVCG_ACC_MKNOD)
-
- blockSym := fmt.Sprintf("block-%d", p.blockID)
- nextBlockSym := fmt.Sprintf("block-%d", p.blockID+1)
- prevBlockLastIdx := len(p.insts) - 1
- if hasType {
- p.insts = append(p.insts,
- // if (R2 != bpfType) goto next
- asm.JNE.Imm(asm.R2, bpfType, nextBlockSym),
- )
- }
- if hasAccess {
- p.insts = append(p.insts,
- // if (R3 & bpfAccess == 0 /* use R1 as a temp var */) goto next
- asm.Mov.Reg32(asm.R1, asm.R3),
- asm.And.Imm32(asm.R1, bpfAccess),
- asm.JEq.Imm(asm.R1, 0, nextBlockSym),
- )
- }
- if hasMajor {
- p.insts = append(p.insts,
- // if (R4 != major) goto next
- asm.JNE.Imm(asm.R4, int32(*dev.Major), nextBlockSym),
- )
- }
- if hasMinor {
- p.insts = append(p.insts,
- // if (R5 != minor) goto next
- asm.JNE.Imm(asm.R5, int32(*dev.Minor), nextBlockSym),
- )
- }
- if !hasType && !hasAccess && !hasMajor && !hasMinor {
- p.hasWildCard = true
- }
- p.insts = append(p.insts, acceptBlock(dev.Allow)...)
- // set blockSym to the first instruction we added in this iteration
- p.insts[prevBlockLastIdx+1] = p.insts[prevBlockLastIdx+1].Sym(blockSym)
- p.blockID++
- return nil
-}
-
-func (p *program) finalize() (asm.Instructions, error) {
- if p.hasWildCard {
- // acceptBlock with asm.Return() is already inserted
- return p.insts, nil
- }
- blockSym := fmt.Sprintf("block-%d", p.blockID)
- p.insts = append(p.insts,
- // R0 <- 0
- asm.Mov.Imm32(asm.R0, 0).Sym(blockSym),
- asm.Return(),
- )
- p.blockID = -1
- return p.insts, nil
-}
-
-func acceptBlock(accept bool) asm.Instructions {
- v := int32(0)
- if accept {
- v = 1
- }
- return []asm.Instruction{
- // R0 <- v
- asm.Mov.Imm32(asm.R0, v),
- asm.Return(),
- }
-}
diff --git a/vendor/github.com/containerd/cgroups/v3/cgroup2/ebpf.go b/vendor/github.com/containerd/cgroups/v3/cgroup2/ebpf.go
deleted file mode 100644
index 503a147bb..000000000
--- a/vendor/github.com/containerd/cgroups/v3/cgroup2/ebpf.go
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- Copyright The containerd Authors.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-
-package cgroup2
-
-import (
- "fmt"
-
- "github.com/cilium/ebpf"
- "github.com/cilium/ebpf/asm"
- "github.com/cilium/ebpf/link"
- "github.com/opencontainers/runtime-spec/specs-go"
- "golang.org/x/sys/unix"
-)
-
-// LoadAttachCgroupDeviceFilter installs eBPF device filter program to /sys/fs/cgroup/<foo> directory.
-//
-// Requires the system to be running in cgroup2 unified-mode with kernel >= 4.15 .
-//
-// https://github.com/torvalds/linux/commit/ebc614f687369f9df99828572b1d85a7c2de3d92
-func LoadAttachCgroupDeviceFilter(insts asm.Instructions, license string, dirFD int) (func() error, error) {
- nilCloser := func() error {
- return nil
- }
- spec := &ebpf.ProgramSpec{
- Type: ebpf.CGroupDevice,
- Instructions: insts,
- License: license,
- }
- prog, err := ebpf.NewProgram(spec)
- if err != nil {
- return nilCloser, err
- }
- err = link.RawAttachProgram(link.RawAttachProgramOptions{
- Target: dirFD,
- Program: prog,
- Attach: ebpf.AttachCGroupDevice,
- Flags: unix.BPF_F_ALLOW_MULTI,
- })
- if err != nil {
- return nilCloser, fmt.Errorf("failed to call BPF_PROG_ATTACH (BPF_CGROUP_DEVICE, BPF_F_ALLOW_MULTI): %w", err)
- }
- closer := func() error {
- err = link.RawDetachProgram(link.RawDetachProgramOptions{
- Target: dirFD,
- Program: prog,
- Attach: ebpf.AttachCGroupDevice,
- })
- if err != nil {
- return fmt.Errorf("failed to call BPF_PROG_DETACH (BPF_CGROUP_DEVICE): %w", err)
- }
- return nil
- }
- return closer, nil
-}
-
-func isRWM(cgroupPermissions string) bool {
- r := false
- w := false
- m := false
- for _, rn := range cgroupPermissions {
- switch rn {
- case 'r':
- r = true
- case 'w':
- w = true
- case 'm':
- m = true
- }
- }
- return r && w && m
-}
-
-// the logic is from runc
-// https://github.com/opencontainers/runc/blob/master/libcontainer/cgroups/fs/devices_v2.go#L44
-func canSkipEBPFError(devices []specs.LinuxDeviceCgroup) bool {
- for _, dev := range devices {
- if dev.Allow || !isRWM(dev.Access) {
- return false
- }
- }
- return true
-}
diff --git a/vendor/github.com/containerd/cgroups/v3/cgroup2/errors.go b/vendor/github.com/containerd/cgroups/v3/cgroup2/errors.go
deleted file mode 100644
index f57e15e54..000000000
--- a/vendor/github.com/containerd/cgroups/v3/cgroup2/errors.go
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- Copyright The containerd Authors.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-
-package cgroup2
-
-import (
- "errors"
-)
-
-var (
- ErrInvalidFormat = errors.New("cgroups: parsing file with invalid format failed")
- ErrInvalidGroupPath = errors.New("cgroups: invalid group path")
-)
diff --git a/vendor/github.com/containerd/cgroups/v3/cgroup2/hugetlb.go b/vendor/github.com/containerd/cgroups/v3/cgroup2/hugetlb.go
deleted file mode 100644
index b476b49ff..000000000
--- a/vendor/github.com/containerd/cgroups/v3/cgroup2/hugetlb.go
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- Copyright The containerd Authors.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-
-package cgroup2
-
-import "strings"
-
-type HugeTlb []HugeTlbEntry
-
-type HugeTlbEntry struct {
- HugePageSize string
- Limit uint64
-}
-
-func (r *HugeTlb) Values() (o []Value) {
- for _, e := range *r {
- o = append(o, Value{
- filename: strings.Join([]string{"hugetlb", e.HugePageSize, "max"}, "."),
- value: e.Limit,
- })
- }
-
- return o
-}
diff --git a/vendor/github.com/containerd/cgroups/v3/cgroup2/io.go b/vendor/github.com/containerd/cgroups/v3/cgroup2/io.go
deleted file mode 100644
index b70dd8ef5..000000000
--- a/vendor/github.com/containerd/cgroups/v3/cgroup2/io.go
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- Copyright The containerd Authors.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-
-package cgroup2
-
-import "fmt"
-
-type IOType string
-
-const (
- ReadBPS IOType = "rbps"
- WriteBPS IOType = "wbps"
- ReadIOPS IOType = "riops"
- WriteIOPS IOType = "wiops"
-)
-
-type BFQ struct {
- Weight uint16
-}
-
-type Entry struct {
- Type IOType
- Major int64
- Minor int64
- Rate uint64
-}
-
-func (e Entry) String() string {
- return fmt.Sprintf("%d:%d %s=%d", e.Major, e.Minor, e.Type, e.Rate)
-}
-
-type IO struct {
- BFQ BFQ
- Max []Entry
-}
-
-func (i *IO) Values() (o []Value) {
- if i.BFQ.Weight != 0 {
- o = append(o, Value{
- filename: "io.bfq.weight",
- value: i.BFQ.Weight,
- })
- }
- for _, e := range i.Max {
- o = append(o, Value{
- filename: "io.max",
- value: e.String(),
- })
- }
- return o
-}
diff --git a/vendor/github.com/containerd/cgroups/v3/cgroup2/manager.go b/vendor/github.com/containerd/cgroups/v3/cgroup2/manager.go
deleted file mode 100644
index fc9fcf453..000000000
--- a/vendor/github.com/containerd/cgroups/v3/cgroup2/manager.go
+++ /dev/null
@@ -1,990 +0,0 @@
-/*
- Copyright The containerd Authors.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-
-package cgroup2
-
-import (
- "bufio"
- "context"
- "errors"
- "fmt"
- "io"
- "math"
- "os"
- "path/filepath"
- "strconv"
- "strings"
- "syscall"
- "time"
-
- "github.com/containerd/cgroups/v3/cgroup2/stats"
-
- systemdDbus "github.com/coreos/go-systemd/v22/dbus"
- "github.com/godbus/dbus/v5"
- "github.com/opencontainers/runtime-spec/specs-go"
- "github.com/sirupsen/logrus"
- "golang.org/x/sys/unix"
-)
-
-const (
- subtreeControl = "cgroup.subtree_control"
- controllersFile = "cgroup.controllers"
- killFile = "cgroup.kill"
- defaultCgroup2Path = "/sys/fs/cgroup"
- defaultSlice = "system.slice"
-)
-
-var (
- canDelegate bool
-)
-
-type Event struct {
- Low uint64
- High uint64
- Max uint64
- OOM uint64
- OOMKill uint64
-}
-
-// Resources for a cgroups v2 unified hierarchy
-type Resources struct {
- CPU *CPU
- Memory *Memory
- Pids *Pids
- IO *IO
- RDMA *RDMA
- HugeTlb *HugeTlb
- // When len(Devices) is zero, devices are not controlled
- Devices []specs.LinuxDeviceCgroup
-}
-
-// Values returns the raw filenames and values that
-// can be written to the unified hierarchy
-func (r *Resources) Values() (o []Value) {
- if r.CPU != nil {
- o = append(o, r.CPU.Values()...)
- }
- if r.Memory != nil {
- o = append(o, r.Memory.Values()...)
- }
- if r.Pids != nil {
- o = append(o, r.Pids.Values()...)
- }
- if r.IO != nil {
- o = append(o, r.IO.Values()...)
- }
- if r.RDMA != nil {
- o = append(o, r.RDMA.Values()...)
- }
- if r.HugeTlb != nil {
- o = append(o, r.HugeTlb.Values()...)
- }
- return o
-}
-
-// EnabledControllers returns the list of all not nil resource controllers
-func (r *Resources) EnabledControllers() (c []string) {
- if r.CPU != nil {
- c = append(c, "cpu")
- c = append(c, "cpuset")
- }
- if r.Memory != nil {
- c = append(c, "memory")
- }
- if r.Pids != nil {
- c = append(c, "pids")
- }
- if r.IO != nil {
- c = append(c, "io")
- }
- if r.RDMA != nil {
- c = append(c, "rdma")
- }
- if r.HugeTlb != nil {
- c = append(c, "hugetlb")
- }
- return
-}
-
-// Value of a cgroup setting
-type Value struct {
- filename string
- value interface{}
-}
-
-// write the value to the full, absolute path, of a unified hierarchy
-func (c *Value) write(path string, perm os.FileMode) error {
- var data []byte
- switch t := c.value.(type) {
- case uint64:
- data = []byte(strconv.FormatUint(t, 10))
- case uint16:
- data = []byte(strconv.FormatUint(uint64(t), 10))
- case int64:
- data = []byte(strconv.FormatInt(t, 10))
- case []byte:
- data = t
- case string:
- data = []byte(t)
- case CPUMax:
- data = []byte(t)
- default:
- return ErrInvalidFormat
- }
-
- return os.WriteFile(
- filepath.Join(path, c.filename),
- data,
- perm,
- )
-}
-
-func writeValues(path string, values []Value) error {
- for _, o := range values {
- if err := o.write(path, defaultFilePerm); err != nil {
- return err
- }
- }
- return nil
-}
-
-func NewManager(mountpoint string, group string, resources *Resources) (*Manager, error) {
- if resources == nil {
- return nil, errors.New("resources reference is nil")
- }
- if err := VerifyGroupPath(group); err != nil {
- return nil, err
- }
- path := filepath.Join(mountpoint, group)
- if err := os.MkdirAll(path, defaultDirPerm); err != nil {
- return nil, err
- }
- m := Manager{
- unifiedMountpoint: mountpoint,
- path: path,
- }
- if err := m.ToggleControllers(resources.EnabledControllers(), Enable); err != nil {
- // clean up cgroup dir on failure
- os.Remove(path)
- return nil, err
- }
- if err := setResources(path, resources); err != nil {
- os.Remove(path)
- return nil, err
- }
- return &m, nil
-}
-
-type InitConfig struct {
- mountpoint string
-}
-
-type InitOpts func(c *InitConfig) error
-
-// WithMountpoint sets the unified mountpoint. The default path is /sys/fs/cgroup.
-func WithMountpoint(path string) InitOpts {
- return func(c *InitConfig) error {
- c.mountpoint = path
- return nil
- }
-}
-
-// Load a cgroup.
-func Load(group string, opts ...InitOpts) (*Manager, error) {
- c := InitConfig{mountpoint: defaultCgroup2Path}
- for _, opt := range opts {
- if err := opt(&c); err != nil {
- return nil, err
- }
- }
-
- if err := VerifyGroupPath(group); err != nil {
- return nil, err
- }
- path := filepath.Join(c.mountpoint, group)
- return &Manager{
- unifiedMountpoint: c.mountpoint,
- path: path,
- }, nil
-}
-
-type Manager struct {
- unifiedMountpoint string
- path string
-}
-
-func setResources(path string, resources *Resources) error {
- if resources != nil {
- if err := writeValues(path, resources.Values()); err != nil {
- return err
- }
- if err := setDevices(path, resources.Devices); err != nil {
- return err
- }
- }
- return nil
-}
-
-func (c *Manager) RootControllers() ([]string, error) {
- b, err := os.ReadFile(filepath.Join(c.unifiedMountpoint, controllersFile))
- if err != nil {
- return nil, err
- }
- return strings.Fields(string(b)), nil
-}
-
-func (c *Manager) Controllers() ([]string, error) {
- b, err := os.ReadFile(filepath.Join(c.path, controllersFile))
- if err != nil {
- return nil, err
- }
- return strings.Fields(string(b)), nil
-}
-
-func (c *Manager) Update(resources *Resources) error {
- return setResources(c.path, resources)
-}
-
-type ControllerToggle int
-
-const (
- Enable ControllerToggle = iota + 1
- Disable
-)
-
-func toggleFunc(controllers []string, prefix string) []string {
- out := make([]string, len(controllers))
- for i, c := range controllers {
- out[i] = prefix + c
- }
- return out
-}
-
-func (c *Manager) ToggleControllers(controllers []string, t ControllerToggle) error {
- // when c.path is like /foo/bar/baz, the following files need to be written:
- // * /sys/fs/cgroup/cgroup.subtree_control
- // * /sys/fs/cgroup/foo/cgroup.subtree_control
- // * /sys/fs/cgroup/foo/bar/cgroup.subtree_control
- // Note that /sys/fs/cgroup/foo/bar/baz/cgroup.subtree_control does not need to be written.
- split := strings.Split(c.path, "/")
- var lastErr error
- for i := range split {
- f := strings.Join(split[:i], "/")
- if !strings.HasPrefix(f, c.unifiedMountpoint) || f == c.path {
- continue
- }
- filePath := filepath.Join(f, subtreeControl)
- if err := c.writeSubtreeControl(filePath, controllers, t); err != nil {
- // When running as rootless, the user may face EPERM on parent groups, but it is neglible when the
- // controller is already written.
- // So we only return the last error.
- lastErr = fmt.Errorf("failed to write subtree controllers %+v to %q: %w", controllers, filePath, err)
- } else {
- lastErr = nil
- }
- }
- return lastErr
-}
-
-func (c *Manager) writeSubtreeControl(filePath string, controllers []string, t ControllerToggle) error {
- f, err := os.OpenFile(filePath, os.O_WRONLY, 0)
- if err != nil {
- return err
- }
- defer f.Close()
- switch t {
- case Enable:
- controllers = toggleFunc(controllers, "+")
- case Disable:
- controllers = toggleFunc(controllers, "-")
- }
- _, err = f.WriteString(strings.Join(controllers, " "))
- return err
-}
-
-func (c *Manager) NewChild(name string, resources *Resources) (*Manager, error) {
- if strings.HasPrefix(name, "/") {
- return nil, errors.New("name must be relative")
- }
- path := filepath.Join(c.path, name)
- if err := os.MkdirAll(path, defaultDirPerm); err != nil {
- return nil, err
- }
- m := Manager{
- unifiedMountpoint: c.unifiedMountpoint,
- path: path,
- }
- if resources != nil {
- if err := m.ToggleControllers(resources.EnabledControllers(), Enable); err != nil {
- // clean up cgroup dir on failure
- os.Remove(path)
- return nil, err
- }
- }
- if err := setResources(path, resources); err != nil {
- // clean up cgroup dir on failure
- os.Remove(path)
- return nil, err
- }
- return &m, nil
-}
-
-func (c *Manager) AddProc(pid uint64) error {
- v := Value{
- filename: cgroupProcs,
- value: pid,
- }
- return writeValues(c.path, []Value{v})
-}
-
-func (c *Manager) AddThread(tid uint64) error {
- v := Value{
- filename: cgroupThreads,
- value: tid,
- }
- return writeValues(c.path, []Value{v})
-}
-
-// Kill will try to forcibly exit all of the processes in the cgroup. This is
-// equivalent to sending a SIGKILL to every process. On kernels 5.14 and greater
-// this will use the cgroup.kill file, on anything that doesn't have the cgroup.kill
-// file, a manual process of freezing -> sending a SIGKILL to every process -> thawing
-// will be used.
-func (c *Manager) Kill() error {
- v := Value{
- filename: killFile,
- value: "1",
- }
- err := writeValues(c.path, []Value{v})
- if err == nil {
- return nil
- }
- logrus.Warnf("falling back to slower kill implementation: %s", err)
- // Fallback to slow method.
- return c.fallbackKill()
-}
-
-// fallbackKill is a slower fallback to the more modern (kernels 5.14+)
-// approach of writing to the cgroup.kill file. This is heavily pulled
-// from runc's same approach (in signalAllProcesses), with the only differences
-// being this is just tailored to the API exposed in this library, and we don't
-// need to care about signals other than SIGKILL.
-//
-// https://github.com/opencontainers/runc/blob/8da0a0b5675764feaaaaad466f6567a9983fcd08/libcontainer/init_linux.go#L523-L529
-func (c *Manager) fallbackKill() error {
- if err := c.Freeze(); err != nil {
- logrus.Warn(err)
- }
- pids, err := c.Procs(true)
- if err != nil {
- if err := c.Thaw(); err != nil {
- logrus.Warn(err)
- }
- return err
- }
- var procs []*os.Process
- for _, pid := range pids {
- p, err := os.FindProcess(int(pid))
- if err != nil {
- logrus.Warn(err)
- continue
- }
- procs = append(procs, p)
- if err := p.Signal(unix.SIGKILL); err != nil {
- logrus.Warn(err)
- }
- }
- if err := c.Thaw(); err != nil {
- logrus.Warn(err)
- }
-
- subreaper, err := getSubreaper()
- if err != nil {
- // The error here means that PR_GET_CHILD_SUBREAPER is not
- // supported because this code might run on a kernel older
- // than 3.4. We don't want to throw an error in that case,
- // and we simplify things, considering there is no subreaper
- // set.
- subreaper = 0
- }
-
- for _, p := range procs {
- // In case a subreaper has been setup, this code must not
- // wait for the process. Otherwise, we cannot be sure the
- // current process will be reaped by the subreaper, while
- // the subreaper might be waiting for this process in order
- // to retrieve its exit code.
- if subreaper == 0 {
- if _, err := p.Wait(); err != nil {
- if !errors.Is(err, unix.ECHILD) {
- logrus.Warnf("wait on pid %d failed: %s", p.Pid, err)
- }
- }
- }
- }
- return nil
-}
-
-func (c *Manager) Delete() error {
- // kernel prevents cgroups with running process from being removed, check the tree is empty
- processes, err := c.Procs(true)
- if err != nil {
- return err
- }
- if len(processes) > 0 {
- return fmt.Errorf("cgroups: unable to remove path %q: still contains running processes", c.path)
- }
- return remove(c.path)
-}
-
-func (c *Manager) Procs(recursive bool) ([]uint64, error) {
- var processes []uint64
- err := filepath.Walk(c.path, func(p string, info os.FileInfo, err error) error {
- if err != nil {
- return err
- }
- if !recursive && info.IsDir() {
- if p == c.path {
- return nil
- }
- return filepath.SkipDir
- }
- _, name := filepath.Split(p)
- if name != cgroupProcs {
- return nil
- }
- procs, err := parseCgroupProcsFile(p)
- if err != nil {
- return err
- }
- processes = append(processes, procs...)
- return nil
- })
- return processes, err
-}
-
-func (c *Manager) MoveTo(destination *Manager) error {
- processes, err := c.Procs(true)
- if err != nil {
- return err
- }
- for _, p := range processes {
- if err := destination.AddProc(p); err != nil {
- if strings.Contains(err.Error(), "no such process") {
- continue
- }
- return err
- }
- }
- return nil
-}
-
-var singleValueFiles = []string{
- "pids.current",
- "pids.max",
-}
-
-func (c *Manager) Stat() (*stats.Metrics, error) {
- controllers, err := c.Controllers()
- if err != nil {
- return nil, err
- }
- out := make(map[string]interface{})
- for _, controller := range controllers {
- switch controller {
- case "cpu", "memory":
- if err := readKVStatsFile(c.path, controller+".stat", out); err != nil {
- if os.IsNotExist(err) {
- continue
- }
- return nil, err
- }
- }
- }
- for _, name := range singleValueFiles {
- if err := readSingleFile(c.path, name, out); err != nil {
- if os.IsNotExist(err) {
- continue
- }
- return nil, err
- }
- }
- memoryEvents := make(map[string]interface{})
- if err := readKVStatsFile(c.path, "memory.events", memoryEvents); err != nil {
- if !os.IsNotExist(err) {
- return nil, err
- }
- }
- var metrics stats.Metrics
-
- metrics.Pids = &stats.PidsStat{
- Current: getPidValue("pids.current", out),
- Limit: getPidValue("pids.max", out),
- }
- metrics.CPU = &stats.CPUStat{
- UsageUsec: getUint64Value("usage_usec", out),
- UserUsec: getUint64Value("user_usec", out),
- SystemUsec: getUint64Value("system_usec", out),
- NrPeriods: getUint64Value("nr_periods", out),
- NrThrottled: getUint64Value("nr_throttled", out),
- ThrottledUsec: getUint64Value("throttled_usec", out),
- }
- metrics.Memory = &stats.MemoryStat{
- Anon: getUint64Value("anon", out),
- File: getUint64Value("file", out),
- KernelStack: getUint64Value("kernel_stack", out),
- Slab: getUint64Value("slab", out),
- Sock: getUint64Value("sock", out),
- Shmem: getUint64Value("shmem", out),
- FileMapped: getUint64Value("file_mapped", out),
- FileDirty: getUint64Value("file_dirty", out),
- FileWriteback: getUint64Value("file_writeback", out),
- AnonThp: getUint64Value("anon_thp", out),
- InactiveAnon: getUint64Value("inactive_anon", out),
- ActiveAnon: getUint64Value("active_anon", out),
- InactiveFile: getUint64Value("inactive_file", out),
- ActiveFile: getUint64Value("active_file", out),
- Unevictable: getUint64Value("unevictable", out),
- SlabReclaimable: getUint64Value("slab_reclaimable", out),
- SlabUnreclaimable: getUint64Value("slab_unreclaimable", out),
- Pgfault: getUint64Value("pgfault", out),
- Pgmajfault: getUint64Value("pgmajfault", out),
- WorkingsetRefault: getUint64Value("workingset_refault", out),
- WorkingsetActivate: getUint64Value("workingset_activate", out),
- WorkingsetNodereclaim: getUint64Value("workingset_nodereclaim", out),
- Pgrefill: getUint64Value("pgrefill", out),
- Pgscan: getUint64Value("pgscan", out),
- Pgsteal: getUint64Value("pgsteal", out),
- Pgactivate: getUint64Value("pgactivate", out),
- Pgdeactivate: getUint64Value("pgdeactivate", out),
- Pglazyfree: getUint64Value("pglazyfree", out),
- Pglazyfreed: getUint64Value("pglazyfreed", out),
- ThpFaultAlloc: getUint64Value("thp_fault_alloc", out),
- ThpCollapseAlloc: getUint64Value("thp_collapse_alloc", out),
- Usage: getStatFileContentUint64(filepath.Join(c.path, "memory.current")),
- UsageLimit: getStatFileContentUint64(filepath.Join(c.path, "memory.max")),
- SwapUsage: getStatFileContentUint64(filepath.Join(c.path, "memory.swap.current")),
- SwapLimit: getStatFileContentUint64(filepath.Join(c.path, "memory.swap.max")),
- }
- if len(memoryEvents) > 0 {
- metrics.MemoryEvents = &stats.MemoryEvents{
- Low: getUint64Value("low", memoryEvents),
- High: getUint64Value("high", memoryEvents),
- Max: getUint64Value("max", memoryEvents),
- Oom: getUint64Value("oom", memoryEvents),
- OomKill: getUint64Value("oom_kill", memoryEvents),
- }
- }
- metrics.Io = &stats.IOStat{Usage: readIoStats(c.path)}
- metrics.Rdma = &stats.RdmaStat{
- Current: rdmaStats(filepath.Join(c.path, "rdma.current")),
- Limit: rdmaStats(filepath.Join(c.path, "rdma.max")),
- }
- metrics.Hugetlb = readHugeTlbStats(c.path)
-
- return &metrics, nil
-}
-
-func getUint64Value(key string, out map[string]interface{}) uint64 {
- v, ok := out[key]
- if !ok {
- return 0
- }
- switch t := v.(type) {
- case uint64:
- return t
- }
- return 0
-}
-
-func getPidValue(key string, out map[string]interface{}) uint64 {
- v, ok := out[key]
- if !ok {
- return 0
- }
- switch t := v.(type) {
- case uint64:
- return t
- case string:
- if t == "max" {
- return math.MaxUint64
- }
- }
- return 0
-}
-
-func readSingleFile(path string, file string, out map[string]interface{}) error {
- f, err := os.Open(filepath.Join(path, file))
- if err != nil {
- return err
- }
- defer f.Close()
- data, err := io.ReadAll(f)
- if err != nil {
- return err
- }
- s := strings.TrimSpace(string(data))
- v, err := parseUint(s, 10, 64)
- if err != nil {
- // if we cannot parse as a uint, parse as a string
- out[file] = s
- return nil
- }
- out[file] = v
- return nil
-}
-
-func readKVStatsFile(path string, file string, out map[string]interface{}) error {
- f, err := os.Open(filepath.Join(path, file))
- if err != nil {
- return err
- }
- defer f.Close()
-
- s := bufio.NewScanner(f)
- for s.Scan() {
- name, value, err := parseKV(s.Text())
- if err != nil {
- return fmt.Errorf("error while parsing %s (line=%q): %w", filepath.Join(path, file), s.Text(), err)
- }
- out[name] = value
- }
- return s.Err()
-}
-
-func (c *Manager) Freeze() error {
- return c.freeze(c.path, Frozen)
-}
-
-func (c *Manager) Thaw() error {
- return c.freeze(c.path, Thawed)
-}
-
-func (c *Manager) freeze(path string, state State) error {
- values := state.Values()
- for {
- if err := writeValues(path, values); err != nil {
- return err
- }
- current, err := fetchState(path)
- if err != nil {
- return err
- }
- if current == state {
- return nil
- }
- time.Sleep(1 * time.Millisecond)
- }
-}
-
-func (c *Manager) isCgroupEmpty() bool {
- // In case of any error we return true so that we exit and don't leak resources
- out := make(map[string]interface{})
- if err := readKVStatsFile(c.path, "cgroup.events", out); err != nil {
- return true
- }
- if v, ok := out["populated"]; ok {
- populated, ok := v.(uint64)
- if !ok {
- return true
- }
- return populated == 0
- }
- return true
-}
-
-// MemoryEventFD returns inotify file descriptor and 'memory.events' inotify watch descriptor
-func (c *Manager) MemoryEventFD() (int, uint32, error) {
- fpath := filepath.Join(c.path, "memory.events")
- fd, err := syscall.InotifyInit()
- if err != nil {
- return 0, 0, errors.New("failed to create inotify fd")
- }
- wd, err := syscall.InotifyAddWatch(fd, fpath, unix.IN_MODIFY)
- if err != nil {
- syscall.Close(fd)
- return 0, 0, fmt.Errorf("failed to add inotify watch for %q: %w", fpath, err)
- }
- // monitor to detect process exit/cgroup deletion
- evpath := filepath.Join(c.path, "cgroup.events")
- if _, err = syscall.InotifyAddWatch(fd, evpath, unix.IN_MODIFY); err != nil {
- syscall.Close(fd)
- return 0, 0, fmt.Errorf("failed to add inotify watch for %q: %w", evpath, err)
- }
-
- return fd, uint32(wd), nil
-}
-
-func (c *Manager) EventChan() (<-chan Event, <-chan error) {
- ec := make(chan Event)
- errCh := make(chan error, 1)
- go c.waitForEvents(ec, errCh)
-
- return ec, errCh
-}
-
-func parseMemoryEvents(out map[string]interface{}) (Event, error) {
- e := Event{}
- if v, ok := out["high"]; ok {
- e.High, ok = v.(uint64)
- if !ok {
- return Event{}, fmt.Errorf("cannot convert high to uint64: %+v", v)
- }
- }
- if v, ok := out["low"]; ok {
- e.Low, ok = v.(uint64)
- if !ok {
- return Event{}, fmt.Errorf("cannot convert low to uint64: %+v", v)
- }
- }
- if v, ok := out["max"]; ok {
- e.Max, ok = v.(uint64)
- if !ok {
- return Event{}, fmt.Errorf("cannot convert max to uint64: %+v", v)
- }
- }
- if v, ok := out["oom"]; ok {
- e.OOM, ok = v.(uint64)
- if !ok {
- return Event{}, fmt.Errorf("cannot convert oom to uint64: %+v", v)
- }
- }
- if v, ok := out["oom_kill"]; ok {
- e.OOMKill, ok = v.(uint64)
- if !ok {
- return Event{}, fmt.Errorf("cannot convert oom_kill to uint64: %+v", v)
- }
- }
- return e, nil
-}
-
-func (c *Manager) waitForEvents(ec chan<- Event, errCh chan<- error) {
- defer close(errCh)
-
- fd, _, err := c.MemoryEventFD()
- if err != nil {
- errCh <- err
- return
- }
- defer syscall.Close(fd)
-
- for {
- buffer := make([]byte, syscall.SizeofInotifyEvent*10)
- bytesRead, err := syscall.Read(fd, buffer)
- if err != nil {
- errCh <- err
- return
- }
- if bytesRead >= syscall.SizeofInotifyEvent {
- out := make(map[string]interface{})
- if err := readKVStatsFile(c.path, "memory.events", out); err != nil {
- // When cgroup is deleted read may return -ENODEV instead of -ENOENT from open.
- if _, statErr := os.Lstat(filepath.Join(c.path, "memory.events")); !os.IsNotExist(statErr) {
- errCh <- err
- }
- return
- }
- e, err := parseMemoryEvents(out)
- if err != nil {
- errCh <- err
- return
- }
- ec <- e
- if c.isCgroupEmpty() {
- return
- }
- }
- }
-}
-
-func setDevices(path string, devices []specs.LinuxDeviceCgroup) error {
- if len(devices) == 0 {
- return nil
- }
- insts, license, err := DeviceFilter(devices)
- if err != nil {
- return err
- }
- dirFD, err := unix.Open(path, unix.O_DIRECTORY|unix.O_RDONLY|unix.O_CLOEXEC, 0600)
- if err != nil {
- return fmt.Errorf("cannot get dir FD for %s", path)
- }
- defer unix.Close(dirFD)
- if _, err := LoadAttachCgroupDeviceFilter(insts, license, dirFD); err != nil {
- if !canSkipEBPFError(devices) {
- return err
- }
- }
- return nil
-}
-
-// getSystemdFullPath returns the full systemd path when creating a systemd slice group.
-// the reason this is necessary is because the "-" character has a special meaning in
-// systemd slice. For example, when creating a slice called "my-group-112233.slice",
-// systemd will create a hierarchy like this:
-//
-// /sys/fs/cgroup/my.slice/my-group.slice/my-group-112233.slice
-func getSystemdFullPath(slice, group string) string {
- return filepath.Join(defaultCgroup2Path, dashesToPath(slice), dashesToPath(group))
-}
-
-// dashesToPath converts a slice name with dashes to it's corresponding systemd filesystem path.
-func dashesToPath(in string) string {
- path := ""
- if strings.HasSuffix(in, ".slice") && strings.Contains(in, "-") {
- parts := strings.Split(in, "-")
- for i := range parts {
- s := strings.Join(parts[0:i+1], "-")
- if !strings.HasSuffix(s, ".slice") {
- s += ".slice"
- }
- path = filepath.Join(path, s)
- }
- } else {
- path = filepath.Join(path, in)
- }
- return path
-}
-
-func NewSystemd(slice, group string, pid int, resources *Resources) (*Manager, error) {
- if slice == "" {
- slice = defaultSlice
- }
- ctx := context.TODO()
- path := getSystemdFullPath(slice, group)
- conn, err := systemdDbus.NewWithContext(ctx)
- if err != nil {
- return &Manager{}, err
- }
- defer conn.Close()
-
- properties := []systemdDbus.Property{
- systemdDbus.PropDescription("cgroup " + group),
- newSystemdProperty("DefaultDependencies", false),
- newSystemdProperty("MemoryAccounting", true),
- newSystemdProperty("CPUAccounting", true),
- newSystemdProperty("IOAccounting", true),
- }
-
- // if we create a slice, the parent is defined via a Wants=
- if strings.HasSuffix(group, ".slice") {
- properties = append(properties, systemdDbus.PropWants(defaultSlice))
- } else {
- // otherwise, we use Slice=
- properties = append(properties, systemdDbus.PropSlice(defaultSlice))
- }
-
- // only add pid if its valid, -1 is used w/ general slice creation.
- if pid != -1 {
- properties = append(properties, newSystemdProperty("PIDs", []uint32{uint32(pid)}))
- }
-
- if resources.Memory != nil && resources.Memory.Min != nil && *resources.Memory.Min != 0 {
- properties = append(properties,
- newSystemdProperty("MemoryMin", uint64(*resources.Memory.Min)))
- }
-
- if resources.Memory != nil && resources.Memory.Max != nil && *resources.Memory.Max != 0 {
- properties = append(properties,
- newSystemdProperty("MemoryMax", uint64(*resources.Memory.Max)))
- }
-
- if resources.CPU != nil && resources.CPU.Weight != nil && *resources.CPU.Weight != 0 {
- properties = append(properties,
- newSystemdProperty("CPUWeight", *resources.CPU.Weight))
- }
-
- if resources.CPU != nil && resources.CPU.Max != "" {
- quota, period := resources.CPU.Max.extractQuotaAndPeriod()
- // cpu.cfs_quota_us and cpu.cfs_period_us are controlled by systemd.
- // corresponds to USEC_INFINITY in systemd
- // if USEC_INFINITY is provided, CPUQuota is left unbound by systemd
- // always setting a property value ensures we can apply a quota and remove it later
- cpuQuotaPerSecUSec := uint64(math.MaxUint64)
- if quota > 0 {
- // systemd converts CPUQuotaPerSecUSec (microseconds per CPU second) to CPUQuota
- // (integer percentage of CPU) internally. This means that if a fractional percent of
- // CPU is indicated by Resources.CpuQuota, we need to round up to the nearest
- // 10ms (1% of a second) such that child cgroups can set the cpu.cfs_quota_us they expect.
- cpuQuotaPerSecUSec = uint64(quota*1000000) / period
- if cpuQuotaPerSecUSec%10000 != 0 {
- cpuQuotaPerSecUSec = ((cpuQuotaPerSecUSec / 10000) + 1) * 10000
- }
- }
- properties = append(properties,
- newSystemdProperty("CPUQuotaPerSecUSec", cpuQuotaPerSecUSec))
- }
-
- // If we can delegate, we add the property back in
- if canDelegate {
- properties = append(properties, newSystemdProperty("Delegate", true))
- }
-
- if resources.Pids != nil && resources.Pids.Max > 0 {
- properties = append(properties,
- newSystemdProperty("TasksAccounting", true),
- newSystemdProperty("TasksMax", uint64(resources.Pids.Max)))
- }
-
- statusChan := make(chan string, 1)
- if _, err := conn.StartTransientUnitContext(ctx, group, "replace", properties, statusChan); err == nil {
- select {
- case <-statusChan:
- case <-time.After(time.Second):
- logrus.Warnf("Timed out while waiting for StartTransientUnit(%s) completion signal from dbus. Continuing...", group)
- }
- } else if !isUnitExists(err) {
- return &Manager{}, err
- }
-
- return &Manager{
- path: path,
- }, nil
-}
-
-func LoadSystemd(slice, group string) (*Manager, error) {
- if slice == "" {
- slice = defaultSlice
- }
- path := getSystemdFullPath(slice, group)
- return &Manager{
- path: path,
- }, nil
-}
-
-func (c *Manager) DeleteSystemd() error {
- ctx := context.TODO()
- conn, err := systemdDbus.NewWithContext(ctx)
- if err != nil {
- return err
- }
- defer conn.Close()
- group := systemdUnitFromPath(c.path)
- ch := make(chan string)
- _, err = conn.StopUnitContext(ctx, group, "replace", ch)
- if err != nil {
- return err
- }
- <-ch
- return nil
-}
-
-func newSystemdProperty(name string, units interface{}) systemdDbus.Property {
- return systemdDbus.Property{
- Name: name,
- Value: dbus.MakeVariant(units),
- }
-}
diff --git a/vendor/github.com/containerd/cgroups/v3/cgroup2/memory.go b/vendor/github.com/containerd/cgroups/v3/cgroup2/memory.go
deleted file mode 100644
index 8cc8962bd..000000000
--- a/vendor/github.com/containerd/cgroups/v3/cgroup2/memory.go
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- Copyright The containerd Authors.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-
-package cgroup2
-
-type Memory struct {
- Swap *int64
- Min *int64
- Max *int64
- Low *int64
- High *int64
-}
-
-func (r *Memory) Values() (o []Value) {
- if r.Swap != nil {
- o = append(o, Value{
- filename: "memory.swap.max",
- value: *r.Swap,
- })
- }
- if r.Min != nil {
- o = append(o, Value{
- filename: "memory.min",
- value: *r.Min,
- })
- }
- if r.Max != nil {
- o = append(o, Value{
- filename: "memory.max",
- value: *r.Max,
- })
- }
- if r.Low != nil {
- o = append(o, Value{
- filename: "memory.low",
- value: *r.Low,
- })
- }
- if r.High != nil {
- o = append(o, Value{
- filename: "memory.high",
- value: *r.High,
- })
- }
- return o
-}
diff --git a/vendor/github.com/containerd/cgroups/v3/cgroup2/paths.go b/vendor/github.com/containerd/cgroups/v3/cgroup2/paths.go
deleted file mode 100644
index 074bb83bc..000000000
--- a/vendor/github.com/containerd/cgroups/v3/cgroup2/paths.go
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- Copyright The containerd Authors.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-
-package cgroup2
-
-import (
- "fmt"
- "path/filepath"
- "strings"
-)
-
-// NestedGroupPath will nest the cgroups based on the calling processes cgroup
-// placing its child processes inside its own path
-func NestedGroupPath(suffix string) (string, error) {
- path, err := parseCgroupFile("/proc/self/cgroup")
- if err != nil {
- return "", err
- }
- return filepath.Join(path, suffix), nil
-}
-
-// PidGroupPath will return the correct cgroup paths for an existing process running inside a cgroup
-// This is commonly used for the Load function to restore an existing container
-func PidGroupPath(pid int) (string, error) {
- p := fmt.Sprintf("/proc/%d/cgroup", pid)
- return parseCgroupFile(p)
-}
-
-// VerifyGroupPath verifies the format of group path string g.
-// The format is same as the third field in /proc/PID/cgroup.
-// e.g. "/user.slice/user-1001.slice/session-1.scope"
-//
-// g must be a "clean" absolute path starts with "/", and must not contain "/sys/fs/cgroup" prefix.
-//
-// VerifyGroupPath doesn't verify whether g actually exists on the system.
-func VerifyGroupPath(g string) error {
- if !strings.HasPrefix(g, "/") {
- return ErrInvalidGroupPath
- }
- if filepath.Clean(g) != g {
- return ErrInvalidGroupPath
- }
- if strings.HasPrefix(g, "/sys/fs/cgroup") {
- return ErrInvalidGroupPath
- }
- return nil
-}
diff --git a/vendor/github.com/containerd/cgroups/v3/cgroup2/pids.go b/vendor/github.com/containerd/cgroups/v3/cgroup2/pids.go
deleted file mode 100644
index 7de263260..000000000
--- a/vendor/github.com/containerd/cgroups/v3/cgroup2/pids.go
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- Copyright The containerd Authors.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-
-package cgroup2
-
-import "strconv"
-
-type Pids struct {
- Max int64
-}
-
-func (r *Pids) Values() (o []Value) {
- if r.Max != 0 {
- limit := "max"
- if r.Max > 0 {
- limit = strconv.FormatInt(r.Max, 10)
- }
- o = append(o, Value{
- filename: "pids.max",
- value: limit,
- })
- }
- return o
-}
diff --git a/vendor/github.com/containerd/cgroups/v3/cgroup2/rdma.go b/vendor/github.com/containerd/cgroups/v3/cgroup2/rdma.go
deleted file mode 100644
index 2a65117f1..000000000
--- a/vendor/github.com/containerd/cgroups/v3/cgroup2/rdma.go
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- Copyright The containerd Authors.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-
-package cgroup2
-
-import (
- "fmt"
-)
-
-type RDMA struct {
- Limit []RDMAEntry
-}
-
-type RDMAEntry struct {
- Device string
- HcaHandles uint32
- HcaObjects uint32
-}
-
-func (r RDMAEntry) String() string {
- return fmt.Sprintf("%s hca_handle=%d hca_object=%d", r.Device, r.HcaHandles, r.HcaObjects)
-}
-
-func (r *RDMA) Values() (o []Value) {
- for _, e := range r.Limit {
- o = append(o, Value{
- filename: "rdma.max",
- value: e.String(),
- })
- }
-
- return o
-}
diff --git a/vendor/github.com/containerd/cgroups/v3/cgroup2/state.go b/vendor/github.com/containerd/cgroups/v3/cgroup2/state.go
deleted file mode 100644
index 886e94b29..000000000
--- a/vendor/github.com/containerd/cgroups/v3/cgroup2/state.go
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- Copyright The containerd Authors.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-
-package cgroup2
-
-import (
- "os"
- "path/filepath"
- "strings"
-)
-
-// State is a type that represents the state of the current cgroup
-type State string
-
-const (
- Unknown State = ""
- Thawed State = "thawed"
- Frozen State = "frozen"
- Deleted State = "deleted"
-
- cgroupFreeze = "cgroup.freeze"
-)
-
-func (s State) Values() []Value {
- v := Value{
- filename: cgroupFreeze,
- }
- switch s {
- case Frozen:
- v.value = "1"
- case Thawed:
- v.value = "0"
- }
- return []Value{
- v,
- }
-}
-
-func fetchState(path string) (State, error) {
- current, err := os.ReadFile(filepath.Join(path, cgroupFreeze))
- if err != nil {
- return Unknown, err
- }
- switch strings.TrimSpace(string(current)) {
- case "1":
- return Frozen, nil
- case "0":
- return Thawed, nil
- default:
- return Unknown, nil
- }
-}
diff --git a/vendor/github.com/containerd/cgroups/v3/cgroup2/stats/doc.go b/vendor/github.com/containerd/cgroups/v3/cgroup2/stats/doc.go
deleted file mode 100644
index e51e12f80..000000000
--- a/vendor/github.com/containerd/cgroups/v3/cgroup2/stats/doc.go
+++ /dev/null
@@ -1,17 +0,0 @@
-/*
- Copyright The containerd Authors.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-
-package stats
diff --git a/vendor/github.com/containerd/cgroups/v3/cgroup2/stats/metrics.pb.go b/vendor/github.com/containerd/cgroups/v3/cgroup2/stats/metrics.pb.go
deleted file mode 100644
index d4cb4ad48..000000000
--- a/vendor/github.com/containerd/cgroups/v3/cgroup2/stats/metrics.pb.go
+++ /dev/null
@@ -1,1333 +0,0 @@
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// versions:
-// protoc-gen-go v1.28.1
-// protoc v3.21.5
-// source: github.com/containerd/cgroups/cgroup2/stats/metrics.proto
-
-package stats
-
-import (
- protoreflect "google.golang.org/protobuf/reflect/protoreflect"
- protoimpl "google.golang.org/protobuf/runtime/protoimpl"
- reflect "reflect"
- sync "sync"
-)
-
-const (
- // Verify that this generated code is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
- // Verify that runtime/protoimpl is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
-)
-
-type Metrics struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Pids *PidsStat `protobuf:"bytes,1,opt,name=pids,proto3" json:"pids,omitempty"`
- CPU *CPUStat `protobuf:"bytes,2,opt,name=cpu,proto3" json:"cpu,omitempty"`
- Memory *MemoryStat `protobuf:"bytes,4,opt,name=memory,proto3" json:"memory,omitempty"`
- Rdma *RdmaStat `protobuf:"bytes,5,opt,name=rdma,proto3" json:"rdma,omitempty"`
- Io *IOStat `protobuf:"bytes,6,opt,name=io,proto3" json:"io,omitempty"`
- Hugetlb []*HugeTlbStat `protobuf:"bytes,7,rep,name=hugetlb,proto3" json:"hugetlb,omitempty"`
- MemoryEvents *MemoryEvents `protobuf:"bytes,8,opt,name=memory_events,json=memoryEvents,proto3" json:"memory_events,omitempty"`
-}
-
-func (x *Metrics) Reset() {
- *x = Metrics{}
- if protoimpl.UnsafeEnabled {
- mi := &file_github_com_containerd_cgroups_cgroup2_stats_metrics_proto_msgTypes[0]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Metrics) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Metrics) ProtoMessage() {}
-
-func (x *Metrics) ProtoReflect() protoreflect.Message {
- mi := &file_github_com_containerd_cgroups_cgroup2_stats_metrics_proto_msgTypes[0]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Metrics.ProtoReflect.Descriptor instead.
-func (*Metrics) Descriptor() ([]byte, []int) {
- return file_github_com_containerd_cgroups_cgroup2_stats_metrics_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *Metrics) GetPids() *PidsStat {
- if x != nil {
- return x.Pids
- }
- return nil
-}
-
-func (x *Metrics) GetCPU() *CPUStat {
- if x != nil {
- return x.CPU
- }
- return nil
-}
-
-func (x *Metrics) GetMemory() *MemoryStat {
- if x != nil {
- return x.Memory
- }
- return nil
-}
-
-func (x *Metrics) GetRdma() *RdmaStat {
- if x != nil {
- return x.Rdma
- }
- return nil
-}
-
-func (x *Metrics) GetIo() *IOStat {
- if x != nil {
- return x.Io
- }
- return nil
-}
-
-func (x *Metrics) GetHugetlb() []*HugeTlbStat {
- if x != nil {
- return x.Hugetlb
- }
- return nil
-}
-
-func (x *Metrics) GetMemoryEvents() *MemoryEvents {
- if x != nil {
- return x.MemoryEvents
- }
- return nil
-}
-
-type PidsStat struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Current uint64 `protobuf:"varint,1,opt,name=current,proto3" json:"current,omitempty"`
- Limit uint64 `protobuf:"varint,2,opt,name=limit,proto3" json:"limit,omitempty"`
-}
-
-func (x *PidsStat) Reset() {
- *x = PidsStat{}
- if protoimpl.UnsafeEnabled {
- mi := &file_github_com_containerd_cgroups_cgroup2_stats_metrics_proto_msgTypes[1]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *PidsStat) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*PidsStat) ProtoMessage() {}
-
-func (x *PidsStat) ProtoReflect() protoreflect.Message {
- mi := &file_github_com_containerd_cgroups_cgroup2_stats_metrics_proto_msgTypes[1]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use PidsStat.ProtoReflect.Descriptor instead.
-func (*PidsStat) Descriptor() ([]byte, []int) {
- return file_github_com_containerd_cgroups_cgroup2_stats_metrics_proto_rawDescGZIP(), []int{1}
-}
-
-func (x *PidsStat) GetCurrent() uint64 {
- if x != nil {
- return x.Current
- }
- return 0
-}
-
-func (x *PidsStat) GetLimit() uint64 {
- if x != nil {
- return x.Limit
- }
- return 0
-}
-
-type CPUStat struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- UsageUsec uint64 `protobuf:"varint,1,opt,name=usage_usec,json=usageUsec,proto3" json:"usage_usec,omitempty"`
- UserUsec uint64 `protobuf:"varint,2,opt,name=user_usec,json=userUsec,proto3" json:"user_usec,omitempty"`
- SystemUsec uint64 `protobuf:"varint,3,opt,name=system_usec,json=systemUsec,proto3" json:"system_usec,omitempty"`
- NrPeriods uint64 `protobuf:"varint,4,opt,name=nr_periods,json=nrPeriods,proto3" json:"nr_periods,omitempty"`
- NrThrottled uint64 `protobuf:"varint,5,opt,name=nr_throttled,json=nrThrottled,proto3" json:"nr_throttled,omitempty"`
- ThrottledUsec uint64 `protobuf:"varint,6,opt,name=throttled_usec,json=throttledUsec,proto3" json:"throttled_usec,omitempty"`
-}
-
-func (x *CPUStat) Reset() {
- *x = CPUStat{}
- if protoimpl.UnsafeEnabled {
- mi := &file_github_com_containerd_cgroups_cgroup2_stats_metrics_proto_msgTypes[2]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *CPUStat) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*CPUStat) ProtoMessage() {}
-
-func (x *CPUStat) ProtoReflect() protoreflect.Message {
- mi := &file_github_com_containerd_cgroups_cgroup2_stats_metrics_proto_msgTypes[2]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use CPUStat.ProtoReflect.Descriptor instead.
-func (*CPUStat) Descriptor() ([]byte, []int) {
- return file_github_com_containerd_cgroups_cgroup2_stats_metrics_proto_rawDescGZIP(), []int{2}
-}
-
-func (x *CPUStat) GetUsageUsec() uint64 {
- if x != nil {
- return x.UsageUsec
- }
- return 0
-}
-
-func (x *CPUStat) GetUserUsec() uint64 {
- if x != nil {
- return x.UserUsec
- }
- return 0
-}
-
-func (x *CPUStat) GetSystemUsec() uint64 {
- if x != nil {
- return x.SystemUsec
- }
- return 0
-}
-
-func (x *CPUStat) GetNrPeriods() uint64 {
- if x != nil {
- return x.NrPeriods
- }
- return 0
-}
-
-func (x *CPUStat) GetNrThrottled() uint64 {
- if x != nil {
- return x.NrThrottled
- }
- return 0
-}
-
-func (x *CPUStat) GetThrottledUsec() uint64 {
- if x != nil {
- return x.ThrottledUsec
- }
- return 0
-}
-
-type MemoryStat struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Anon uint64 `protobuf:"varint,1,opt,name=anon,proto3" json:"anon,omitempty"`
- File uint64 `protobuf:"varint,2,opt,name=file,proto3" json:"file,omitempty"`
- KernelStack uint64 `protobuf:"varint,3,opt,name=kernel_stack,json=kernelStack,proto3" json:"kernel_stack,omitempty"`
- Slab uint64 `protobuf:"varint,4,opt,name=slab,proto3" json:"slab,omitempty"`
- Sock uint64 `protobuf:"varint,5,opt,name=sock,proto3" json:"sock,omitempty"`
- Shmem uint64 `protobuf:"varint,6,opt,name=shmem,proto3" json:"shmem,omitempty"`
- FileMapped uint64 `protobuf:"varint,7,opt,name=file_mapped,json=fileMapped,proto3" json:"file_mapped,omitempty"`
- FileDirty uint64 `protobuf:"varint,8,opt,name=file_dirty,json=fileDirty,proto3" json:"file_dirty,omitempty"`
- FileWriteback uint64 `protobuf:"varint,9,opt,name=file_writeback,json=fileWriteback,proto3" json:"file_writeback,omitempty"`
- AnonThp uint64 `protobuf:"varint,10,opt,name=anon_thp,json=anonThp,proto3" json:"anon_thp,omitempty"`
- InactiveAnon uint64 `protobuf:"varint,11,opt,name=inactive_anon,json=inactiveAnon,proto3" json:"inactive_anon,omitempty"`
- ActiveAnon uint64 `protobuf:"varint,12,opt,name=active_anon,json=activeAnon,proto3" json:"active_anon,omitempty"`
- InactiveFile uint64 `protobuf:"varint,13,opt,name=inactive_file,json=inactiveFile,proto3" json:"inactive_file,omitempty"`
- ActiveFile uint64 `protobuf:"varint,14,opt,name=active_file,json=activeFile,proto3" json:"active_file,omitempty"`
- Unevictable uint64 `protobuf:"varint,15,opt,name=unevictable,proto3" json:"unevictable,omitempty"`
- SlabReclaimable uint64 `protobuf:"varint,16,opt,name=slab_reclaimable,json=slabReclaimable,proto3" json:"slab_reclaimable,omitempty"`
- SlabUnreclaimable uint64 `protobuf:"varint,17,opt,name=slab_unreclaimable,json=slabUnreclaimable,proto3" json:"slab_unreclaimable,omitempty"`
- Pgfault uint64 `protobuf:"varint,18,opt,name=pgfault,proto3" json:"pgfault,omitempty"`
- Pgmajfault uint64 `protobuf:"varint,19,opt,name=pgmajfault,proto3" json:"pgmajfault,omitempty"`
- WorkingsetRefault uint64 `protobuf:"varint,20,opt,name=workingset_refault,json=workingsetRefault,proto3" json:"workingset_refault,omitempty"`
- WorkingsetActivate uint64 `protobuf:"varint,21,opt,name=workingset_activate,json=workingsetActivate,proto3" json:"workingset_activate,omitempty"`
- WorkingsetNodereclaim uint64 `protobuf:"varint,22,opt,name=workingset_nodereclaim,json=workingsetNodereclaim,proto3" json:"workingset_nodereclaim,omitempty"`
- Pgrefill uint64 `protobuf:"varint,23,opt,name=pgrefill,proto3" json:"pgrefill,omitempty"`
- Pgscan uint64 `protobuf:"varint,24,opt,name=pgscan,proto3" json:"pgscan,omitempty"`
- Pgsteal uint64 `protobuf:"varint,25,opt,name=pgsteal,proto3" json:"pgsteal,omitempty"`
- Pgactivate uint64 `protobuf:"varint,26,opt,name=pgactivate,proto3" json:"pgactivate,omitempty"`
- Pgdeactivate uint64 `protobuf:"varint,27,opt,name=pgdeactivate,proto3" json:"pgdeactivate,omitempty"`
- Pglazyfree uint64 `protobuf:"varint,28,opt,name=pglazyfree,proto3" json:"pglazyfree,omitempty"`
- Pglazyfreed uint64 `protobuf:"varint,29,opt,name=pglazyfreed,proto3" json:"pglazyfreed,omitempty"`
- ThpFaultAlloc uint64 `protobuf:"varint,30,opt,name=thp_fault_alloc,json=thpFaultAlloc,proto3" json:"thp_fault_alloc,omitempty"`
- ThpCollapseAlloc uint64 `protobuf:"varint,31,opt,name=thp_collapse_alloc,json=thpCollapseAlloc,proto3" json:"thp_collapse_alloc,omitempty"`
- Usage uint64 `protobuf:"varint,32,opt,name=usage,proto3" json:"usage,omitempty"`
- UsageLimit uint64 `protobuf:"varint,33,opt,name=usage_limit,json=usageLimit,proto3" json:"usage_limit,omitempty"`
- SwapUsage uint64 `protobuf:"varint,34,opt,name=swap_usage,json=swapUsage,proto3" json:"swap_usage,omitempty"`
- SwapLimit uint64 `protobuf:"varint,35,opt,name=swap_limit,json=swapLimit,proto3" json:"swap_limit,omitempty"`
-}
-
-func (x *MemoryStat) Reset() {
- *x = MemoryStat{}
- if protoimpl.UnsafeEnabled {
- mi := &file_github_com_containerd_cgroups_cgroup2_stats_metrics_proto_msgTypes[3]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *MemoryStat) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*MemoryStat) ProtoMessage() {}
-
-func (x *MemoryStat) ProtoReflect() protoreflect.Message {
- mi := &file_github_com_containerd_cgroups_cgroup2_stats_metrics_proto_msgTypes[3]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use MemoryStat.ProtoReflect.Descriptor instead.
-func (*MemoryStat) Descriptor() ([]byte, []int) {
- return file_github_com_containerd_cgroups_cgroup2_stats_metrics_proto_rawDescGZIP(), []int{3}
-}
-
-func (x *MemoryStat) GetAnon() uint64 {
- if x != nil {
- return x.Anon
- }
- return 0
-}
-
-func (x *MemoryStat) GetFile() uint64 {
- if x != nil {
- return x.File
- }
- return 0
-}
-
-func (x *MemoryStat) GetKernelStack() uint64 {
- if x != nil {
- return x.KernelStack
- }
- return 0
-}
-
-func (x *MemoryStat) GetSlab() uint64 {
- if x != nil {
- return x.Slab
- }
- return 0
-}
-
-func (x *MemoryStat) GetSock() uint64 {
- if x != nil {
- return x.Sock
- }
- return 0
-}
-
-func (x *MemoryStat) GetShmem() uint64 {
- if x != nil {
- return x.Shmem
- }
- return 0
-}
-
-func (x *MemoryStat) GetFileMapped() uint64 {
- if x != nil {
- return x.FileMapped
- }
- return 0
-}
-
-func (x *MemoryStat) GetFileDirty() uint64 {
- if x != nil {
- return x.FileDirty
- }
- return 0
-}
-
-func (x *MemoryStat) GetFileWriteback() uint64 {
- if x != nil {
- return x.FileWriteback
- }
- return 0
-}
-
-func (x *MemoryStat) GetAnonThp() uint64 {
- if x != nil {
- return x.AnonThp
- }
- return 0
-}
-
-func (x *MemoryStat) GetInactiveAnon() uint64 {
- if x != nil {
- return x.InactiveAnon
- }
- return 0
-}
-
-func (x *MemoryStat) GetActiveAnon() uint64 {
- if x != nil {
- return x.ActiveAnon
- }
- return 0
-}
-
-func (x *MemoryStat) GetInactiveFile() uint64 {
- if x != nil {
- return x.InactiveFile
- }
- return 0
-}
-
-func (x *MemoryStat) GetActiveFile() uint64 {
- if x != nil {
- return x.ActiveFile
- }
- return 0
-}
-
-func (x *MemoryStat) GetUnevictable() uint64 {
- if x != nil {
- return x.Unevictable
- }
- return 0
-}
-
-func (x *MemoryStat) GetSlabReclaimable() uint64 {
- if x != nil {
- return x.SlabReclaimable
- }
- return 0
-}
-
-func (x *MemoryStat) GetSlabUnreclaimable() uint64 {
- if x != nil {
- return x.SlabUnreclaimable
- }
- return 0
-}
-
-func (x *MemoryStat) GetPgfault() uint64 {
- if x != nil {
- return x.Pgfault
- }
- return 0
-}
-
-func (x *MemoryStat) GetPgmajfault() uint64 {
- if x != nil {
- return x.Pgmajfault
- }
- return 0
-}
-
-func (x *MemoryStat) GetWorkingsetRefault() uint64 {
- if x != nil {
- return x.WorkingsetRefault
- }
- return 0
-}
-
-func (x *MemoryStat) GetWorkingsetActivate() uint64 {
- if x != nil {
- return x.WorkingsetActivate
- }
- return 0
-}
-
-func (x *MemoryStat) GetWorkingsetNodereclaim() uint64 {
- if x != nil {
- return x.WorkingsetNodereclaim
- }
- return 0
-}
-
-func (x *MemoryStat) GetPgrefill() uint64 {
- if x != nil {
- return x.Pgrefill
- }
- return 0
-}
-
-func (x *MemoryStat) GetPgscan() uint64 {
- if x != nil {
- return x.Pgscan
- }
- return 0
-}
-
-func (x *MemoryStat) GetPgsteal() uint64 {
- if x != nil {
- return x.Pgsteal
- }
- return 0
-}
-
-func (x *MemoryStat) GetPgactivate() uint64 {
- if x != nil {
- return x.Pgactivate
- }
- return 0
-}
-
-func (x *MemoryStat) GetPgdeactivate() uint64 {
- if x != nil {
- return x.Pgdeactivate
- }
- return 0
-}
-
-func (x *MemoryStat) GetPglazyfree() uint64 {
- if x != nil {
- return x.Pglazyfree
- }
- return 0
-}
-
-func (x *MemoryStat) GetPglazyfreed() uint64 {
- if x != nil {
- return x.Pglazyfreed
- }
- return 0
-}
-
-func (x *MemoryStat) GetThpFaultAlloc() uint64 {
- if x != nil {
- return x.ThpFaultAlloc
- }
- return 0
-}
-
-func (x *MemoryStat) GetThpCollapseAlloc() uint64 {
- if x != nil {
- return x.ThpCollapseAlloc
- }
- return 0
-}
-
-func (x *MemoryStat) GetUsage() uint64 {
- if x != nil {
- return x.Usage
- }
- return 0
-}
-
-func (x *MemoryStat) GetUsageLimit() uint64 {
- if x != nil {
- return x.UsageLimit
- }
- return 0
-}
-
-func (x *MemoryStat) GetSwapUsage() uint64 {
- if x != nil {
- return x.SwapUsage
- }
- return 0
-}
-
-func (x *MemoryStat) GetSwapLimit() uint64 {
- if x != nil {
- return x.SwapLimit
- }
- return 0
-}
-
-type MemoryEvents struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Low uint64 `protobuf:"varint,1,opt,name=low,proto3" json:"low,omitempty"`
- High uint64 `protobuf:"varint,2,opt,name=high,proto3" json:"high,omitempty"`
- Max uint64 `protobuf:"varint,3,opt,name=max,proto3" json:"max,omitempty"`
- Oom uint64 `protobuf:"varint,4,opt,name=oom,proto3" json:"oom,omitempty"`
- OomKill uint64 `protobuf:"varint,5,opt,name=oom_kill,json=oomKill,proto3" json:"oom_kill,omitempty"`
-}
-
-func (x *MemoryEvents) Reset() {
- *x = MemoryEvents{}
- if protoimpl.UnsafeEnabled {
- mi := &file_github_com_containerd_cgroups_cgroup2_stats_metrics_proto_msgTypes[4]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *MemoryEvents) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*MemoryEvents) ProtoMessage() {}
-
-func (x *MemoryEvents) ProtoReflect() protoreflect.Message {
- mi := &file_github_com_containerd_cgroups_cgroup2_stats_metrics_proto_msgTypes[4]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use MemoryEvents.ProtoReflect.Descriptor instead.
-func (*MemoryEvents) Descriptor() ([]byte, []int) {
- return file_github_com_containerd_cgroups_cgroup2_stats_metrics_proto_rawDescGZIP(), []int{4}
-}
-
-func (x *MemoryEvents) GetLow() uint64 {
- if x != nil {
- return x.Low
- }
- return 0
-}
-
-func (x *MemoryEvents) GetHigh() uint64 {
- if x != nil {
- return x.High
- }
- return 0
-}
-
-func (x *MemoryEvents) GetMax() uint64 {
- if x != nil {
- return x.Max
- }
- return 0
-}
-
-func (x *MemoryEvents) GetOom() uint64 {
- if x != nil {
- return x.Oom
- }
- return 0
-}
-
-func (x *MemoryEvents) GetOomKill() uint64 {
- if x != nil {
- return x.OomKill
- }
- return 0
-}
-
-type RdmaStat struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Current []*RdmaEntry `protobuf:"bytes,1,rep,name=current,proto3" json:"current,omitempty"`
- Limit []*RdmaEntry `protobuf:"bytes,2,rep,name=limit,proto3" json:"limit,omitempty"`
-}
-
-func (x *RdmaStat) Reset() {
- *x = RdmaStat{}
- if protoimpl.UnsafeEnabled {
- mi := &file_github_com_containerd_cgroups_cgroup2_stats_metrics_proto_msgTypes[5]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *RdmaStat) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*RdmaStat) ProtoMessage() {}
-
-func (x *RdmaStat) ProtoReflect() protoreflect.Message {
- mi := &file_github_com_containerd_cgroups_cgroup2_stats_metrics_proto_msgTypes[5]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use RdmaStat.ProtoReflect.Descriptor instead.
-func (*RdmaStat) Descriptor() ([]byte, []int) {
- return file_github_com_containerd_cgroups_cgroup2_stats_metrics_proto_rawDescGZIP(), []int{5}
-}
-
-func (x *RdmaStat) GetCurrent() []*RdmaEntry {
- if x != nil {
- return x.Current
- }
- return nil
-}
-
-func (x *RdmaStat) GetLimit() []*RdmaEntry {
- if x != nil {
- return x.Limit
- }
- return nil
-}
-
-type RdmaEntry struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Device string `protobuf:"bytes,1,opt,name=device,proto3" json:"device,omitempty"`
- HcaHandles uint32 `protobuf:"varint,2,opt,name=hca_handles,json=hcaHandles,proto3" json:"hca_handles,omitempty"`
- HcaObjects uint32 `protobuf:"varint,3,opt,name=hca_objects,json=hcaObjects,proto3" json:"hca_objects,omitempty"`
-}
-
-func (x *RdmaEntry) Reset() {
- *x = RdmaEntry{}
- if protoimpl.UnsafeEnabled {
- mi := &file_github_com_containerd_cgroups_cgroup2_stats_metrics_proto_msgTypes[6]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *RdmaEntry) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*RdmaEntry) ProtoMessage() {}
-
-func (x *RdmaEntry) ProtoReflect() protoreflect.Message {
- mi := &file_github_com_containerd_cgroups_cgroup2_stats_metrics_proto_msgTypes[6]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use RdmaEntry.ProtoReflect.Descriptor instead.
-func (*RdmaEntry) Descriptor() ([]byte, []int) {
- return file_github_com_containerd_cgroups_cgroup2_stats_metrics_proto_rawDescGZIP(), []int{6}
-}
-
-func (x *RdmaEntry) GetDevice() string {
- if x != nil {
- return x.Device
- }
- return ""
-}
-
-func (x *RdmaEntry) GetHcaHandles() uint32 {
- if x != nil {
- return x.HcaHandles
- }
- return 0
-}
-
-func (x *RdmaEntry) GetHcaObjects() uint32 {
- if x != nil {
- return x.HcaObjects
- }
- return 0
-}
-
-type IOStat struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Usage []*IOEntry `protobuf:"bytes,1,rep,name=usage,proto3" json:"usage,omitempty"`
-}
-
-func (x *IOStat) Reset() {
- *x = IOStat{}
- if protoimpl.UnsafeEnabled {
- mi := &file_github_com_containerd_cgroups_cgroup2_stats_metrics_proto_msgTypes[7]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *IOStat) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*IOStat) ProtoMessage() {}
-
-func (x *IOStat) ProtoReflect() protoreflect.Message {
- mi := &file_github_com_containerd_cgroups_cgroup2_stats_metrics_proto_msgTypes[7]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use IOStat.ProtoReflect.Descriptor instead.
-func (*IOStat) Descriptor() ([]byte, []int) {
- return file_github_com_containerd_cgroups_cgroup2_stats_metrics_proto_rawDescGZIP(), []int{7}
-}
-
-func (x *IOStat) GetUsage() []*IOEntry {
- if x != nil {
- return x.Usage
- }
- return nil
-}
-
-type IOEntry struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Major uint64 `protobuf:"varint,1,opt,name=major,proto3" json:"major,omitempty"`
- Minor uint64 `protobuf:"varint,2,opt,name=minor,proto3" json:"minor,omitempty"`
- Rbytes uint64 `protobuf:"varint,3,opt,name=rbytes,proto3" json:"rbytes,omitempty"`
- Wbytes uint64 `protobuf:"varint,4,opt,name=wbytes,proto3" json:"wbytes,omitempty"`
- Rios uint64 `protobuf:"varint,5,opt,name=rios,proto3" json:"rios,omitempty"`
- Wios uint64 `protobuf:"varint,6,opt,name=wios,proto3" json:"wios,omitempty"`
-}
-
-func (x *IOEntry) Reset() {
- *x = IOEntry{}
- if protoimpl.UnsafeEnabled {
- mi := &file_github_com_containerd_cgroups_cgroup2_stats_metrics_proto_msgTypes[8]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *IOEntry) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*IOEntry) ProtoMessage() {}
-
-func (x *IOEntry) ProtoReflect() protoreflect.Message {
- mi := &file_github_com_containerd_cgroups_cgroup2_stats_metrics_proto_msgTypes[8]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use IOEntry.ProtoReflect.Descriptor instead.
-func (*IOEntry) Descriptor() ([]byte, []int) {
- return file_github_com_containerd_cgroups_cgroup2_stats_metrics_proto_rawDescGZIP(), []int{8}
-}
-
-func (x *IOEntry) GetMajor() uint64 {
- if x != nil {
- return x.Major
- }
- return 0
-}
-
-func (x *IOEntry) GetMinor() uint64 {
- if x != nil {
- return x.Minor
- }
- return 0
-}
-
-func (x *IOEntry) GetRbytes() uint64 {
- if x != nil {
- return x.Rbytes
- }
- return 0
-}
-
-func (x *IOEntry) GetWbytes() uint64 {
- if x != nil {
- return x.Wbytes
- }
- return 0
-}
-
-func (x *IOEntry) GetRios() uint64 {
- if x != nil {
- return x.Rios
- }
- return 0
-}
-
-func (x *IOEntry) GetWios() uint64 {
- if x != nil {
- return x.Wios
- }
- return 0
-}
-
-type HugeTlbStat struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Current uint64 `protobuf:"varint,1,opt,name=current,proto3" json:"current,omitempty"`
- Max uint64 `protobuf:"varint,2,opt,name=max,proto3" json:"max,omitempty"`
- Pagesize string `protobuf:"bytes,3,opt,name=pagesize,proto3" json:"pagesize,omitempty"`
-}
-
-func (x *HugeTlbStat) Reset() {
- *x = HugeTlbStat{}
- if protoimpl.UnsafeEnabled {
- mi := &file_github_com_containerd_cgroups_cgroup2_stats_metrics_proto_msgTypes[9]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *HugeTlbStat) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*HugeTlbStat) ProtoMessage() {}
-
-func (x *HugeTlbStat) ProtoReflect() protoreflect.Message {
- mi := &file_github_com_containerd_cgroups_cgroup2_stats_metrics_proto_msgTypes[9]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use HugeTlbStat.ProtoReflect.Descriptor instead.
-func (*HugeTlbStat) Descriptor() ([]byte, []int) {
- return file_github_com_containerd_cgroups_cgroup2_stats_metrics_proto_rawDescGZIP(), []int{9}
-}
-
-func (x *HugeTlbStat) GetCurrent() uint64 {
- if x != nil {
- return x.Current
- }
- return 0
-}
-
-func (x *HugeTlbStat) GetMax() uint64 {
- if x != nil {
- return x.Max
- }
- return 0
-}
-
-func (x *HugeTlbStat) GetPagesize() string {
- if x != nil {
- return x.Pagesize
- }
- return ""
-}
-
-var File_github_com_containerd_cgroups_cgroup2_stats_metrics_proto protoreflect.FileDescriptor
-
-var file_github_com_containerd_cgroups_cgroup2_stats_metrics_proto_rawDesc = []byte{
- 0x0a, 0x39, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x6f, 0x6e,
- 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x64, 0x2f, 0x63, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2f,
- 0x63, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x32, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2f, 0x6d, 0x65,
- 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x18, 0x69, 0x6f, 0x2e,
- 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x64, 0x2e, 0x63, 0x67, 0x72, 0x6f, 0x75,
- 0x70, 0x73, 0x2e, 0x76, 0x32, 0x22, 0xac, 0x03, 0x0a, 0x07, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63,
- 0x73, 0x12, 0x36, 0x0a, 0x04, 0x70, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
- 0x22, 0x2e, 0x69, 0x6f, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x64, 0x2e,
- 0x63, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x69, 0x64, 0x73, 0x53,
- 0x74, 0x61, 0x74, 0x52, 0x04, 0x70, 0x69, 0x64, 0x73, 0x12, 0x33, 0x0a, 0x03, 0x63, 0x70, 0x75,
- 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x69, 0x6f, 0x2e, 0x63, 0x6f, 0x6e, 0x74,
- 0x61, 0x69, 0x6e, 0x65, 0x72, 0x64, 0x2e, 0x63, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2e, 0x76,
- 0x32, 0x2e, 0x43, 0x50, 0x55, 0x53, 0x74, 0x61, 0x74, 0x52, 0x03, 0x63, 0x70, 0x75, 0x12, 0x3c,
- 0x0a, 0x06, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24,
- 0x2e, 0x69, 0x6f, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x64, 0x2e, 0x63,
- 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2e, 0x76, 0x32, 0x2e, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79,
- 0x53, 0x74, 0x61, 0x74, 0x52, 0x06, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x12, 0x36, 0x0a, 0x04,
- 0x72, 0x64, 0x6d, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x69, 0x6f, 0x2e,
- 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x64, 0x2e, 0x63, 0x67, 0x72, 0x6f, 0x75,
- 0x70, 0x73, 0x2e, 0x76, 0x32, 0x2e, 0x52, 0x64, 0x6d, 0x61, 0x53, 0x74, 0x61, 0x74, 0x52, 0x04,
- 0x72, 0x64, 0x6d, 0x61, 0x12, 0x30, 0x0a, 0x02, 0x69, 0x6f, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x20, 0x2e, 0x69, 0x6f, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x64,
- 0x2e, 0x63, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2e, 0x76, 0x32, 0x2e, 0x49, 0x4f, 0x53, 0x74,
- 0x61, 0x74, 0x52, 0x02, 0x69, 0x6f, 0x12, 0x3f, 0x0a, 0x07, 0x68, 0x75, 0x67, 0x65, 0x74, 0x6c,
- 0x62, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x69, 0x6f, 0x2e, 0x63, 0x6f, 0x6e,
- 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x64, 0x2e, 0x63, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2e,
- 0x76, 0x32, 0x2e, 0x48, 0x75, 0x67, 0x65, 0x54, 0x6c, 0x62, 0x53, 0x74, 0x61, 0x74, 0x52, 0x07,
- 0x68, 0x75, 0x67, 0x65, 0x74, 0x6c, 0x62, 0x12, 0x4b, 0x0a, 0x0d, 0x6d, 0x65, 0x6d, 0x6f, 0x72,
- 0x79, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26,
- 0x2e, 0x69, 0x6f, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x64, 0x2e, 0x63,
- 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2e, 0x76, 0x32, 0x2e, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79,
- 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x0c, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x45, 0x76,
- 0x65, 0x6e, 0x74, 0x73, 0x22, 0x3a, 0x0a, 0x08, 0x50, 0x69, 0x64, 0x73, 0x53, 0x74, 0x61, 0x74,
- 0x12, 0x18, 0x0a, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x04, 0x52, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69,
- 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74,
- 0x22, 0xcf, 0x01, 0x0a, 0x07, 0x43, 0x50, 0x55, 0x53, 0x74, 0x61, 0x74, 0x12, 0x1d, 0x0a, 0x0a,
- 0x75, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x75, 0x73, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04,
- 0x52, 0x09, 0x75, 0x73, 0x61, 0x67, 0x65, 0x55, 0x73, 0x65, 0x63, 0x12, 0x1b, 0x0a, 0x09, 0x75,
- 0x73, 0x65, 0x72, 0x5f, 0x75, 0x73, 0x65, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08,
- 0x75, 0x73, 0x65, 0x72, 0x55, 0x73, 0x65, 0x63, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x79, 0x73, 0x74,
- 0x65, 0x6d, 0x5f, 0x75, 0x73, 0x65, 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x73,
- 0x79, 0x73, 0x74, 0x65, 0x6d, 0x55, 0x73, 0x65, 0x63, 0x12, 0x1d, 0x0a, 0x0a, 0x6e, 0x72, 0x5f,
- 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x6e,
- 0x72, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x6e, 0x72, 0x5f, 0x74,
- 0x68, 0x72, 0x6f, 0x74, 0x74, 0x6c, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b,
- 0x6e, 0x72, 0x54, 0x68, 0x72, 0x6f, 0x74, 0x74, 0x6c, 0x65, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x74,
- 0x68, 0x72, 0x6f, 0x74, 0x74, 0x6c, 0x65, 0x64, 0x5f, 0x75, 0x73, 0x65, 0x63, 0x18, 0x06, 0x20,
- 0x01, 0x28, 0x04, 0x52, 0x0d, 0x74, 0x68, 0x72, 0x6f, 0x74, 0x74, 0x6c, 0x65, 0x64, 0x55, 0x73,
- 0x65, 0x63, 0x22, 0x8f, 0x09, 0x0a, 0x0a, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x53, 0x74, 0x61,
- 0x74, 0x12, 0x12, 0x0a, 0x04, 0x61, 0x6e, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52,
- 0x04, 0x61, 0x6e, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x02, 0x20,
- 0x01, 0x28, 0x04, 0x52, 0x04, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x6b, 0x65, 0x72,
- 0x6e, 0x65, 0x6c, 0x5f, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52,
- 0x0b, 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x53, 0x74, 0x61, 0x63, 0x6b, 0x12, 0x12, 0x0a, 0x04,
- 0x73, 0x6c, 0x61, 0x62, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x73, 0x6c, 0x61, 0x62,
- 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6f, 0x63, 0x6b, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04,
- 0x73, 0x6f, 0x63, 0x6b, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x68, 0x6d, 0x65, 0x6d, 0x18, 0x06, 0x20,
- 0x01, 0x28, 0x04, 0x52, 0x05, 0x73, 0x68, 0x6d, 0x65, 0x6d, 0x12, 0x1f, 0x0a, 0x0b, 0x66, 0x69,
- 0x6c, 0x65, 0x5f, 0x6d, 0x61, 0x70, 0x70, 0x65, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x52,
- 0x0a, 0x66, 0x69, 0x6c, 0x65, 0x4d, 0x61, 0x70, 0x70, 0x65, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x66,
- 0x69, 0x6c, 0x65, 0x5f, 0x64, 0x69, 0x72, 0x74, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x52,
- 0x09, 0x66, 0x69, 0x6c, 0x65, 0x44, 0x69, 0x72, 0x74, 0x79, 0x12, 0x25, 0x0a, 0x0e, 0x66, 0x69,
- 0x6c, 0x65, 0x5f, 0x77, 0x72, 0x69, 0x74, 0x65, 0x62, 0x61, 0x63, 0x6b, 0x18, 0x09, 0x20, 0x01,
- 0x28, 0x04, 0x52, 0x0d, 0x66, 0x69, 0x6c, 0x65, 0x57, 0x72, 0x69, 0x74, 0x65, 0x62, 0x61, 0x63,
- 0x6b, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x6e, 0x6f, 0x6e, 0x5f, 0x74, 0x68, 0x70, 0x18, 0x0a, 0x20,
- 0x01, 0x28, 0x04, 0x52, 0x07, 0x61, 0x6e, 0x6f, 0x6e, 0x54, 0x68, 0x70, 0x12, 0x23, 0x0a, 0x0d,
- 0x69, 0x6e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x61, 0x6e, 0x6f, 0x6e, 0x18, 0x0b, 0x20,
- 0x01, 0x28, 0x04, 0x52, 0x0c, 0x69, 0x6e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x41, 0x6e, 0x6f,
- 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x61, 0x6e, 0x6f, 0x6e,
- 0x18, 0x0c, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x41, 0x6e,
- 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x6e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x66,
- 0x69, 0x6c, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x69, 0x6e, 0x61, 0x63, 0x74,
- 0x69, 0x76, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x63, 0x74, 0x69, 0x76,
- 0x65, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x61, 0x63,
- 0x74, 0x69, 0x76, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x75, 0x6e, 0x65, 0x76,
- 0x69, 0x63, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x75,
- 0x6e, 0x65, 0x76, 0x69, 0x63, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x29, 0x0a, 0x10, 0x73, 0x6c,
- 0x61, 0x62, 0x5f, 0x72, 0x65, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x10,
- 0x20, 0x01, 0x28, 0x04, 0x52, 0x0f, 0x73, 0x6c, 0x61, 0x62, 0x52, 0x65, 0x63, 0x6c, 0x61, 0x69,
- 0x6d, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x2d, 0x0a, 0x12, 0x73, 0x6c, 0x61, 0x62, 0x5f, 0x75, 0x6e,
- 0x72, 0x65, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28,
- 0x04, 0x52, 0x11, 0x73, 0x6c, 0x61, 0x62, 0x55, 0x6e, 0x72, 0x65, 0x63, 0x6c, 0x61, 0x69, 0x6d,
- 0x61, 0x62, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x67, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x18,
- 0x12, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x70, 0x67, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x12, 0x1e,
- 0x0a, 0x0a, 0x70, 0x67, 0x6d, 0x61, 0x6a, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x18, 0x13, 0x20, 0x01,
- 0x28, 0x04, 0x52, 0x0a, 0x70, 0x67, 0x6d, 0x61, 0x6a, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x12, 0x2d,
- 0x0a, 0x12, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x73, 0x65, 0x74, 0x5f, 0x72, 0x65, 0x66,
- 0x61, 0x75, 0x6c, 0x74, 0x18, 0x14, 0x20, 0x01, 0x28, 0x04, 0x52, 0x11, 0x77, 0x6f, 0x72, 0x6b,
- 0x69, 0x6e, 0x67, 0x73, 0x65, 0x74, 0x52, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x12, 0x2f, 0x0a,
- 0x13, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x73, 0x65, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69,
- 0x76, 0x61, 0x74, 0x65, 0x18, 0x15, 0x20, 0x01, 0x28, 0x04, 0x52, 0x12, 0x77, 0x6f, 0x72, 0x6b,
- 0x69, 0x6e, 0x67, 0x73, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, 0x12, 0x35,
- 0x0a, 0x16, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x73, 0x65, 0x74, 0x5f, 0x6e, 0x6f, 0x64,
- 0x65, 0x72, 0x65, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x18, 0x16, 0x20, 0x01, 0x28, 0x04, 0x52, 0x15,
- 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x73, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x72, 0x65,
- 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x67, 0x72, 0x65, 0x66, 0x69, 0x6c,
- 0x6c, 0x18, 0x17, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x70, 0x67, 0x72, 0x65, 0x66, 0x69, 0x6c,
- 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x67, 0x73, 0x63, 0x61, 0x6e, 0x18, 0x18, 0x20, 0x01, 0x28,
- 0x04, 0x52, 0x06, 0x70, 0x67, 0x73, 0x63, 0x61, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x67, 0x73,
- 0x74, 0x65, 0x61, 0x6c, 0x18, 0x19, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x70, 0x67, 0x73, 0x74,
- 0x65, 0x61, 0x6c, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x67, 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74,
- 0x65, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x70, 0x67, 0x61, 0x63, 0x74, 0x69, 0x76,
- 0x61, 0x74, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x70, 0x67, 0x64, 0x65, 0x61, 0x63, 0x74, 0x69, 0x76,
- 0x61, 0x74, 0x65, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x70, 0x67, 0x64, 0x65, 0x61,
- 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x67, 0x6c, 0x61, 0x7a,
- 0x79, 0x66, 0x72, 0x65, 0x65, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x70, 0x67, 0x6c,
- 0x61, 0x7a, 0x79, 0x66, 0x72, 0x65, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x67, 0x6c, 0x61, 0x7a,
- 0x79, 0x66, 0x72, 0x65, 0x65, 0x64, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x70, 0x67,
- 0x6c, 0x61, 0x7a, 0x79, 0x66, 0x72, 0x65, 0x65, 0x64, 0x12, 0x26, 0x0a, 0x0f, 0x74, 0x68, 0x70,
- 0x5f, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x18, 0x1e, 0x20, 0x01,
- 0x28, 0x04, 0x52, 0x0d, 0x74, 0x68, 0x70, 0x46, 0x61, 0x75, 0x6c, 0x74, 0x41, 0x6c, 0x6c, 0x6f,
- 0x63, 0x12, 0x2c, 0x0a, 0x12, 0x74, 0x68, 0x70, 0x5f, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x70, 0x73,
- 0x65, 0x5f, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x04, 0x52, 0x10, 0x74,
- 0x68, 0x70, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x70, 0x73, 0x65, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x12,
- 0x14, 0x0a, 0x05, 0x75, 0x73, 0x61, 0x67, 0x65, 0x18, 0x20, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05,
- 0x75, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x75, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x6c,
- 0x69, 0x6d, 0x69, 0x74, 0x18, 0x21, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x75, 0x73, 0x61, 0x67,
- 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x77, 0x61, 0x70, 0x5f, 0x75,
- 0x73, 0x61, 0x67, 0x65, 0x18, 0x22, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x73, 0x77, 0x61, 0x70,
- 0x55, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x77, 0x61, 0x70, 0x5f, 0x6c, 0x69,
- 0x6d, 0x69, 0x74, 0x18, 0x23, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x73, 0x77, 0x61, 0x70, 0x4c,
- 0x69, 0x6d, 0x69, 0x74, 0x22, 0x73, 0x0a, 0x0c, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x45, 0x76,
- 0x65, 0x6e, 0x74, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x6c, 0x6f, 0x77, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x04, 0x52, 0x03, 0x6c, 0x6f, 0x77, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x69, 0x67, 0x68, 0x18, 0x02,
- 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x68, 0x69, 0x67, 0x68, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x61,
- 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6d, 0x61, 0x78, 0x12, 0x10, 0x0a, 0x03,
- 0x6f, 0x6f, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x6f, 0x6d, 0x12, 0x19,
- 0x0a, 0x08, 0x6f, 0x6f, 0x6d, 0x5f, 0x6b, 0x69, 0x6c, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04,
- 0x52, 0x07, 0x6f, 0x6f, 0x6d, 0x4b, 0x69, 0x6c, 0x6c, 0x22, 0x84, 0x01, 0x0a, 0x08, 0x52, 0x64,
- 0x6d, 0x61, 0x53, 0x74, 0x61, 0x74, 0x12, 0x3d, 0x0a, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e,
- 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x69, 0x6f, 0x2e, 0x63, 0x6f, 0x6e,
- 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x64, 0x2e, 0x63, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2e,
- 0x76, 0x32, 0x2e, 0x52, 0x64, 0x6d, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x63, 0x75,
- 0x72, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x39, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x02,
- 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x69, 0x6f, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69,
- 0x6e, 0x65, 0x72, 0x64, 0x2e, 0x63, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2e, 0x76, 0x32, 0x2e,
- 0x52, 0x64, 0x6d, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74,
- 0x22, 0x65, 0x0a, 0x09, 0x52, 0x64, 0x6d, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x16, 0x0a,
- 0x06, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64,
- 0x65, 0x76, 0x69, 0x63, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x68, 0x63, 0x61, 0x5f, 0x68, 0x61, 0x6e,
- 0x64, 0x6c, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x68, 0x63, 0x61, 0x48,
- 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x68, 0x63, 0x61, 0x5f, 0x6f, 0x62,
- 0x6a, 0x65, 0x63, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x68, 0x63, 0x61,
- 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x22, 0x41, 0x0a, 0x06, 0x49, 0x4f, 0x53, 0x74, 0x61,
- 0x74, 0x12, 0x37, 0x0a, 0x05, 0x75, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b,
- 0x32, 0x21, 0x2e, 0x69, 0x6f, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x64,
- 0x2e, 0x63, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2e, 0x76, 0x32, 0x2e, 0x49, 0x4f, 0x45, 0x6e,
- 0x74, 0x72, 0x79, 0x52, 0x05, 0x75, 0x73, 0x61, 0x67, 0x65, 0x22, 0x8d, 0x01, 0x0a, 0x07, 0x49,
- 0x4f, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x61, 0x6a, 0x6f, 0x72, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x6d, 0x61, 0x6a, 0x6f, 0x72, 0x12, 0x14, 0x0a, 0x05,
- 0x6d, 0x69, 0x6e, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x6d, 0x69, 0x6e,
- 0x6f, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01,
- 0x28, 0x04, 0x52, 0x06, 0x72, 0x62, 0x79, 0x74, 0x65, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x77, 0x62,
- 0x79, 0x74, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x77, 0x62, 0x79, 0x74,
- 0x65, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x69, 0x6f, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04,
- 0x52, 0x04, 0x72, 0x69, 0x6f, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x77, 0x69, 0x6f, 0x73, 0x18, 0x06,
- 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x77, 0x69, 0x6f, 0x73, 0x22, 0x55, 0x0a, 0x0b, 0x48, 0x75,
- 0x67, 0x65, 0x54, 0x6c, 0x62, 0x53, 0x74, 0x61, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x75, 0x72,
- 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x63, 0x75, 0x72, 0x72,
- 0x65, 0x6e, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x61, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04,
- 0x52, 0x03, 0x6d, 0x61, 0x78, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x67, 0x65, 0x73, 0x69, 0x7a,
- 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x73, 0x69, 0x7a,
- 0x65, 0x42, 0x2d, 0x5a, 0x2b, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f,
- 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x64, 0x2f, 0x63, 0x67, 0x72, 0x6f, 0x75,
- 0x70, 0x73, 0x2f, 0x63, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x32, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x73,
- 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
-}
-
-var (
- file_github_com_containerd_cgroups_cgroup2_stats_metrics_proto_rawDescOnce sync.Once
- file_github_com_containerd_cgroups_cgroup2_stats_metrics_proto_rawDescData = file_github_com_containerd_cgroups_cgroup2_stats_metrics_proto_rawDesc
-)
-
-func file_github_com_containerd_cgroups_cgroup2_stats_metrics_proto_rawDescGZIP() []byte {
- file_github_com_containerd_cgroups_cgroup2_stats_metrics_proto_rawDescOnce.Do(func() {
- file_github_com_containerd_cgroups_cgroup2_stats_metrics_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_containerd_cgroups_cgroup2_stats_metrics_proto_rawDescData)
- })
- return file_github_com_containerd_cgroups_cgroup2_stats_metrics_proto_rawDescData
-}
-
-var file_github_com_containerd_cgroups_cgroup2_stats_metrics_proto_msgTypes = make([]protoimpl.MessageInfo, 10)
-var file_github_com_containerd_cgroups_cgroup2_stats_metrics_proto_goTypes = []interface{}{
- (*Metrics)(nil), // 0: io.containerd.cgroups.v2.Metrics
- (*PidsStat)(nil), // 1: io.containerd.cgroups.v2.PidsStat
- (*CPUStat)(nil), // 2: io.containerd.cgroups.v2.CPUStat
- (*MemoryStat)(nil), // 3: io.containerd.cgroups.v2.MemoryStat
- (*MemoryEvents)(nil), // 4: io.containerd.cgroups.v2.MemoryEvents
- (*RdmaStat)(nil), // 5: io.containerd.cgroups.v2.RdmaStat
- (*RdmaEntry)(nil), // 6: io.containerd.cgroups.v2.RdmaEntry
- (*IOStat)(nil), // 7: io.containerd.cgroups.v2.IOStat
- (*IOEntry)(nil), // 8: io.containerd.cgroups.v2.IOEntry
- (*HugeTlbStat)(nil), // 9: io.containerd.cgroups.v2.HugeTlbStat
-}
-var file_github_com_containerd_cgroups_cgroup2_stats_metrics_proto_depIdxs = []int32{
- 1, // 0: io.containerd.cgroups.v2.Metrics.pids:type_name -> io.containerd.cgroups.v2.PidsStat
- 2, // 1: io.containerd.cgroups.v2.Metrics.cpu:type_name -> io.containerd.cgroups.v2.CPUStat
- 3, // 2: io.containerd.cgroups.v2.Metrics.memory:type_name -> io.containerd.cgroups.v2.MemoryStat
- 5, // 3: io.containerd.cgroups.v2.Metrics.rdma:type_name -> io.containerd.cgroups.v2.RdmaStat
- 7, // 4: io.containerd.cgroups.v2.Metrics.io:type_name -> io.containerd.cgroups.v2.IOStat
- 9, // 5: io.containerd.cgroups.v2.Metrics.hugetlb:type_name -> io.containerd.cgroups.v2.HugeTlbStat
- 4, // 6: io.containerd.cgroups.v2.Metrics.memory_events:type_name -> io.containerd.cgroups.v2.MemoryEvents
- 6, // 7: io.containerd.cgroups.v2.RdmaStat.current:type_name -> io.containerd.cgroups.v2.RdmaEntry
- 6, // 8: io.containerd.cgroups.v2.RdmaStat.limit:type_name -> io.containerd.cgroups.v2.RdmaEntry
- 8, // 9: io.containerd.cgroups.v2.IOStat.usage:type_name -> io.containerd.cgroups.v2.IOEntry
- 10, // [10:10] is the sub-list for method output_type
- 10, // [10:10] is the sub-list for method input_type
- 10, // [10:10] is the sub-list for extension type_name
- 10, // [10:10] is the sub-list for extension extendee
- 0, // [0:10] is the sub-list for field type_name
-}
-
-func init() { file_github_com_containerd_cgroups_cgroup2_stats_metrics_proto_init() }
-func file_github_com_containerd_cgroups_cgroup2_stats_metrics_proto_init() {
- if File_github_com_containerd_cgroups_cgroup2_stats_metrics_proto != nil {
- return
- }
- if !protoimpl.UnsafeEnabled {
- file_github_com_containerd_cgroups_cgroup2_stats_metrics_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Metrics); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_github_com_containerd_cgroups_cgroup2_stats_metrics_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*PidsStat); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_github_com_containerd_cgroups_cgroup2_stats_metrics_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*CPUStat); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_github_com_containerd_cgroups_cgroup2_stats_metrics_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*MemoryStat); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_github_com_containerd_cgroups_cgroup2_stats_metrics_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*MemoryEvents); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_github_com_containerd_cgroups_cgroup2_stats_metrics_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*RdmaStat); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_github_com_containerd_cgroups_cgroup2_stats_metrics_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*RdmaEntry); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_github_com_containerd_cgroups_cgroup2_stats_metrics_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*IOStat); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_github_com_containerd_cgroups_cgroup2_stats_metrics_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*IOEntry); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_github_com_containerd_cgroups_cgroup2_stats_metrics_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*HugeTlbStat); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- }
- type x struct{}
- out := protoimpl.TypeBuilder{
- File: protoimpl.DescBuilder{
- GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
- RawDescriptor: file_github_com_containerd_cgroups_cgroup2_stats_metrics_proto_rawDesc,
- NumEnums: 0,
- NumMessages: 10,
- NumExtensions: 0,
- NumServices: 0,
- },
- GoTypes: file_github_com_containerd_cgroups_cgroup2_stats_metrics_proto_goTypes,
- DependencyIndexes: file_github_com_containerd_cgroups_cgroup2_stats_metrics_proto_depIdxs,
- MessageInfos: file_github_com_containerd_cgroups_cgroup2_stats_metrics_proto_msgTypes,
- }.Build()
- File_github_com_containerd_cgroups_cgroup2_stats_metrics_proto = out.File
- file_github_com_containerd_cgroups_cgroup2_stats_metrics_proto_rawDesc = nil
- file_github_com_containerd_cgroups_cgroup2_stats_metrics_proto_goTypes = nil
- file_github_com_containerd_cgroups_cgroup2_stats_metrics_proto_depIdxs = nil
-}
diff --git a/vendor/github.com/containerd/cgroups/v3/cgroup2/stats/metrics.pb.txt b/vendor/github.com/containerd/cgroups/v3/cgroup2/stats/metrics.pb.txt
deleted file mode 100644
index f9b0cd343..000000000
--- a/vendor/github.com/containerd/cgroups/v3/cgroup2/stats/metrics.pb.txt
+++ /dev/null
@@ -1,538 +0,0 @@
-file {
- name: "github.com/containerd/cgroups/cgroup2/stats/metrics.proto"
- package: "io.containerd.cgroups.v2"
- message_type {
- name: "Metrics"
- field {
- name: "pids"
- number: 1
- label: LABEL_OPTIONAL
- type: TYPE_MESSAGE
- type_name: ".io.containerd.cgroups.v2.PidsStat"
- json_name: "pids"
- }
- field {
- name: "cpu"
- number: 2
- label: LABEL_OPTIONAL
- type: TYPE_MESSAGE
- type_name: ".io.containerd.cgroups.v2.CPUStat"
- json_name: "cpu"
- }
- field {
- name: "memory"
- number: 4
- label: LABEL_OPTIONAL
- type: TYPE_MESSAGE
- type_name: ".io.containerd.cgroups.v2.MemoryStat"
- json_name: "memory"
- }
- field {
- name: "rdma"
- number: 5
- label: LABEL_OPTIONAL
- type: TYPE_MESSAGE
- type_name: ".io.containerd.cgroups.v2.RdmaStat"
- json_name: "rdma"
- }
- field {
- name: "io"
- number: 6
- label: LABEL_OPTIONAL
- type: TYPE_MESSAGE
- type_name: ".io.containerd.cgroups.v2.IOStat"
- json_name: "io"
- }
- field {
- name: "hugetlb"
- number: 7
- label: LABEL_REPEATED
- type: TYPE_MESSAGE
- type_name: ".io.containerd.cgroups.v2.HugeTlbStat"
- json_name: "hugetlb"
- }
- field {
- name: "memory_events"
- number: 8
- label: LABEL_OPTIONAL
- type: TYPE_MESSAGE
- type_name: ".io.containerd.cgroups.v2.MemoryEvents"
- json_name: "memoryEvents"
- }
- }
- message_type {
- name: "PidsStat"
- field {
- name: "current"
- number: 1
- label: LABEL_OPTIONAL
- type: TYPE_UINT64
- json_name: "current"
- }
- field {
- name: "limit"
- number: 2
- label: LABEL_OPTIONAL
- type: TYPE_UINT64
- json_name: "limit"
- }
- }
- message_type {
- name: "CPUStat"
- field {
- name: "usage_usec"
- number: 1
- label: LABEL_OPTIONAL
- type: TYPE_UINT64
- json_name: "usageUsec"
- }
- field {
- name: "user_usec"
- number: 2
- label: LABEL_OPTIONAL
- type: TYPE_UINT64
- json_name: "userUsec"
- }
- field {
- name: "system_usec"
- number: 3
- label: LABEL_OPTIONAL
- type: TYPE_UINT64
- json_name: "systemUsec"
- }
- field {
- name: "nr_periods"
- number: 4
- label: LABEL_OPTIONAL
- type: TYPE_UINT64
- json_name: "nrPeriods"
- }
- field {
- name: "nr_throttled"
- number: 5
- label: LABEL_OPTIONAL
- type: TYPE_UINT64
- json_name: "nrThrottled"
- }
- field {
- name: "throttled_usec"
- number: 6
- label: LABEL_OPTIONAL
- type: TYPE_UINT64
- json_name: "throttledUsec"
- }
- }
- message_type {
- name: "MemoryStat"
- field {
- name: "anon"
- number: 1
- label: LABEL_OPTIONAL
- type: TYPE_UINT64
- json_name: "anon"
- }
- field {
- name: "file"
- number: 2
- label: LABEL_OPTIONAL
- type: TYPE_UINT64
- json_name: "file"
- }
- field {
- name: "kernel_stack"
- number: 3
- label: LABEL_OPTIONAL
- type: TYPE_UINT64
- json_name: "kernelStack"
- }
- field {
- name: "slab"
- number: 4
- label: LABEL_OPTIONAL
- type: TYPE_UINT64
- json_name: "slab"
- }
- field {
- name: "sock"
- number: 5
- label: LABEL_OPTIONAL
- type: TYPE_UINT64
- json_name: "sock"
- }
- field {
- name: "shmem"
- number: 6
- label: LABEL_OPTIONAL
- type: TYPE_UINT64
- json_name: "shmem"
- }
- field {
- name: "file_mapped"
- number: 7
- label: LABEL_OPTIONAL
- type: TYPE_UINT64
- json_name: "fileMapped"
- }
- field {
- name: "file_dirty"
- number: 8
- label: LABEL_OPTIONAL
- type: TYPE_UINT64
- json_name: "fileDirty"
- }
- field {
- name: "file_writeback"
- number: 9
- label: LABEL_OPTIONAL
- type: TYPE_UINT64
- json_name: "fileWriteback"
- }
- field {
- name: "anon_thp"
- number: 10
- label: LABEL_OPTIONAL
- type: TYPE_UINT64
- json_name: "anonThp"
- }
- field {
- name: "inactive_anon"
- number: 11
- label: LABEL_OPTIONAL
- type: TYPE_UINT64
- json_name: "inactiveAnon"
- }
- field {
- name: "active_anon"
- number: 12
- label: LABEL_OPTIONAL
- type: TYPE_UINT64
- json_name: "activeAnon"
- }
- field {
- name: "inactive_file"
- number: 13
- label: LABEL_OPTIONAL
- type: TYPE_UINT64
- json_name: "inactiveFile"
- }
- field {
- name: "active_file"
- number: 14
- label: LABEL_OPTIONAL
- type: TYPE_UINT64
- json_name: "activeFile"
- }
- field {
- name: "unevictable"
- number: 15
- label: LABEL_OPTIONAL
- type: TYPE_UINT64
- json_name: "unevictable"
- }
- field {
- name: "slab_reclaimable"
- number: 16
- label: LABEL_OPTIONAL
- type: TYPE_UINT64
- json_name: "slabReclaimable"
- }
- field {
- name: "slab_unreclaimable"
- number: 17
- label: LABEL_OPTIONAL
- type: TYPE_UINT64
- json_name: "slabUnreclaimable"
- }
- field {
- name: "pgfault"
- number: 18
- label: LABEL_OPTIONAL
- type: TYPE_UINT64
- json_name: "pgfault"
- }
- field {
- name: "pgmajfault"
- number: 19
- label: LABEL_OPTIONAL
- type: TYPE_UINT64
- json_name: "pgmajfault"
- }
- field {
- name: "workingset_refault"
- number: 20
- label: LABEL_OPTIONAL
- type: TYPE_UINT64
- json_name: "workingsetRefault"
- }
- field {
- name: "workingset_activate"
- number: 21
- label: LABEL_OPTIONAL
- type: TYPE_UINT64
- json_name: "workingsetActivate"
- }
- field {
- name: "workingset_nodereclaim"
- number: 22
- label: LABEL_OPTIONAL
- type: TYPE_UINT64
- json_name: "workingsetNodereclaim"
- }
- field {
- name: "pgrefill"
- number: 23
- label: LABEL_OPTIONAL
- type: TYPE_UINT64
- json_name: "pgrefill"
- }
- field {
- name: "pgscan"
- number: 24
- label: LABEL_OPTIONAL
- type: TYPE_UINT64
- json_name: "pgscan"
- }
- field {
- name: "pgsteal"
- number: 25
- label: LABEL_OPTIONAL
- type: TYPE_UINT64
- json_name: "pgsteal"
- }
- field {
- name: "pgactivate"
- number: 26
- label: LABEL_OPTIONAL
- type: TYPE_UINT64
- json_name: "pgactivate"
- }
- field {
- name: "pgdeactivate"
- number: 27
- label: LABEL_OPTIONAL
- type: TYPE_UINT64
- json_name: "pgdeactivate"
- }
- field {
- name: "pglazyfree"
- number: 28
- label: LABEL_OPTIONAL
- type: TYPE_UINT64
- json_name: "pglazyfree"
- }
- field {
- name: "pglazyfreed"
- number: 29
- label: LABEL_OPTIONAL
- type: TYPE_UINT64
- json_name: "pglazyfreed"
- }
- field {
- name: "thp_fault_alloc"
- number: 30
- label: LABEL_OPTIONAL
- type: TYPE_UINT64
- json_name: "thpFaultAlloc"
- }
- field {
- name: "thp_collapse_alloc"
- number: 31
- label: LABEL_OPTIONAL
- type: TYPE_UINT64
- json_name: "thpCollapseAlloc"
- }
- field {
- name: "usage"
- number: 32
- label: LABEL_OPTIONAL
- type: TYPE_UINT64
- json_name: "usage"
- }
- field {
- name: "usage_limit"
- number: 33
- label: LABEL_OPTIONAL
- type: TYPE_UINT64
- json_name: "usageLimit"
- }
- field {
- name: "swap_usage"
- number: 34
- label: LABEL_OPTIONAL
- type: TYPE_UINT64
- json_name: "swapUsage"
- }
- field {
- name: "swap_limit"
- number: 35
- label: LABEL_OPTIONAL
- type: TYPE_UINT64
- json_name: "swapLimit"
- }
- }
- message_type {
- name: "MemoryEvents"
- field {
- name: "low"
- number: 1
- label: LABEL_OPTIONAL
- type: TYPE_UINT64
- json_name: "low"
- }
- field {
- name: "high"
- number: 2
- label: LABEL_OPTIONAL
- type: TYPE_UINT64
- json_name: "high"
- }
- field {
- name: "max"
- number: 3
- label: LABEL_OPTIONAL
- type: TYPE_UINT64
- json_name: "max"
- }
- field {
- name: "oom"
- number: 4
- label: LABEL_OPTIONAL
- type: TYPE_UINT64
- json_name: "oom"
- }
- field {
- name: "oom_kill"
- number: 5
- label: LABEL_OPTIONAL
- type: TYPE_UINT64
- json_name: "oomKill"
- }
- }
- message_type {
- name: "RdmaStat"
- field {
- name: "current"
- number: 1
- label: LABEL_REPEATED
- type: TYPE_MESSAGE
- type_name: ".io.containerd.cgroups.v2.RdmaEntry"
- json_name: "current"
- }
- field {
- name: "limit"
- number: 2
- label: LABEL_REPEATED
- type: TYPE_MESSAGE
- type_name: ".io.containerd.cgroups.v2.RdmaEntry"
- json_name: "limit"
- }
- }
- message_type {
- name: "RdmaEntry"
- field {
- name: "device"
- number: 1
- label: LABEL_OPTIONAL
- type: TYPE_STRING
- json_name: "device"
- }
- field {
- name: "hca_handles"
- number: 2
- label: LABEL_OPTIONAL
- type: TYPE_UINT32
- json_name: "hcaHandles"
- }
- field {
- name: "hca_objects"
- number: 3
- label: LABEL_OPTIONAL
- type: TYPE_UINT32
- json_name: "hcaObjects"
- }
- }
- message_type {
- name: "IOStat"
- field {
- name: "usage"
- number: 1
- label: LABEL_REPEATED
- type: TYPE_MESSAGE
- type_name: ".io.containerd.cgroups.v2.IOEntry"
- json_name: "usage"
- }
- }
- message_type {
- name: "IOEntry"
- field {
- name: "major"
- number: 1
- label: LABEL_OPTIONAL
- type: TYPE_UINT64
- json_name: "major"
- }
- field {
- name: "minor"
- number: 2
- label: LABEL_OPTIONAL
- type: TYPE_UINT64
- json_name: "minor"
- }
- field {
- name: "rbytes"
- number: 3
- label: LABEL_OPTIONAL
- type: TYPE_UINT64
- json_name: "rbytes"
- }
- field {
- name: "wbytes"
- number: 4
- label: LABEL_OPTIONAL
- type: TYPE_UINT64
- json_name: "wbytes"
- }
- field {
- name: "rios"
- number: 5
- label: LABEL_OPTIONAL
- type: TYPE_UINT64
- json_name: "rios"
- }
- field {
- name: "wios"
- number: 6
- label: LABEL_OPTIONAL
- type: TYPE_UINT64
- json_name: "wios"
- }
- }
- message_type {
- name: "HugeTlbStat"
- field {
- name: "current"
- number: 1
- label: LABEL_OPTIONAL
- type: TYPE_UINT64
- json_name: "current"
- }
- field {
- name: "max"
- number: 2
- label: LABEL_OPTIONAL
- type: TYPE_UINT64
- json_name: "max"
- }
- field {
- name: "pagesize"
- number: 3
- label: LABEL_OPTIONAL
- type: TYPE_STRING
- json_name: "pagesize"
- }
- }
- options {
- go_package: "github.com/containerd/cgroups/cgroup2/stats"
- }
- syntax: "proto3"
-}
diff --git a/vendor/github.com/containerd/cgroups/v3/cgroup2/stats/metrics.proto b/vendor/github.com/containerd/cgroups/v3/cgroup2/stats/metrics.proto
deleted file mode 100644
index 3e9ee6d6a..000000000
--- a/vendor/github.com/containerd/cgroups/v3/cgroup2/stats/metrics.proto
+++ /dev/null
@@ -1,105 +0,0 @@
-syntax = "proto3";
-
-package io.containerd.cgroups.v2;
-
-option go_package = "github.com/containerd/cgroups/cgroup2/stats";
-
-message Metrics {
- PidsStat pids = 1;
- CPUStat cpu = 2;
- MemoryStat memory = 4;
- RdmaStat rdma = 5;
- IOStat io = 6;
- repeated HugeTlbStat hugetlb = 7;
- MemoryEvents memory_events = 8;
-}
-
-message PidsStat {
- uint64 current = 1;
- uint64 limit = 2;
-}
-
-message CPUStat {
- uint64 usage_usec = 1;
- uint64 user_usec = 2;
- uint64 system_usec = 3;
- uint64 nr_periods = 4;
- uint64 nr_throttled = 5;
- uint64 throttled_usec = 6;
-}
-
-message MemoryStat {
- uint64 anon = 1;
- uint64 file = 2;
- uint64 kernel_stack = 3;
- uint64 slab = 4;
- uint64 sock = 5;
- uint64 shmem = 6;
- uint64 file_mapped = 7;
- uint64 file_dirty = 8;
- uint64 file_writeback = 9;
- uint64 anon_thp = 10;
- uint64 inactive_anon = 11;
- uint64 active_anon = 12;
- uint64 inactive_file = 13;
- uint64 active_file = 14;
- uint64 unevictable = 15;
- uint64 slab_reclaimable = 16;
- uint64 slab_unreclaimable = 17;
- uint64 pgfault = 18;
- uint64 pgmajfault = 19;
- uint64 workingset_refault = 20;
- uint64 workingset_activate = 21;
- uint64 workingset_nodereclaim = 22;
- uint64 pgrefill = 23;
- uint64 pgscan = 24;
- uint64 pgsteal = 25;
- uint64 pgactivate = 26;
- uint64 pgdeactivate = 27;
- uint64 pglazyfree = 28;
- uint64 pglazyfreed = 29;
- uint64 thp_fault_alloc = 30;
- uint64 thp_collapse_alloc = 31;
- uint64 usage = 32;
- uint64 usage_limit = 33;
- uint64 swap_usage = 34;
- uint64 swap_limit = 35;
-}
-
-message MemoryEvents {
- uint64 low = 1;
- uint64 high = 2;
- uint64 max = 3;
- uint64 oom = 4;
- uint64 oom_kill = 5;
-}
-
-message RdmaStat {
- repeated RdmaEntry current = 1;
- repeated RdmaEntry limit = 2;
-}
-
-message RdmaEntry {
- string device = 1;
- uint32 hca_handles = 2;
- uint32 hca_objects = 3;
-}
-
-message IOStat {
- repeated IOEntry usage = 1;
-}
-
-message IOEntry {
- uint64 major = 1;
- uint64 minor = 2;
- uint64 rbytes = 3;
- uint64 wbytes = 4;
- uint64 rios = 5;
- uint64 wios = 6;
-}
-
-message HugeTlbStat {
- uint64 current = 1;
- uint64 max = 2;
- string pagesize = 3;
-}
diff --git a/vendor/github.com/containerd/cgroups/v3/cgroup2/utils.go b/vendor/github.com/containerd/cgroups/v3/cgroup2/utils.go
deleted file mode 100644
index 776501830..000000000
--- a/vendor/github.com/containerd/cgroups/v3/cgroup2/utils.go
+++ /dev/null
@@ -1,446 +0,0 @@
-/*
- Copyright The containerd Authors.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-
-package cgroup2
-
-import (
- "bufio"
- "fmt"
- "io"
- "math"
- "os"
- "path/filepath"
- "strconv"
- "strings"
- "time"
- "unsafe"
-
- "github.com/containerd/cgroups/v3/cgroup2/stats"
-
- "github.com/godbus/dbus/v5"
- "github.com/opencontainers/runtime-spec/specs-go"
- "github.com/sirupsen/logrus"
- "golang.org/x/sys/unix"
-)
-
-const (
- cgroupProcs = "cgroup.procs"
- cgroupThreads = "cgroup.threads"
- defaultDirPerm = 0755
-)
-
-// defaultFilePerm is a var so that the test framework can change the filemode
-// of all files created when the tests are running. The difference between the
-// tests and real world use is that files like "cgroup.procs" will exist when writing
-// to a read cgroup filesystem and do not exist prior when running in the tests.
-// this is set to a non 0 value in the test code
-var defaultFilePerm = os.FileMode(0)
-
-// remove will remove a cgroup path handling EAGAIN and EBUSY errors and
-// retrying the remove after a exp timeout
-func remove(path string) error {
- var err error
- delay := 10 * time.Millisecond
- for i := 0; i < 5; i++ {
- if i != 0 {
- time.Sleep(delay)
- delay *= 2
- }
- if err = os.RemoveAll(path); err == nil {
- return nil
- }
- }
- return fmt.Errorf("cgroups: unable to remove path %q: %w", path, err)
-}
-
-// parseCgroupProcsFile parses /sys/fs/cgroup/$GROUPPATH/cgroup.procs
-func parseCgroupProcsFile(path string) ([]uint64, error) {
- f, err := os.Open(path)
- if err != nil {
- return nil, err
- }
- defer f.Close()
- var (
- out []uint64
- s = bufio.NewScanner(f)
- )
- for s.Scan() {
- if t := s.Text(); t != "" {
- pid, err := strconv.ParseUint(t, 10, 0)
- if err != nil {
- return nil, err
- }
- out = append(out, pid)
- }
- }
- if err := s.Err(); err != nil {
- return nil, err
- }
- return out, nil
-}
-
-func parseKV(raw string) (string, interface{}, error) {
- parts := strings.Fields(raw)
- switch len(parts) {
- case 2:
- v, err := parseUint(parts[1], 10, 64)
- if err != nil {
- // if we cannot parse as a uint, parse as a string
- return parts[0], parts[1], nil
- }
- return parts[0], v, nil
- default:
- return "", 0, ErrInvalidFormat
- }
-}
-
-func parseUint(s string, base, bitSize int) (uint64, error) {
- v, err := strconv.ParseUint(s, base, bitSize)
- if err != nil {
- intValue, intErr := strconv.ParseInt(s, base, bitSize)
- // 1. Handle negative values greater than MinInt64 (and)
- // 2. Handle negative values lesser than MinInt64
- if intErr == nil && intValue < 0 {
- return 0, nil
- } else if intErr != nil &&
- intErr.(*strconv.NumError).Err == strconv.ErrRange &&
- intValue < 0 {
- return 0, nil
- }
- return 0, err
- }
- return v, nil
-}
-
-// parseCgroupFile parses /proc/PID/cgroup file and return string
-func parseCgroupFile(path string) (string, error) {
- f, err := os.Open(path)
- if err != nil {
- return "", err
- }
- defer f.Close()
- return parseCgroupFromReader(f)
-}
-
-func parseCgroupFromReader(r io.Reader) (string, error) {
- var (
- s = bufio.NewScanner(r)
- )
- for s.Scan() {
- var (
- text = s.Text()
- parts = strings.SplitN(text, ":", 3)
- )
- if len(parts) < 3 {
- return "", fmt.Errorf("invalid cgroup entry: %q", text)
- }
- // text is like "0::/user.slice/user-1001.slice/session-1.scope"
- if parts[0] == "0" && parts[1] == "" {
- return parts[2], nil
- }
- }
- if err := s.Err(); err != nil {
- return "", err
- }
- return "", fmt.Errorf("cgroup path not found")
-}
-
-// ToResources converts the oci LinuxResources struct into a
-// v2 Resources type for use with this package.
-//
-// converting cgroups configuration from v1 to v2
-// ref: https://github.com/containers/crun/blob/master/crun.1.md#cgroup-v2
-func ToResources(spec *specs.LinuxResources) *Resources {
- var resources Resources
- if cpu := spec.CPU; cpu != nil {
- resources.CPU = &CPU{
- Cpus: cpu.Cpus,
- Mems: cpu.Mems,
- }
- if shares := cpu.Shares; shares != nil {
- convertedWeight := 1 + ((*shares-2)*9999)/262142
- resources.CPU.Weight = &convertedWeight
- }
- if period := cpu.Period; period != nil {
- resources.CPU.Max = NewCPUMax(cpu.Quota, period)
- }
- }
- if mem := spec.Memory; mem != nil {
- resources.Memory = &Memory{}
- if swap := mem.Swap; swap != nil {
- resources.Memory.Swap = swap
- }
- if l := mem.Limit; l != nil {
- resources.Memory.Max = l
- }
- if l := mem.Reservation; l != nil {
- resources.Memory.Low = l
- }
- }
- if hugetlbs := spec.HugepageLimits; hugetlbs != nil {
- hugeTlbUsage := HugeTlb{}
- for _, hugetlb := range hugetlbs {
- hugeTlbUsage = append(hugeTlbUsage, HugeTlbEntry{
- HugePageSize: hugetlb.Pagesize,
- Limit: hugetlb.Limit,
- })
- }
- resources.HugeTlb = &hugeTlbUsage
- }
- if pids := spec.Pids; pids != nil {
- resources.Pids = &Pids{
- Max: pids.Limit,
- }
- }
- if i := spec.BlockIO; i != nil {
- resources.IO = &IO{}
- if i.Weight != nil {
- resources.IO.BFQ.Weight = 1 + (*i.Weight-10)*9999/990
- }
- for t, devices := range map[IOType][]specs.LinuxThrottleDevice{
- ReadBPS: i.ThrottleReadBpsDevice,
- WriteBPS: i.ThrottleWriteBpsDevice,
- ReadIOPS: i.ThrottleReadIOPSDevice,
- WriteIOPS: i.ThrottleWriteIOPSDevice,
- } {
- for _, d := range devices {
- resources.IO.Max = append(resources.IO.Max, Entry{
- Type: t,
- Major: d.Major,
- Minor: d.Minor,
- Rate: d.Rate,
- })
- }
- }
- }
- if i := spec.Rdma; i != nil {
- resources.RDMA = &RDMA{}
- for device, value := range spec.Rdma {
- if device != "" && (value.HcaHandles != nil && value.HcaObjects != nil) {
- resources.RDMA.Limit = append(resources.RDMA.Limit, RDMAEntry{
- Device: device,
- HcaHandles: *value.HcaHandles,
- HcaObjects: *value.HcaObjects,
- })
- }
- }
- }
-
- return &resources
-}
-
-// Gets uint64 parsed content of single value cgroup stat file
-func getStatFileContentUint64(filePath string) uint64 {
- contents, err := os.ReadFile(filePath)
- if err != nil {
- return 0
- }
- trimmed := strings.TrimSpace(string(contents))
- if trimmed == "max" {
- return math.MaxUint64
- }
-
- res, err := parseUint(trimmed, 10, 64)
- if err != nil {
- logrus.Errorf("unable to parse %q as a uint from Cgroup file %q", string(contents), filePath)
- return res
- }
-
- return res
-}
-
-func readIoStats(path string) []*stats.IOEntry {
- // more details on the io.stat file format: https://www.kernel.org/doc/Documentation/cgroup-v2.txt
- var usage []*stats.IOEntry
- fpath := filepath.Join(path, "io.stat")
- currentData, err := os.ReadFile(fpath)
- if err != nil {
- return usage
- }
- entries := strings.Split(string(currentData), "\n")
-
- for _, entry := range entries {
- parts := strings.Split(entry, " ")
- if len(parts) < 2 {
- continue
- }
- majmin := strings.Split(parts[0], ":")
- if len(majmin) != 2 {
- continue
- }
- major, err := strconv.ParseUint(majmin[0], 10, 0)
- if err != nil {
- return usage
- }
- minor, err := strconv.ParseUint(majmin[1], 10, 0)
- if err != nil {
- return usage
- }
- parts = parts[1:]
- ioEntry := stats.IOEntry{
- Major: major,
- Minor: minor,
- }
- for _, s := range parts {
- keyPairValue := strings.Split(s, "=")
- if len(keyPairValue) != 2 {
- continue
- }
- v, err := strconv.ParseUint(keyPairValue[1], 10, 0)
- if err != nil {
- continue
- }
- switch keyPairValue[0] {
- case "rbytes":
- ioEntry.Rbytes = v
- case "wbytes":
- ioEntry.Wbytes = v
- case "rios":
- ioEntry.Rios = v
- case "wios":
- ioEntry.Wios = v
- }
- }
- usage = append(usage, &ioEntry)
- }
- return usage
-}
-
-func rdmaStats(filepath string) []*stats.RdmaEntry {
- currentData, err := os.ReadFile(filepath)
- if err != nil {
- return []*stats.RdmaEntry{}
- }
- return toRdmaEntry(strings.Split(string(currentData), "\n"))
-}
-
-func parseRdmaKV(raw string, entry *stats.RdmaEntry) {
- var value uint64
- var err error
-
- parts := strings.Split(raw, "=")
- switch len(parts) {
- case 2:
- if parts[1] == "max" {
- value = math.MaxUint32
- } else {
- value, err = parseUint(parts[1], 10, 32)
- if err != nil {
- return
- }
- }
- if parts[0] == "hca_handle" {
- entry.HcaHandles = uint32(value)
- } else if parts[0] == "hca_object" {
- entry.HcaObjects = uint32(value)
- }
- }
-}
-
-func toRdmaEntry(strEntries []string) []*stats.RdmaEntry {
- var rdmaEntries []*stats.RdmaEntry
- for i := range strEntries {
- parts := strings.Fields(strEntries[i])
- switch len(parts) {
- case 3:
- entry := new(stats.RdmaEntry)
- entry.Device = parts[0]
- parseRdmaKV(parts[1], entry)
- parseRdmaKV(parts[2], entry)
-
- rdmaEntries = append(rdmaEntries, entry)
- default:
- continue
- }
- }
- return rdmaEntries
-}
-
-// isUnitExists returns true if the error is that a systemd unit already exists.
-func isUnitExists(err error) bool {
- if err != nil {
- if dbusError, ok := err.(dbus.Error); ok {
- return strings.Contains(dbusError.Name, "org.freedesktop.systemd1.UnitExists")
- }
- }
- return false
-}
-
-func systemdUnitFromPath(path string) string {
- _, unit := filepath.Split(path)
- return unit
-}
-
-func readHugeTlbStats(path string) []*stats.HugeTlbStat {
- var usage = []*stats.HugeTlbStat{}
- var keyUsage = make(map[string]*stats.HugeTlbStat)
- f, err := os.Open(path)
- if err != nil {
- return usage
- }
- files, err := f.Readdir(-1)
- f.Close()
- if err != nil {
- return usage
- }
-
- for _, file := range files {
- if strings.Contains(file.Name(), "hugetlb") &&
- (strings.HasSuffix(file.Name(), "max") || strings.HasSuffix(file.Name(), "current")) {
- var hugeTlb *stats.HugeTlbStat
- var ok bool
- fileName := strings.Split(file.Name(), ".")
- pageSize := fileName[1]
- if hugeTlb, ok = keyUsage[pageSize]; !ok {
- hugeTlb = &stats.HugeTlbStat{}
- }
- hugeTlb.Pagesize = pageSize
- out, err := os.ReadFile(filepath.Join(path, file.Name()))
- if err != nil {
- continue
- }
- var value uint64
- stringVal := strings.TrimSpace(string(out))
- if stringVal == "max" {
- value = math.MaxUint64
- } else {
- value, err = strconv.ParseUint(stringVal, 10, 64)
- }
- if err != nil {
- continue
- }
- switch fileName[2] {
- case "max":
- hugeTlb.Max = value
- case "current":
- hugeTlb.Current = value
- }
- keyUsage[pageSize] = hugeTlb
- }
- }
- for _, entry := range keyUsage {
- usage = append(usage, entry)
- }
- return usage
-}
-
-func getSubreaper() (int, error) {
- var i uintptr
- if err := unix.Prctl(unix.PR_GET_CHILD_SUBREAPER, uintptr(unsafe.Pointer(&i)), 0, 0, 0); err != nil {
- return -1, err
- }
- return int(i), nil
-}
diff --git a/vendor/github.com/containerd/cgroups/v3/utils.go b/vendor/github.com/containerd/cgroups/v3/utils.go
deleted file mode 100644
index ebff755a7..000000000
--- a/vendor/github.com/containerd/cgroups/v3/utils.go
+++ /dev/null
@@ -1,150 +0,0 @@
-/*
- Copyright The containerd Authors.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-
-package cgroups
-
-import (
- "bufio"
- "fmt"
- "io"
- "os"
- "path/filepath"
- "strings"
- "sync"
-
- "golang.org/x/sys/unix"
-)
-
-var (
- nsOnce sync.Once
- inUserNS bool
- checkMode sync.Once
- cgMode CGMode
-)
-
-const unifiedMountpoint = "/sys/fs/cgroup"
-
-// CGMode is the cgroups mode of the host system
-type CGMode int
-
-const (
- // Unavailable cgroup mountpoint
- Unavailable CGMode = iota
- // Legacy cgroups v1
- Legacy
- // Hybrid with cgroups v1 and v2 controllers mounted
- Hybrid
- // Unified with only cgroups v2 mounted
- Unified
-)
-
-// Mode returns the cgroups mode running on the host
-func Mode() CGMode {
- checkMode.Do(func() {
- var st unix.Statfs_t
- if err := unix.Statfs(unifiedMountpoint, &st); err != nil {
- cgMode = Unavailable
- return
- }
- switch st.Type {
- case unix.CGROUP2_SUPER_MAGIC:
- cgMode = Unified
- default:
- cgMode = Legacy
- if err := unix.Statfs(filepath.Join(unifiedMountpoint, "unified"), &st); err != nil {
- return
- }
- if st.Type == unix.CGROUP2_SUPER_MAGIC {
- cgMode = Hybrid
- }
- }
- })
- return cgMode
-}
-
-// RunningInUserNS detects whether we are currently running in a user namespace.
-// Copied from github.com/lxc/lxd/shared/util.go
-func RunningInUserNS() bool {
- nsOnce.Do(func() {
- file, err := os.Open("/proc/self/uid_map")
- if err != nil {
- // This kernel-provided file only exists if user namespaces are supported
- return
- }
- defer file.Close()
-
- buf := bufio.NewReader(file)
- l, _, err := buf.ReadLine()
- if err != nil {
- return
- }
-
- line := string(l)
- var a, b, c int64
- fmt.Sscanf(line, "%d %d %d", &a, &b, &c)
-
- /*
- * We assume we are in the initial user namespace if we have a full
- * range - 4294967295 uids starting at uid 0.
- */
- if a == 0 && b == 0 && c == 4294967295 {
- return
- }
- inUserNS = true
- })
- return inUserNS
-}
-
-// ParseCgroupFileUnified returns legacy subsystem paths as the first value,
-// and returns the unified path as the second value.
-func ParseCgroupFileUnified(path string) (map[string]string, string, error) {
- f, err := os.Open(path)
- if err != nil {
- return nil, "", err
- }
- defer f.Close()
- return ParseCgroupFromReaderUnified(f)
-}
-
-// ParseCgroupFromReaderUnified returns legacy subsystem paths as the first value,
-// and returns the unified path as the second value.
-func ParseCgroupFromReaderUnified(r io.Reader) (map[string]string, string, error) {
- var (
- cgroups = make(map[string]string)
- unified = ""
- s = bufio.NewScanner(r)
- )
- for s.Scan() {
- var (
- text = s.Text()
- parts = strings.SplitN(text, ":", 3)
- )
- if len(parts) < 3 {
- return nil, unified, fmt.Errorf("invalid cgroup entry: %q", text)
- }
- for _, subs := range strings.Split(parts[1], ",") {
- if subs == "" {
- unified = parts[2]
- } else {
- cgroups[subs] = parts[2]
- }
- }
- }
- if err := s.Err(); err != nil {
- return nil, unified, err
- }
- return cgroups, unified, nil
-}