diff --git a/cmd/gpu-operator/main.go b/cmd/gpu-operator/main.go
index 303201c57..da1506a57 100644
--- a/cmd/gpu-operator/main.go
+++ b/cmd/gpu-operator/main.go
@@ -34,7 +34,6 @@ import (
apiimagev1 "github.com/openshift/api/image/v1"
secv1 "github.com/openshift/api/security/v1"
promv1 "github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring/v1"
- _ "go.uber.org/automaxprocs"
corev1 "k8s.io/api/core/v1"
apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
"k8s.io/apimachinery/pkg/runtime"
diff --git a/go.mod b/go.mod
index 89634a888..0b0f9ffbf 100644
--- a/go.mod
+++ b/go.mod
@@ -22,7 +22,6 @@ require (
github.com/sirupsen/logrus v1.9.3
github.com/stretchr/testify v1.11.1
github.com/urfave/cli/v3 v3.5.0
- go.uber.org/automaxprocs v1.6.0
go.uber.org/zap v1.27.0
golang.org/x/mod v0.30.0
k8s.io/api v0.34.3
diff --git a/go.sum b/go.sum
index 7cabe47f3..ee698f80f 100644
--- a/go.sum
+++ b/go.sum
@@ -223,8 +223,6 @@ github.com/xlab/treeprint v1.2.0 h1:HzHnuAF1plUN2zGlAFHbSQP2qJ0ZAD3XF5XD7OesXRQ=
github.com/xlab/treeprint v1.2.0/go.mod h1:gj5Gd3gPdKtR1ikdDK6fnFLdmIS0X30kTTuNd/WEJu0=
github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
-go.uber.org/automaxprocs v1.6.0 h1:O3y2/QNTOdbF+e/dpXNNW7Rx2hZ4sTIPyybbxyNqTUs=
-go.uber.org/automaxprocs v1.6.0/go.mod h1:ifeIMSnPZuznNm6jmdzmU3/bfk01Fe2fotchwEFJ8r8=
go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto=
go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE=
go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0=
diff --git a/vendor/go.uber.org/automaxprocs/.codecov.yml b/vendor/go.uber.org/automaxprocs/.codecov.yml
deleted file mode 100644
index 9a2ed4a99..000000000
--- a/vendor/go.uber.org/automaxprocs/.codecov.yml
+++ /dev/null
@@ -1,14 +0,0 @@
-coverage:
- range: 80..100
- round: down
- precision: 2
-
- status:
- project: # measuring the overall project coverage
- default: # context, you can create multiple ones with custom titles
- enabled: yes # must be yes|true to enable this status
- target: 90% # specify the target coverage for each commit status
- # option: "auto" (must increase from parent commit or pull request base)
- # option: "X%" a static target percentage to hit
- if_not_found: success # if parent is not found report status as success, error, or failure
- if_ci_failed: error # if ci fails report status as success, error, or failure
diff --git a/vendor/go.uber.org/automaxprocs/.gitignore b/vendor/go.uber.org/automaxprocs/.gitignore
deleted file mode 100644
index dd7bcf513..000000000
--- a/vendor/go.uber.org/automaxprocs/.gitignore
+++ /dev/null
@@ -1,33 +0,0 @@
-# Compiled Object files, Static and Dynamic libs (Shared Objects)
-*.o
-*.a
-*.so
-
-# Folders
-_obj
-_test
-vendor
-
-# Architecture specific extensions/prefixes
-*.[568vq]
-[568vq].out
-
-*.cgo1.go
-*.cgo2.c
-_cgo_defun.c
-_cgo_gotypes.go
-_cgo_export.*
-
-_testmain.go
-
-*.exe
-*.test
-*.prof
-*.pprof
-*.out
-*.log
-coverage.txt
-
-/bin
-cover.out
-cover.html
diff --git a/vendor/go.uber.org/automaxprocs/CHANGELOG.md b/vendor/go.uber.org/automaxprocs/CHANGELOG.md
deleted file mode 100644
index f421056ae..000000000
--- a/vendor/go.uber.org/automaxprocs/CHANGELOG.md
+++ /dev/null
@@ -1,52 +0,0 @@
-# Changelog
-
-## v1.6.0 (2024-07-24)
-
-- Add RoundQuotaFunc option that allows configuration of rounding
- behavior for floating point CPU quota.
-
-## v1.5.3 (2023-07-19)
-
-- Fix mountinfo parsing when super options have fields with spaces.
-- Fix division by zero while parsing cgroups.
-
-## v1.5.2 (2023-03-16)
-
-- Support child control cgroups
-- Fix file descriptor leak
-- Update dependencies
-
-## v1.5.1 (2022-04-06)
-
-- Fix cgroups v2 mountpoint detection.
-
-## v1.5.0 (2022-04-05)
-
-- Add support for cgroups v2.
-
-Thanks to @emadolsky for their contribution to this release.
-
-## v1.4.0 (2021-02-01)
-
-- Support colons in cgroup names.
-- Remove linters from runtime dependencies.
-
-## v1.3.0 (2020-01-23)
-
-- Migrate to Go modules.
-
-## v1.2.0 (2018-02-22)
-
-- Fixed quota clamping to always round down rather than up; Rather than
- guaranteeing constant throttling at saturation, instead assume that the
- fractional CPU was added as a hedge for factors outside of Go's scheduler.
-
-## v1.1.0 (2017-11-10)
-
-- Log the new value of `GOMAXPROCS` rather than the current value.
-- Make logs more explicit about whether `GOMAXPROCS` was modified or not.
-- Allow customization of the minimum `GOMAXPROCS`, and modify default from 2 to 1.
-
-## v1.0.0 (2017-08-09)
-
-- Initial release.
diff --git a/vendor/go.uber.org/automaxprocs/CODE_OF_CONDUCT.md b/vendor/go.uber.org/automaxprocs/CODE_OF_CONDUCT.md
deleted file mode 100644
index e327d9aa5..000000000
--- a/vendor/go.uber.org/automaxprocs/CODE_OF_CONDUCT.md
+++ /dev/null
@@ -1,75 +0,0 @@
-# Contributor Covenant Code of Conduct
-
-## Our Pledge
-
-In the interest of fostering an open and welcoming environment, we as
-contributors and maintainers pledge to making participation in our project and
-our community a harassment-free experience for everyone, regardless of age,
-body size, disability, ethnicity, gender identity and expression, level of
-experience, nationality, personal appearance, race, religion, or sexual
-identity and orientation.
-
-## Our Standards
-
-Examples of behavior that contributes to creating a positive environment
-include:
-
-* Using welcoming and inclusive language
-* Being respectful of differing viewpoints and experiences
-* Gracefully accepting constructive criticism
-* Focusing on what is best for the community
-* Showing empathy towards other community members
-
-Examples of unacceptable behavior by participants include:
-
-* The use of sexualized language or imagery and unwelcome sexual attention or
- advances
-* Trolling, insulting/derogatory comments, and personal or political attacks
-* Public or private harassment
-* Publishing others' private information, such as a physical or electronic
- address, without explicit permission
-* Other conduct which could reasonably be considered inappropriate in a
- professional setting
-
-## Our Responsibilities
-
-Project maintainers are responsible for clarifying the standards of acceptable
-behavior and are expected to take appropriate and fair corrective action in
-response to any instances of unacceptable behavior.
-
-Project maintainers have the right and responsibility to remove, edit, or
-reject comments, commits, code, wiki edits, issues, and other contributions
-that are not aligned to this Code of Conduct, or to ban temporarily or
-permanently any contributor for other behaviors that they deem inappropriate,
-threatening, offensive, or harmful.
-
-## Scope
-
-This Code of Conduct applies both within project spaces and in public spaces
-when an individual is representing the project or its community. Examples of
-representing a project or community include using an official project e-mail
-address, posting via an official social media account, or acting as an
-appointed representative at an online or offline event. Representation of a
-project may be further defined and clarified by project maintainers.
-
-## Enforcement
-
-Instances of abusive, harassing, or otherwise unacceptable behavior may be
-reported by contacting the project team at oss-conduct@uber.com. The project
-team will review and investigate all complaints, and will respond in a way
-that it deems appropriate to the circumstances. The project team is obligated
-to maintain confidentiality with regard to the reporter of an incident.
-Further details of specific enforcement policies may be posted separately.
-
-Project maintainers who do not follow or enforce the Code of Conduct in good
-faith may face temporary or permanent repercussions as determined by other
-members of the project's leadership.
-
-## Attribution
-
-This Code of Conduct is adapted from the [Contributor Covenant][homepage],
-version 1.4, available at
-[http://contributor-covenant.org/version/1/4][version].
-
-[homepage]: http://contributor-covenant.org
-[version]: http://contributor-covenant.org/version/1/4/
diff --git a/vendor/go.uber.org/automaxprocs/CONTRIBUTING.md b/vendor/go.uber.org/automaxprocs/CONTRIBUTING.md
deleted file mode 100644
index 2b6a6040d..000000000
--- a/vendor/go.uber.org/automaxprocs/CONTRIBUTING.md
+++ /dev/null
@@ -1,81 +0,0 @@
-# Contributing
-
-We'd love your help improving this package!
-
-If you'd like to add new exported APIs, please [open an issue][open-issue]
-describing your proposal — discussing API changes ahead of time makes
-pull request review much smoother. In your issue, pull request, and any other
-communications, please remember to treat your fellow contributors with
-respect! We take our [code of conduct](CODE_OF_CONDUCT.md) seriously.
-
-Note that you'll need to sign [Uber's Contributor License Agreement][cla]
-before we can accept any of your contributions. If necessary, a bot will remind
-you to accept the CLA when you open your pull request.
-
-## Setup
-
-[Fork][fork], then clone the repository:
-
-```
-mkdir -p $GOPATH/src/go.uber.org
-cd $GOPATH/src/go.uber.org
-git clone git@github.com:your_github_username/automaxprocs.git
-cd automaxprocs
-git remote add upstream https://github.com/uber-go/automaxprocs.git
-git fetch upstream
-```
-
-Install the test dependencies:
-
-```
-make dependencies
-```
-
-Make sure that the tests and the linters pass:
-
-```
-make test
-make lint
-```
-
-If you're not using the minor version of Go specified in the Makefile's
-`LINTABLE_MINOR_VERSIONS` variable, `make lint` doesn't do anything. This is
-fine, but it means that you'll only discover lint failures after you open your
-pull request.
-
-## Making Changes
-
-Start by creating a new branch for your changes:
-
-```
-cd $GOPATH/src/go.uber.org/automaxprocs
-git checkout master
-git fetch upstream
-git rebase upstream/master
-git checkout -b cool_new_feature
-```
-
-Make your changes, then ensure that `make lint` and `make test` still pass. If
-you're satisfied with your changes, push them to your fork.
-
-```
-git push origin cool_new_feature
-```
-
-Then use the GitHub UI to open a pull request.
-
-At this point, you're waiting on us to review your changes. We *try* to respond
-to issues and pull requests within a few business days, and we may suggest some
-improvements or alternatives. Once your changes are approved, one of the
-project maintainers will merge them.
-
-We're much more likely to approve your changes if you:
-
-* Add tests for new functionality.
-* Write a [good commit message][commit-message].
-* Maintain backward compatibility.
-
-[fork]: https://github.com/uber-go/automaxprocs/fork
-[open-issue]: https://github.com/uber-go/automaxprocs/issues/new
-[cla]: https://cla-assistant.io/uber-go/automaxprocs
-[commit-message]: http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html
diff --git a/vendor/go.uber.org/automaxprocs/LICENSE b/vendor/go.uber.org/automaxprocs/LICENSE
deleted file mode 100644
index 20dcf51d9..000000000
--- a/vendor/go.uber.org/automaxprocs/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2017 Uber Technologies, Inc.
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
\ No newline at end of file
diff --git a/vendor/go.uber.org/automaxprocs/Makefile b/vendor/go.uber.org/automaxprocs/Makefile
deleted file mode 100644
index 1642b7148..000000000
--- a/vendor/go.uber.org/automaxprocs/Makefile
+++ /dev/null
@@ -1,46 +0,0 @@
-export GOBIN ?= $(shell pwd)/bin
-
-GO_FILES := $(shell \
- find . '(' -path '*/.*' -o -path './vendor' ')' -prune \
- -o -name '*.go' -print | cut -b3-)
-
-GOLINT = $(GOBIN)/golint
-STATICCHECK = $(GOBIN)/staticcheck
-
-.PHONY: build
-build:
- go build ./...
-
-.PHONY: install
-install:
- go mod download
-
-.PHONY: test
-test:
- go test -race ./...
-
-.PHONY: cover
-cover:
- go test -coverprofile=cover.out -covermode=atomic -coverpkg=./... ./...
- go tool cover -html=cover.out -o cover.html
-
-$(GOLINT): tools/go.mod
- cd tools && go install golang.org/x/lint/golint
-
-$(STATICCHECK): tools/go.mod
- cd tools && go install honnef.co/go/tools/cmd/staticcheck@2023.1.2
-
-.PHONY: lint
-lint: $(GOLINT) $(STATICCHECK)
- @rm -rf lint.log
- @echo "Checking gofmt"
- @gofmt -d -s $(GO_FILES) 2>&1 | tee lint.log
- @echo "Checking go vet"
- @go vet ./... 2>&1 | tee -a lint.log
- @echo "Checking golint"
- @$(GOLINT) ./... | tee -a lint.log
- @echo "Checking staticcheck"
- @$(STATICCHECK) ./... 2>&1 | tee -a lint.log
- @echo "Checking for license headers..."
- @./.build/check_license.sh | tee -a lint.log
- @[ ! -s lint.log ]
diff --git a/vendor/go.uber.org/automaxprocs/README.md b/vendor/go.uber.org/automaxprocs/README.md
deleted file mode 100644
index bfed32ada..000000000
--- a/vendor/go.uber.org/automaxprocs/README.md
+++ /dev/null
@@ -1,71 +0,0 @@
-# automaxprocs [![GoDoc][doc-img]][doc] [![Build Status][ci-img]][ci] [![Coverage Status][cov-img]][cov]
-
-Automatically set `GOMAXPROCS` to match Linux container CPU quota.
-
-## Installation
-
-`go get -u go.uber.org/automaxprocs`
-
-## Quick Start
-
-```go
-import _ "go.uber.org/automaxprocs"
-
-func main() {
- // Your application logic here.
-}
-```
-
-# Performance
-Data measured from Uber's internal load balancer. We ran the load balancer with 200% CPU quota (i.e., 2 cores):
-
-| GOMAXPROCS | RPS | P50 (ms) | P99.9 (ms) |
-| ------------------ | --------- | -------- | ---------- |
-| 1 | 28,893.18 | 1.46 | 19.70 |
-| 2 (equal to quota) | 44,715.07 | 0.84 | 26.38 |
-| 3 | 44,212.93 | 0.66 | 30.07 |
-| 4 | 41,071.15 | 0.57 | 42.94 |
-| 8 | 33,111.69 | 0.43 | 64.32 |
-| Default (24) | 22,191.40 | 0.45 | 76.19 |
-
-When `GOMAXPROCS` is increased above the CPU quota, we see P50 decrease slightly, but see significant increases to P99. We also see that the total RPS handled also decreases.
-
-When `GOMAXPROCS` is higher than the CPU quota allocated, we also saw significant throttling:
-
-```
-$ cat /sys/fs/cgroup/cpu,cpuacct/system.slice/[...]/cpu.stat
-nr_periods 42227334
-nr_throttled 131923
-throttled_time 88613212216618
-```
-
-Once `GOMAXPROCS` was reduced to match the CPU quota, we saw no CPU throttling.
-
-## Development Status: Stable
-
-All APIs are finalized, and no breaking changes will be made in the 1.x series
-of releases. Users of semver-aware dependency management systems should pin
-automaxprocs to `^1`.
-
-## Contributing
-
-We encourage and support an active, healthy community of contributors —
-including you! Details are in the [contribution guide](CONTRIBUTING.md) and
-the [code of conduct](CODE_OF_CONDUCT.md). The automaxprocs maintainers keep
-an eye on issues and pull requests, but you can also report any negative
-conduct to oss-conduct@uber.com. That email list is a private, safe space;
-even the automaxprocs maintainers don't have access, so don't hesitate to hold
-us to a high standard.
-
-
-
-Released under the [MIT License](LICENSE).
-
-[doc-img]: https://godoc.org/go.uber.org/automaxprocs?status.svg
-[doc]: https://godoc.org/go.uber.org/automaxprocs
-[ci-img]: https://github.com/uber-go/automaxprocs/actions/workflows/go.yml/badge.svg
-[ci]: https://github.com/uber-go/automaxprocs/actions/workflows/go.yml
-[cov-img]: https://codecov.io/gh/uber-go/automaxprocs/branch/master/graph/badge.svg
-[cov]: https://codecov.io/gh/uber-go/automaxprocs
-
-
diff --git a/vendor/go.uber.org/automaxprocs/automaxprocs.go b/vendor/go.uber.org/automaxprocs/automaxprocs.go
deleted file mode 100644
index 69946a3e1..000000000
--- a/vendor/go.uber.org/automaxprocs/automaxprocs.go
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright (c) 2017 Uber Technologies, Inc.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-
-// Package automaxprocs automatically sets GOMAXPROCS to match the Linux
-// container CPU quota, if any.
-package automaxprocs // import "go.uber.org/automaxprocs"
-
-import (
- "log"
-
- "go.uber.org/automaxprocs/maxprocs"
-)
-
-func init() {
- maxprocs.Set(maxprocs.Logger(log.Printf))
-}
diff --git a/vendor/go.uber.org/automaxprocs/internal/cgroups/cgroup.go b/vendor/go.uber.org/automaxprocs/internal/cgroups/cgroup.go
deleted file mode 100644
index fe4ecf561..000000000
--- a/vendor/go.uber.org/automaxprocs/internal/cgroups/cgroup.go
+++ /dev/null
@@ -1,79 +0,0 @@
-// Copyright (c) 2017 Uber Technologies, Inc.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-
-//go:build linux
-// +build linux
-
-package cgroups
-
-import (
- "bufio"
- "io"
- "os"
- "path/filepath"
- "strconv"
-)
-
-// CGroup represents the data structure for a Linux control group.
-type CGroup struct {
- path string
-}
-
-// NewCGroup returns a new *CGroup from a given path.
-func NewCGroup(path string) *CGroup {
- return &CGroup{path: path}
-}
-
-// Path returns the path of the CGroup*.
-func (cg *CGroup) Path() string {
- return cg.path
-}
-
-// ParamPath returns the path of the given cgroup param under itself.
-func (cg *CGroup) ParamPath(param string) string {
- return filepath.Join(cg.path, param)
-}
-
-// readFirstLine reads the first line from a cgroup param file.
-func (cg *CGroup) readFirstLine(param string) (string, error) {
- paramFile, err := os.Open(cg.ParamPath(param))
- if err != nil {
- return "", err
- }
- defer paramFile.Close()
-
- scanner := bufio.NewScanner(paramFile)
- if scanner.Scan() {
- return scanner.Text(), nil
- }
- if err := scanner.Err(); err != nil {
- return "", err
- }
- return "", io.ErrUnexpectedEOF
-}
-
-// readInt parses the first line from a cgroup param file as int.
-func (cg *CGroup) readInt(param string) (int, error) {
- text, err := cg.readFirstLine(param)
- if err != nil {
- return 0, err
- }
- return strconv.Atoi(text)
-}
diff --git a/vendor/go.uber.org/automaxprocs/internal/cgroups/cgroups.go b/vendor/go.uber.org/automaxprocs/internal/cgroups/cgroups.go
deleted file mode 100644
index e89f54360..000000000
--- a/vendor/go.uber.org/automaxprocs/internal/cgroups/cgroups.go
+++ /dev/null
@@ -1,118 +0,0 @@
-// Copyright (c) 2017 Uber Technologies, Inc.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-
-//go:build linux
-// +build linux
-
-package cgroups
-
-const (
- // _cgroupFSType is the Linux CGroup file system type used in
- // `/proc/$PID/mountinfo`.
- _cgroupFSType = "cgroup"
- // _cgroupSubsysCPU is the CPU CGroup subsystem.
- _cgroupSubsysCPU = "cpu"
- // _cgroupSubsysCPUAcct is the CPU accounting CGroup subsystem.
- _cgroupSubsysCPUAcct = "cpuacct"
- // _cgroupSubsysCPUSet is the CPUSet CGroup subsystem.
- _cgroupSubsysCPUSet = "cpuset"
- // _cgroupSubsysMemory is the Memory CGroup subsystem.
- _cgroupSubsysMemory = "memory"
-
- // _cgroupCPUCFSQuotaUsParam is the file name for the CGroup CFS quota
- // parameter.
- _cgroupCPUCFSQuotaUsParam = "cpu.cfs_quota_us"
- // _cgroupCPUCFSPeriodUsParam is the file name for the CGroup CFS period
- // parameter.
- _cgroupCPUCFSPeriodUsParam = "cpu.cfs_period_us"
-)
-
-const (
- _procPathCGroup = "/proc/self/cgroup"
- _procPathMountInfo = "/proc/self/mountinfo"
-)
-
-// CGroups is a map that associates each CGroup with its subsystem name.
-type CGroups map[string]*CGroup
-
-// NewCGroups returns a new *CGroups from given `mountinfo` and `cgroup` files
-// under for some process under `/proc` file system (see also proc(5) for more
-// information).
-func NewCGroups(procPathMountInfo, procPathCGroup string) (CGroups, error) {
- cgroupSubsystems, err := parseCGroupSubsystems(procPathCGroup)
- if err != nil {
- return nil, err
- }
-
- cgroups := make(CGroups)
- newMountPoint := func(mp *MountPoint) error {
- if mp.FSType != _cgroupFSType {
- return nil
- }
-
- for _, opt := range mp.SuperOptions {
- subsys, exists := cgroupSubsystems[opt]
- if !exists {
- continue
- }
-
- cgroupPath, err := mp.Translate(subsys.Name)
- if err != nil {
- return err
- }
- cgroups[opt] = NewCGroup(cgroupPath)
- }
-
- return nil
- }
-
- if err := parseMountInfo(procPathMountInfo, newMountPoint); err != nil {
- return nil, err
- }
- return cgroups, nil
-}
-
-// NewCGroupsForCurrentProcess returns a new *CGroups instance for the current
-// process.
-func NewCGroupsForCurrentProcess() (CGroups, error) {
- return NewCGroups(_procPathMountInfo, _procPathCGroup)
-}
-
-// CPUQuota returns the CPU quota applied with the CPU cgroup controller.
-// It is a result of `cpu.cfs_quota_us / cpu.cfs_period_us`. If the value of
-// `cpu.cfs_quota_us` was not set (-1), the method returns `(-1, nil)`.
-func (cg CGroups) CPUQuota() (float64, bool, error) {
- cpuCGroup, exists := cg[_cgroupSubsysCPU]
- if !exists {
- return -1, false, nil
- }
-
- cfsQuotaUs, err := cpuCGroup.readInt(_cgroupCPUCFSQuotaUsParam)
- if defined := cfsQuotaUs > 0; err != nil || !defined {
- return -1, defined, err
- }
-
- cfsPeriodUs, err := cpuCGroup.readInt(_cgroupCPUCFSPeriodUsParam)
- if defined := cfsPeriodUs > 0; err != nil || !defined {
- return -1, defined, err
- }
-
- return float64(cfsQuotaUs) / float64(cfsPeriodUs), true, nil
-}
diff --git a/vendor/go.uber.org/automaxprocs/internal/cgroups/cgroups2.go b/vendor/go.uber.org/automaxprocs/internal/cgroups/cgroups2.go
deleted file mode 100644
index 78556062f..000000000
--- a/vendor/go.uber.org/automaxprocs/internal/cgroups/cgroups2.go
+++ /dev/null
@@ -1,176 +0,0 @@
-// Copyright (c) 2022 Uber Technologies, Inc.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-
-//go:build linux
-// +build linux
-
-package cgroups
-
-import (
- "bufio"
- "errors"
- "fmt"
- "io"
- "os"
- "path"
- "strconv"
- "strings"
-)
-
-const (
- // _cgroupv2CPUMax is the file name for the CGroup-V2 CPU max and period
- // parameter.
- _cgroupv2CPUMax = "cpu.max"
- // _cgroupFSType is the Linux CGroup-V2 file system type used in
- // `/proc/$PID/mountinfo`.
- _cgroupv2FSType = "cgroup2"
-
- _cgroupv2MountPoint = "/sys/fs/cgroup"
-
- _cgroupV2CPUMaxDefaultPeriod = 100000
- _cgroupV2CPUMaxQuotaMax = "max"
-)
-
-const (
- _cgroupv2CPUMaxQuotaIndex = iota
- _cgroupv2CPUMaxPeriodIndex
-)
-
-// ErrNotV2 indicates that the system is not using cgroups2.
-var ErrNotV2 = errors.New("not using cgroups2")
-
-// CGroups2 provides access to cgroups data for systems using cgroups2.
-type CGroups2 struct {
- mountPoint string
- groupPath string
- cpuMaxFile string
-}
-
-// NewCGroups2ForCurrentProcess builds a CGroups2 for the current process.
-//
-// This returns ErrNotV2 if the system is not using cgroups2.
-func NewCGroups2ForCurrentProcess() (*CGroups2, error) {
- return newCGroups2From(_procPathMountInfo, _procPathCGroup)
-}
-
-func newCGroups2From(mountInfoPath, procPathCGroup string) (*CGroups2, error) {
- isV2, err := isCGroupV2(mountInfoPath)
- if err != nil {
- return nil, err
- }
-
- if !isV2 {
- return nil, ErrNotV2
- }
-
- subsystems, err := parseCGroupSubsystems(procPathCGroup)
- if err != nil {
- return nil, err
- }
-
- // Find v2 subsystem by looking for the `0` id
- var v2subsys *CGroupSubsys
- for _, subsys := range subsystems {
- if subsys.ID == 0 {
- v2subsys = subsys
- break
- }
- }
-
- if v2subsys == nil {
- return nil, ErrNotV2
- }
-
- return &CGroups2{
- mountPoint: _cgroupv2MountPoint,
- groupPath: v2subsys.Name,
- cpuMaxFile: _cgroupv2CPUMax,
- }, nil
-}
-
-func isCGroupV2(procPathMountInfo string) (bool, error) {
- var (
- isV2 bool
- newMountPoint = func(mp *MountPoint) error {
- isV2 = isV2 || (mp.FSType == _cgroupv2FSType && mp.MountPoint == _cgroupv2MountPoint)
- return nil
- }
- )
-
- if err := parseMountInfo(procPathMountInfo, newMountPoint); err != nil {
- return false, err
- }
-
- return isV2, nil
-}
-
-// CPUQuota returns the CPU quota applied with the CPU cgroup2 controller.
-// It is a result of reading cpu quota and period from cpu.max file.
-// It will return `cpu.max / cpu.period`. If cpu.max is set to max, it returns
-// (-1, false, nil)
-func (cg *CGroups2) CPUQuota() (float64, bool, error) {
- cpuMaxParams, err := os.Open(path.Join(cg.mountPoint, cg.groupPath, cg.cpuMaxFile))
- if err != nil {
- if os.IsNotExist(err) {
- return -1, false, nil
- }
- return -1, false, err
- }
- defer cpuMaxParams.Close()
-
- scanner := bufio.NewScanner(cpuMaxParams)
- if scanner.Scan() {
- fields := strings.Fields(scanner.Text())
- if len(fields) == 0 || len(fields) > 2 {
- return -1, false, fmt.Errorf("invalid format")
- }
-
- if fields[_cgroupv2CPUMaxQuotaIndex] == _cgroupV2CPUMaxQuotaMax {
- return -1, false, nil
- }
-
- max, err := strconv.Atoi(fields[_cgroupv2CPUMaxQuotaIndex])
- if err != nil {
- return -1, false, err
- }
-
- var period int
- if len(fields) == 1 {
- period = _cgroupV2CPUMaxDefaultPeriod
- } else {
- period, err = strconv.Atoi(fields[_cgroupv2CPUMaxPeriodIndex])
- if err != nil {
- return -1, false, err
- }
-
- if period == 0 {
- return -1, false, errors.New("zero value for period is not allowed")
- }
- }
-
- return float64(max) / float64(period), true, nil
- }
-
- if err := scanner.Err(); err != nil {
- return -1, false, err
- }
-
- return 0, false, io.ErrUnexpectedEOF
-}
diff --git a/vendor/go.uber.org/automaxprocs/internal/cgroups/doc.go b/vendor/go.uber.org/automaxprocs/internal/cgroups/doc.go
deleted file mode 100644
index 113555f63..000000000
--- a/vendor/go.uber.org/automaxprocs/internal/cgroups/doc.go
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright (c) 2017 Uber Technologies, Inc.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-
-// Package cgroups provides utilities to access Linux control group (CGroups)
-// parameters (CPU quota, for example) for a given process.
-package cgroups
diff --git a/vendor/go.uber.org/automaxprocs/internal/cgroups/errors.go b/vendor/go.uber.org/automaxprocs/internal/cgroups/errors.go
deleted file mode 100644
index 94ac75a46..000000000
--- a/vendor/go.uber.org/automaxprocs/internal/cgroups/errors.go
+++ /dev/null
@@ -1,52 +0,0 @@
-// Copyright (c) 2017 Uber Technologies, Inc.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-
-//go:build linux
-// +build linux
-
-package cgroups
-
-import "fmt"
-
-type cgroupSubsysFormatInvalidError struct {
- line string
-}
-
-type mountPointFormatInvalidError struct {
- line string
-}
-
-type pathNotExposedFromMountPointError struct {
- mountPoint string
- root string
- path string
-}
-
-func (err cgroupSubsysFormatInvalidError) Error() string {
- return fmt.Sprintf("invalid format for CGroupSubsys: %q", err.line)
-}
-
-func (err mountPointFormatInvalidError) Error() string {
- return fmt.Sprintf("invalid format for MountPoint: %q", err.line)
-}
-
-func (err pathNotExposedFromMountPointError) Error() string {
- return fmt.Sprintf("path %q is not a descendant of mount point root %q and cannot be exposed from %q", err.path, err.root, err.mountPoint)
-}
diff --git a/vendor/go.uber.org/automaxprocs/internal/cgroups/mountpoint.go b/vendor/go.uber.org/automaxprocs/internal/cgroups/mountpoint.go
deleted file mode 100644
index f3877f78a..000000000
--- a/vendor/go.uber.org/automaxprocs/internal/cgroups/mountpoint.go
+++ /dev/null
@@ -1,171 +0,0 @@
-// Copyright (c) 2017 Uber Technologies, Inc.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-
-//go:build linux
-// +build linux
-
-package cgroups
-
-import (
- "bufio"
- "os"
- "path/filepath"
- "strconv"
- "strings"
-)
-
-const (
- _mountInfoSep = " "
- _mountInfoOptsSep = ","
- _mountInfoOptionalFieldsSep = "-"
-)
-
-const (
- _miFieldIDMountID = iota
- _miFieldIDParentID
- _miFieldIDDeviceID
- _miFieldIDRoot
- _miFieldIDMountPoint
- _miFieldIDOptions
- _miFieldIDOptionalFields
-
- _miFieldCountFirstHalf
-)
-
-const (
- _miFieldOffsetFSType = iota
- _miFieldOffsetMountSource
- _miFieldOffsetSuperOptions
-
- _miFieldCountSecondHalf
-)
-
-const _miFieldCountMin = _miFieldCountFirstHalf + _miFieldCountSecondHalf
-
-// MountPoint is the data structure for the mount points in
-// `/proc/$PID/mountinfo`. See also proc(5) for more information.
-type MountPoint struct {
- MountID int
- ParentID int
- DeviceID string
- Root string
- MountPoint string
- Options []string
- OptionalFields []string
- FSType string
- MountSource string
- SuperOptions []string
-}
-
-// NewMountPointFromLine parses a line read from `/proc/$PID/mountinfo` and
-// returns a new *MountPoint.
-func NewMountPointFromLine(line string) (*MountPoint, error) {
- fields := strings.Split(line, _mountInfoSep)
-
- if len(fields) < _miFieldCountMin {
- return nil, mountPointFormatInvalidError{line}
- }
-
- mountID, err := strconv.Atoi(fields[_miFieldIDMountID])
- if err != nil {
- return nil, err
- }
-
- parentID, err := strconv.Atoi(fields[_miFieldIDParentID])
- if err != nil {
- return nil, err
- }
-
- for i, field := range fields[_miFieldIDOptionalFields:] {
- if field == _mountInfoOptionalFieldsSep {
- // End of optional fields.
- fsTypeStart := _miFieldIDOptionalFields + i + 1
-
- // Now we know where the optional fields end, split the line again with a
- // limit to avoid issues with spaces in super options as present on WSL.
- fields = strings.SplitN(line, _mountInfoSep, fsTypeStart+_miFieldCountSecondHalf)
- if len(fields) != fsTypeStart+_miFieldCountSecondHalf {
- return nil, mountPointFormatInvalidError{line}
- }
-
- miFieldIDFSType := _miFieldOffsetFSType + fsTypeStart
- miFieldIDMountSource := _miFieldOffsetMountSource + fsTypeStart
- miFieldIDSuperOptions := _miFieldOffsetSuperOptions + fsTypeStart
-
- return &MountPoint{
- MountID: mountID,
- ParentID: parentID,
- DeviceID: fields[_miFieldIDDeviceID],
- Root: fields[_miFieldIDRoot],
- MountPoint: fields[_miFieldIDMountPoint],
- Options: strings.Split(fields[_miFieldIDOptions], _mountInfoOptsSep),
- OptionalFields: fields[_miFieldIDOptionalFields:(fsTypeStart - 1)],
- FSType: fields[miFieldIDFSType],
- MountSource: fields[miFieldIDMountSource],
- SuperOptions: strings.Split(fields[miFieldIDSuperOptions], _mountInfoOptsSep),
- }, nil
- }
- }
-
- return nil, mountPointFormatInvalidError{line}
-}
-
-// Translate converts an absolute path inside the *MountPoint's file system to
-// the host file system path in the mount namespace the *MountPoint belongs to.
-func (mp *MountPoint) Translate(absPath string) (string, error) {
- relPath, err := filepath.Rel(mp.Root, absPath)
-
- if err != nil {
- return "", err
- }
- if relPath == ".." || strings.HasPrefix(relPath, "../") {
- return "", pathNotExposedFromMountPointError{
- mountPoint: mp.MountPoint,
- root: mp.Root,
- path: absPath,
- }
- }
-
- return filepath.Join(mp.MountPoint, relPath), nil
-}
-
-// parseMountInfo parses procPathMountInfo (usually at `/proc/$PID/mountinfo`)
-// and yields parsed *MountPoint into newMountPoint.
-func parseMountInfo(procPathMountInfo string, newMountPoint func(*MountPoint) error) error {
- mountInfoFile, err := os.Open(procPathMountInfo)
- if err != nil {
- return err
- }
- defer mountInfoFile.Close()
-
- scanner := bufio.NewScanner(mountInfoFile)
-
- for scanner.Scan() {
- mountPoint, err := NewMountPointFromLine(scanner.Text())
- if err != nil {
- return err
- }
- if err := newMountPoint(mountPoint); err != nil {
- return err
- }
- }
-
- return scanner.Err()
-}
diff --git a/vendor/go.uber.org/automaxprocs/internal/cgroups/subsys.go b/vendor/go.uber.org/automaxprocs/internal/cgroups/subsys.go
deleted file mode 100644
index cddc3eaec..000000000
--- a/vendor/go.uber.org/automaxprocs/internal/cgroups/subsys.go
+++ /dev/null
@@ -1,103 +0,0 @@
-// Copyright (c) 2017 Uber Technologies, Inc.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-
-//go:build linux
-// +build linux
-
-package cgroups
-
-import (
- "bufio"
- "os"
- "strconv"
- "strings"
-)
-
-const (
- _cgroupSep = ":"
- _cgroupSubsysSep = ","
-)
-
-const (
- _csFieldIDID = iota
- _csFieldIDSubsystems
- _csFieldIDName
- _csFieldCount
-)
-
-// CGroupSubsys represents the data structure for entities in
-// `/proc/$PID/cgroup`. See also proc(5) for more information.
-type CGroupSubsys struct {
- ID int
- Subsystems []string
- Name string
-}
-
-// NewCGroupSubsysFromLine returns a new *CGroupSubsys by parsing a string in
-// the format of `/proc/$PID/cgroup`
-func NewCGroupSubsysFromLine(line string) (*CGroupSubsys, error) {
- fields := strings.SplitN(line, _cgroupSep, _csFieldCount)
-
- if len(fields) != _csFieldCount {
- return nil, cgroupSubsysFormatInvalidError{line}
- }
-
- id, err := strconv.Atoi(fields[_csFieldIDID])
- if err != nil {
- return nil, err
- }
-
- cgroup := &CGroupSubsys{
- ID: id,
- Subsystems: strings.Split(fields[_csFieldIDSubsystems], _cgroupSubsysSep),
- Name: fields[_csFieldIDName],
- }
-
- return cgroup, nil
-}
-
-// parseCGroupSubsystems parses procPathCGroup (usually at `/proc/$PID/cgroup`)
-// and returns a new map[string]*CGroupSubsys.
-func parseCGroupSubsystems(procPathCGroup string) (map[string]*CGroupSubsys, error) {
- cgroupFile, err := os.Open(procPathCGroup)
- if err != nil {
- return nil, err
- }
- defer cgroupFile.Close()
-
- scanner := bufio.NewScanner(cgroupFile)
- subsystems := make(map[string]*CGroupSubsys)
-
- for scanner.Scan() {
- cgroup, err := NewCGroupSubsysFromLine(scanner.Text())
- if err != nil {
- return nil, err
- }
- for _, subsys := range cgroup.Subsystems {
- subsystems[subsys] = cgroup
- }
- }
-
- if err := scanner.Err(); err != nil {
- return nil, err
- }
-
- return subsystems, nil
-}
diff --git a/vendor/go.uber.org/automaxprocs/internal/runtime/cpu_quota_linux.go b/vendor/go.uber.org/automaxprocs/internal/runtime/cpu_quota_linux.go
deleted file mode 100644
index f9057fd27..000000000
--- a/vendor/go.uber.org/automaxprocs/internal/runtime/cpu_quota_linux.go
+++ /dev/null
@@ -1,75 +0,0 @@
-// Copyright (c) 2017 Uber Technologies, Inc.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-
-//go:build linux
-// +build linux
-
-package runtime
-
-import (
- "errors"
-
- cg "go.uber.org/automaxprocs/internal/cgroups"
-)
-
-// CPUQuotaToGOMAXPROCS converts the CPU quota applied to the calling process
-// to a valid GOMAXPROCS value. The quota is converted from float to int using round.
-// If round == nil, DefaultRoundFunc is used.
-func CPUQuotaToGOMAXPROCS(minValue int, round func(v float64) int) (int, CPUQuotaStatus, error) {
- if round == nil {
- round = DefaultRoundFunc
- }
- cgroups, err := _newQueryer()
- if err != nil {
- return -1, CPUQuotaUndefined, err
- }
-
- quota, defined, err := cgroups.CPUQuota()
- if !defined || err != nil {
- return -1, CPUQuotaUndefined, err
- }
-
- maxProcs := round(quota)
- if minValue > 0 && maxProcs < minValue {
- return minValue, CPUQuotaMinUsed, nil
- }
- return maxProcs, CPUQuotaUsed, nil
-}
-
-type queryer interface {
- CPUQuota() (float64, bool, error)
-}
-
-var (
- _newCgroups2 = cg.NewCGroups2ForCurrentProcess
- _newCgroups = cg.NewCGroupsForCurrentProcess
- _newQueryer = newQueryer
-)
-
-func newQueryer() (queryer, error) {
- cgroups, err := _newCgroups2()
- if err == nil {
- return cgroups, nil
- }
- if errors.Is(err, cg.ErrNotV2) {
- return _newCgroups()
- }
- return nil, err
-}
diff --git a/vendor/go.uber.org/automaxprocs/internal/runtime/cpu_quota_unsupported.go b/vendor/go.uber.org/automaxprocs/internal/runtime/cpu_quota_unsupported.go
deleted file mode 100644
index e74701508..000000000
--- a/vendor/go.uber.org/automaxprocs/internal/runtime/cpu_quota_unsupported.go
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright (c) 2017 Uber Technologies, Inc.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-
-//go:build !linux
-// +build !linux
-
-package runtime
-
-// CPUQuotaToGOMAXPROCS converts the CPU quota applied to the calling process
-// to a valid GOMAXPROCS value. This is Linux-specific and not supported in the
-// current OS.
-func CPUQuotaToGOMAXPROCS(_ int, _ func(v float64) int) (int, CPUQuotaStatus, error) {
- return -1, CPUQuotaUndefined, nil
-}
diff --git a/vendor/go.uber.org/automaxprocs/internal/runtime/runtime.go b/vendor/go.uber.org/automaxprocs/internal/runtime/runtime.go
deleted file mode 100644
index f8a2834ac..000000000
--- a/vendor/go.uber.org/automaxprocs/internal/runtime/runtime.go
+++ /dev/null
@@ -1,40 +0,0 @@
-// Copyright (c) 2017 Uber Technologies, Inc.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-
-package runtime
-
-import "math"
-
-// CPUQuotaStatus presents the status of how CPU quota is used
-type CPUQuotaStatus int
-
-const (
- // CPUQuotaUndefined is returned when CPU quota is undefined
- CPUQuotaUndefined CPUQuotaStatus = iota
- // CPUQuotaUsed is returned when a valid CPU quota can be used
- CPUQuotaUsed
- // CPUQuotaMinUsed is returned when CPU quota is smaller than the min value
- CPUQuotaMinUsed
-)
-
-// DefaultRoundFunc is the default function to convert CPU quota from float to int. It rounds the value down (floor).
-func DefaultRoundFunc(v float64) int {
- return int(math.Floor(v))
-}
diff --git a/vendor/go.uber.org/automaxprocs/maxprocs/maxprocs.go b/vendor/go.uber.org/automaxprocs/maxprocs/maxprocs.go
deleted file mode 100644
index e561fe60b..000000000
--- a/vendor/go.uber.org/automaxprocs/maxprocs/maxprocs.go
+++ /dev/null
@@ -1,139 +0,0 @@
-// Copyright (c) 2017 Uber Technologies, Inc.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-
-// Package maxprocs lets Go programs easily configure runtime.GOMAXPROCS to
-// match the configured Linux CPU quota. Unlike the top-level automaxprocs
-// package, it lets the caller configure logging and handle errors.
-package maxprocs // import "go.uber.org/automaxprocs/maxprocs"
-
-import (
- "os"
- "runtime"
-
- iruntime "go.uber.org/automaxprocs/internal/runtime"
-)
-
-const _maxProcsKey = "GOMAXPROCS"
-
-func currentMaxProcs() int {
- return runtime.GOMAXPROCS(0)
-}
-
-type config struct {
- printf func(string, ...interface{})
- procs func(int, func(v float64) int) (int, iruntime.CPUQuotaStatus, error)
- minGOMAXPROCS int
- roundQuotaFunc func(v float64) int
-}
-
-func (c *config) log(fmt string, args ...interface{}) {
- if c.printf != nil {
- c.printf(fmt, args...)
- }
-}
-
-// An Option alters the behavior of Set.
-type Option interface {
- apply(*config)
-}
-
-// Logger uses the supplied printf implementation for log output. By default,
-// Set doesn't log anything.
-func Logger(printf func(string, ...interface{})) Option {
- return optionFunc(func(cfg *config) {
- cfg.printf = printf
- })
-}
-
-// Min sets the minimum GOMAXPROCS value that will be used.
-// Any value below 1 is ignored.
-func Min(n int) Option {
- return optionFunc(func(cfg *config) {
- if n >= 1 {
- cfg.minGOMAXPROCS = n
- }
- })
-}
-
-// RoundQuotaFunc sets the function that will be used to covert the CPU quota from float to int.
-func RoundQuotaFunc(rf func(v float64) int) Option {
- return optionFunc(func(cfg *config) {
- cfg.roundQuotaFunc = rf
- })
-}
-
-type optionFunc func(*config)
-
-func (of optionFunc) apply(cfg *config) { of(cfg) }
-
-// Set GOMAXPROCS to match the Linux container CPU quota (if any), returning
-// any error encountered and an undo function.
-//
-// Set is a no-op on non-Linux systems and in Linux environments without a
-// configured CPU quota.
-func Set(opts ...Option) (func(), error) {
- cfg := &config{
- procs: iruntime.CPUQuotaToGOMAXPROCS,
- roundQuotaFunc: iruntime.DefaultRoundFunc,
- minGOMAXPROCS: 1,
- }
- for _, o := range opts {
- o.apply(cfg)
- }
-
- undoNoop := func() {
- cfg.log("maxprocs: No GOMAXPROCS change to reset")
- }
-
- // Honor the GOMAXPROCS environment variable if present. Otherwise, amend
- // `runtime.GOMAXPROCS()` with the current process' CPU quota if the OS is
- // Linux, and guarantee a minimum value of 1. The minimum guaranteed value
- // can be overridden using `maxprocs.Min()`.
- if max, exists := os.LookupEnv(_maxProcsKey); exists {
- cfg.log("maxprocs: Honoring GOMAXPROCS=%q as set in environment", max)
- return undoNoop, nil
- }
-
- maxProcs, status, err := cfg.procs(cfg.minGOMAXPROCS, cfg.roundQuotaFunc)
- if err != nil {
- return undoNoop, err
- }
-
- if status == iruntime.CPUQuotaUndefined {
- cfg.log("maxprocs: Leaving GOMAXPROCS=%v: CPU quota undefined", currentMaxProcs())
- return undoNoop, nil
- }
-
- prev := currentMaxProcs()
- undo := func() {
- cfg.log("maxprocs: Resetting GOMAXPROCS to %v", prev)
- runtime.GOMAXPROCS(prev)
- }
-
- switch status {
- case iruntime.CPUQuotaMinUsed:
- cfg.log("maxprocs: Updating GOMAXPROCS=%v: using minimum allowed GOMAXPROCS", maxProcs)
- case iruntime.CPUQuotaUsed:
- cfg.log("maxprocs: Updating GOMAXPROCS=%v: determined from CPU quota", maxProcs)
- }
-
- runtime.GOMAXPROCS(maxProcs)
- return undo, nil
-}
diff --git a/vendor/go.uber.org/automaxprocs/maxprocs/version.go b/vendor/go.uber.org/automaxprocs/maxprocs/version.go
deleted file mode 100644
index cc7fc5aee..000000000
--- a/vendor/go.uber.org/automaxprocs/maxprocs/version.go
+++ /dev/null
@@ -1,24 +0,0 @@
-// Copyright (c) 2017 Uber Technologies, Inc.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-
-package maxprocs
-
-// Version is the current package version.
-const Version = "1.6.0"
diff --git a/vendor/modules.txt b/vendor/modules.txt
index c32e89c0b..8cb321e76 100644
--- a/vendor/modules.txt
+++ b/vendor/modules.txt
@@ -386,12 +386,6 @@ github.com/x448/float16
# github.com/xlab/treeprint v1.2.0
## explicit; go 1.13
github.com/xlab/treeprint
-# go.uber.org/automaxprocs v1.6.0
-## explicit; go 1.20
-go.uber.org/automaxprocs
-go.uber.org/automaxprocs/internal/cgroups
-go.uber.org/automaxprocs/internal/runtime
-go.uber.org/automaxprocs/maxprocs
# go.uber.org/multierr v1.11.0
## explicit; go 1.19
go.uber.org/multierr