feat: disable resource manager by default (#9003)
* feat: disable resource manager by default We are disabling this by default for v0.13 as we work to improve the UX around Resource Manager. It is still usable and can be enabled in the IPFS config with "ipfs config --bool Swarm.ResourceMgr.Enabled true". We intend to enable Resource Manager by default in a subsequent release. * docs(config): Swarm.ResourceMgr disabled by default Co-authored-by: Marcin Rataj <lidel@lidel.org> (cherry picked from commit b1c051d2507cec34a9d2b313ea43a092b3fdc4a4)
Gus Eggert committed
Jun 2, 2022 at 10:31 UTC
0fe75d63ea9990aaab72e3a3759b47428d991584
5 files changed
+26
-27
CHANGELOG.md
+5
-2
@@ -74,16 +74,19 @@ To understand the wider context why we made these changes, read *Highlights* bel
74
75
*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.*
76
77
-The [libp2p Network Resource Manager](https://github.com/libp2p/go-libp2p-resource-manager#readme) is enabled by default, but can be disabled via:
77
+The [libp2p Network Resource Manager](https://github.com/libp2p/go-libp2p-resource-manager#readme) is disabled by default, but can be enabled via:
78
79
-`ipfs config --json Swarm.ResourceMgr.Enabled false`
79
+`ipfs config --json Swarm.ResourceMgr.Enabled true`
80
81
When enabled, it applies some safe defaults that can be inspected and adjusted with:
82
+
83
- `ipfs swarm stats --help`
84
- `ipfs swarm limit --help`
85
86
User changes persist to config at [`Swarm.ResourceMgr`](https://github.com/ipfs/go-ipfs/blob/master/docs/config.md#swarmresourcemgr).
87
88
+The Resource Manager will be enabled by default in a future release.
89
+
90
#### 🔃 Relay V2 client with auto discovery (`Swarm.RelayClient`)
91
92
*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!*
core/node/libp2p/rcmgr.go
+1
-1
@@ -31,7 +31,7 @@ func ResourceManager(cfg config.SwarmConfig) interface{} {
31
var manager network.ResourceManager
32
var opts Libp2pOpts
33
34
- enabled := cfg.ResourceMgr.Enabled.WithDefault(true)
34
+ enabled := cfg.ResourceMgr.Enabled.WithDefault(false)
35
36
/// ENV overrides Config (if present)
37
switch os.Getenv("LIBP2P_RCMGR") {
docs/config.md
+1
-1
@@ -1637,7 +1637,7 @@ and tracking recource usage over time.
1637
Enables the libp2p Network Resource Manager and auguments the default limits
1638
using user-defined ones in `Swarm.ResourceMgr.Limits` (if present).
1639
1640
-Default: `true`
1640
+Default: `false`
1641
1642
Type: `flag`
1643
test/sharness/t0116-prometheus-data/prometheus_metrics
-4
@@ -656,10 +656,6 @@ leveldb_datastore_sync_latency_seconds_bucket
656
leveldb_datastore_sync_latency_seconds_count
657
leveldb_datastore_sync_latency_seconds_sum
658
leveldb_datastore_sync_total
659
-libp2p_rcmgr_memory_allocations_allowed_total
660
-libp2p_rcmgr_memory_allocations_blocked_total
661
-libp2p_rcmgr_peer_blocked_total
662
-libp2p_rcmgr_peers_allowed_total
659
process_cpu_seconds_total
660
process_max_fds
661
process_open_fds
test/sharness/t0139-swarm-rcmgr.sh
+19
-19
@@ -6,6 +6,25 @@ test_description="Test ipfs swarm ResourceMgr config and commands"
6
7
test_init_ipfs
8
9
+# test correct behavior when resource manager is disabled (default behavior)
10
+test_launch_ipfs_daemon
11
+
12
+test_expect_success 'Swarm limit should fail since RM is disabled' '
13
+ test_expect_code 1 ipfs swarm limit system 2> actual &&
14
+ test_should_contain "missing ResourceMgr" actual
15
+'
16
+
17
+test_expect_success 'Swarm stats should fail since RM is disabled' '
18
+ test_expect_code 1 ipfs swarm stats all 2> actual &&
19
+ test_should_contain "missing ResourceMgr" actual
20
+'
21
+
22
+test_kill_ipfs_daemon
23
+
24
+test_expect_success 'Enable resource manager' '
25
+ ipfs config --bool Swarm.ResourceMgr.Enabled true
26
+'
27
+
28
# swarm limit|stats should fail in offline mode
29
30
test_expect_success 'disconnected: swarm limit requires running daemon' '
@@ -127,23 +146,4 @@ test_expect_success 'Set limit for peer scope with an invalid peer ID' '
146
147
test_kill_ipfs_daemon
148
130
-# test correct behavior when resource manager is disabled
131
-test_expect_success 'Disable resource manager' '
132
- ipfs config --bool Swarm.ResourceMgr.Enabled false
133
-'
134
-
135
-test_launch_ipfs_daemon
136
-
137
-test_expect_success 'Swarm limit should fail since RM is disabled' '
138
- test_expect_code 1 ipfs swarm limit system 2> actual &&
139
- test_should_contain "missing ResourceMgr" actual
140
-'
141
-
142
-test_expect_success 'Swarm stats should fail since RM is disabled' '
143
- test_expect_code 1 ipfs swarm stats all 2> actual &&
144
- test_should_contain "missing ResourceMgr" actual
145
-'
146
-
147
-test_kill_ipfs_daemon
148
-
149
test_done