Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: disable resource manager by default #9003

Merged
merged 2 commits into from
Jun 2, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 5 additions & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -74,16 +74,19 @@ To understand the wider context why we made these changes, read *Highlights* bel

*You can now easily bound how much resource usage libp2p consumes! This aids in protecting nodes from consuming more resources then are available to them.*

The [libp2p Network Resource Manager](https://github.com/libp2p/go-libp2p-resource-manager#readme) is enabled by default, but can be disabled via:
The [libp2p Network Resource Manager](https://github.com/libp2p/go-libp2p-resource-manager#readme) is disabled by default, but can be enabled via:

`ipfs config --json Swarm.ResourceMgr.Enabled false`
`ipfs config --json Swarm.ResourceMgr.Enabled true`

When enabled, it applies some safe defaults that can be inspected and adjusted with:

- `ipfs swarm stats --help`
- `ipfs swarm limit --help`

User changes persist to config at [`Swarm.ResourceMgr`](https://github.com/ipfs/go-ipfs/blob/master/docs/config.md#swarmresourcemgr).

The Resource Manager will be enabled by default in a future release.

#### 🔃 Relay V2 client with auto discovery (`Swarm.RelayClient`)

*All the pieces are enabled for [hole-punching](https://blog.ipfs.io/2022-01-20-libp2p-hole-punching/) by default, improving connecting with nodes behind NATs and Firewalls!*
Expand Down
2 changes: 1 addition & 1 deletion core/node/libp2p/rcmgr.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ func ResourceManager(cfg config.SwarmConfig) interface{} {
var manager network.ResourceManager
var opts Libp2pOpts

enabled := cfg.ResourceMgr.Enabled.WithDefault(true)
enabled := cfg.ResourceMgr.Enabled.WithDefault(false)

/// ENV overrides Config (if present)
switch os.Getenv("LIBP2P_RCMGR") {
Expand Down
2 changes: 1 addition & 1 deletion docs/config.md
Original file line number Diff line number Diff line change
Expand Up @@ -1637,7 +1637,7 @@ and tracking recource usage over time.
Enables the libp2p Network Resource Manager and auguments the default limits
using user-defined ones in `Swarm.ResourceMgr.Limits` (if present).

Default: `true`
Default: `false`

Type: `flag`

Expand Down
4 changes: 0 additions & 4 deletions test/sharness/t0116-prometheus-data/prometheus_metrics
Original file line number Diff line number Diff line change
Expand Up @@ -656,10 +656,6 @@ leveldb_datastore_sync_latency_seconds_bucket
leveldb_datastore_sync_latency_seconds_count
leveldb_datastore_sync_latency_seconds_sum
leveldb_datastore_sync_total
libp2p_rcmgr_memory_allocations_allowed_total
libp2p_rcmgr_memory_allocations_blocked_total
libp2p_rcmgr_peer_blocked_total
libp2p_rcmgr_peers_allowed_total
process_cpu_seconds_total
process_max_fds
process_open_fds
Expand Down
38 changes: 19 additions & 19 deletions test/sharness/t0139-swarm-rcmgr.sh
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,25 @@ test_description="Test ipfs swarm ResourceMgr config and commands"

test_init_ipfs

# test correct behavior when resource manager is disabled (default behavior)
test_launch_ipfs_daemon

test_expect_success 'Swarm limit should fail since RM is disabled' '
test_expect_code 1 ipfs swarm limit system 2> actual &&
test_should_contain "missing ResourceMgr" actual
'

test_expect_success 'Swarm stats should fail since RM is disabled' '
test_expect_code 1 ipfs swarm stats all 2> actual &&
test_should_contain "missing ResourceMgr" actual
'

test_kill_ipfs_daemon

test_expect_success 'Enable resource manager' '
ipfs config --bool Swarm.ResourceMgr.Enabled true
'

# swarm limit|stats should fail in offline mode

test_expect_success 'disconnected: swarm limit requires running daemon' '
Expand Down Expand Up @@ -127,23 +146,4 @@ test_expect_success 'Set limit for peer scope with an invalid peer ID' '

test_kill_ipfs_daemon

# test correct behavior when resource manager is disabled
test_expect_success 'Disable resource manager' '
ipfs config --bool Swarm.ResourceMgr.Enabled false
'

test_launch_ipfs_daemon

test_expect_success 'Swarm limit should fail since RM is disabled' '
test_expect_code 1 ipfs swarm limit system 2> actual &&
test_should_contain "missing ResourceMgr" actual
'

test_expect_success 'Swarm stats should fail since RM is disabled' '
test_expect_code 1 ipfs swarm stats all 2> actual &&
test_should_contain "missing ResourceMgr" actual
'

test_kill_ipfs_daemon

test_done