Raise Soft File Descriptor Limit Up To The Hard Limit (#10650)

* add changes

* comment

* kasey's review

Co-authored-by: prylabs-bulldozer[bot] <58059840+prylabs-bulldozer[bot]@users.noreply.github.com>
This commit is contained in:
Nishant Das
2022-05-20 16:12:52 +08:00
committed by GitHub
parent 588dea83b7
commit f28b47bd87
5 changed files with 74 additions and 0 deletions

View File

@@ -0,0 +1,22 @@
load("@prysm//tools/go:def.bzl", "go_library", "go_test")
go_library(
name = "go_default_library",
srcs = ["fdlimits.go"],
importpath = "github.com/prysmaticlabs/prysm/runtime/fdlimits",
visibility = ["//visibility:public"],
deps = [
"@com_github_ethereum_go_ethereum//common/fdlimit:go_default_library",
"@com_github_sirupsen_logrus//:go_default_library",
],
)
go_test(
name = "go_default_test",
srcs = ["fdlimits_test.go"],
deps = [
":go_default_library",
"//testing/assert:go_default_library",
"@com_github_ethereum_go_ethereum//common/fdlimit:go_default_library",
],
)

View File

@@ -0,0 +1,25 @@
package fdlimits
import (
"github.com/ethereum/go-ethereum/common/fdlimit"
log "github.com/sirupsen/logrus"
)
// SetMaxFdLimits is a wrapper around a few go-ethereum methods to allow prysm to
// set its file descriptor limits at the maximum possible value.
func SetMaxFdLimits() error {
curr, err := fdlimit.Current()
if err != nil {
return err
}
max, err := fdlimit.Maximum()
if err != nil {
return err
}
raisedVal, err := fdlimit.Raise(uint64(max))
if err != nil {
return err
}
log.Infof("Raised fd limit to %d from %d", raisedVal, curr)
return nil
}

View File

@@ -0,0 +1,22 @@
package fdlimits_test
import (
"testing"
gethLimit "github.com/ethereum/go-ethereum/common/fdlimit"
"github.com/prysmaticlabs/prysm/runtime/fdlimits"
"github.com/prysmaticlabs/prysm/testing/assert"
)
func TestSetMaxFdLimits(t *testing.T) {
assert.NoError(t, fdlimits.SetMaxFdLimits())
curr, err := gethLimit.Current()
assert.NoError(t, err)
max, err := gethLimit.Maximum()
assert.NoError(t, err)
assert.Equal(t, max, curr, "current and maximum file descriptor limits do not match up.")
}