Skip to content

Commit

Permalink
Raise Soft File Descriptor Limit Up To The Hard Limit (#10650)
Browse files Browse the repository at this point in the history
* add changes

* comment

* kasey's review

Co-authored-by: prylabs-bulldozer[bot] <58059840+prylabs-bulldozer[bot]@users.noreply.github.com>
  • Loading branch information
nisdas and prylabs-bulldozer[bot] authored May 20, 2022
1 parent 588dea8 commit f28b47b
Show file tree
Hide file tree
Showing 5 changed files with 74 additions and 0 deletions.
1 change: 1 addition & 0 deletions cmd/beacon-chain/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down
4 changes: 4 additions & 0 deletions cmd/beacon-chain/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down Expand Up @@ -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)
}

Expand Down
22 changes: 22 additions & 0 deletions runtime/fdlimits/BUILD.bazel
Original file line number Diff line number Diff line change
@@ -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",
],
)
25 changes: 25 additions & 0 deletions runtime/fdlimits/fdlimits.go
Original file line number Diff line number Diff line change
@@ -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
}
22 changes: 22 additions & 0 deletions runtime/fdlimits/fdlimits_test.go
Original file line number Diff line number Diff line change
@@ -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.")

}

0 comments on commit f28b47b

Please sign in to comment.