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
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 74 additions and 0 deletions

View File

@ -28,6 +28,7 @@ go_library(
"//io/logs:go_default_library",
"//monitoring/journald:go_default_library",
"//runtime/debug:go_default_library",
"//runtime/fdlimits:go_default_library",
"//runtime/maxprocs:go_default_library",
"//runtime/tos:go_default_library",
"//runtime/version:go_default_library",

View File

@ -24,6 +24,7 @@ import (
"github.com/prysmaticlabs/prysm/io/logs"
"github.com/prysmaticlabs/prysm/monitoring/journald"
"github.com/prysmaticlabs/prysm/runtime/debug"
"github.com/prysmaticlabs/prysm/runtime/fdlimits"
_ "github.com/prysmaticlabs/prysm/runtime/maxprocs"
"github.com/prysmaticlabs/prysm/runtime/tos"
"github.com/prysmaticlabs/prysm/runtime/version"
@ -193,6 +194,9 @@ func main() {
if err := debug.Setup(ctx); err != nil {
return err
}
if err := fdlimits.SetMaxFdLimits(); err != nil {
return err
}
return cmd.ValidateNoArgs(ctx)
}

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.")
}