mirror of
https://github.com/status-im/status-go.git
synced 2025-01-17 10:13:22 +00:00
163 lines
3.4 KiB
Go
163 lines
3.4 KiB
Go
|
package rcmgr
|
||
|
|
||
|
// DefaultLimitConfig is a struct for configuring default limits.
|
||
|
type DefaultLimitConfig struct {
|
||
|
SystemBaseLimit BaseLimit
|
||
|
SystemMemory MemoryLimit
|
||
|
|
||
|
TransientBaseLimit BaseLimit
|
||
|
TransientMemory MemoryLimit
|
||
|
|
||
|
ServiceBaseLimit BaseLimit
|
||
|
ServiceMemory MemoryLimit
|
||
|
|
||
|
ServicePeerBaseLimit BaseLimit
|
||
|
ServicePeerMemory MemoryLimit
|
||
|
|
||
|
ProtocolBaseLimit BaseLimit
|
||
|
ProtocolMemory MemoryLimit
|
||
|
|
||
|
ProtocolPeerBaseLimit BaseLimit
|
||
|
ProtocolPeerMemory MemoryLimit
|
||
|
|
||
|
PeerBaseLimit BaseLimit
|
||
|
PeerMemory MemoryLimit
|
||
|
|
||
|
ConnBaseLimit BaseLimit
|
||
|
ConnMemory int64
|
||
|
|
||
|
StreamBaseLimit BaseLimit
|
||
|
StreamMemory int64
|
||
|
}
|
||
|
|
||
|
func (cfg *DefaultLimitConfig) WithSystemMemory(memFraction float64, minMemory, maxMemory int64) DefaultLimitConfig {
|
||
|
refactor := memFraction / cfg.SystemMemory.MemoryFraction
|
||
|
r := *cfg
|
||
|
r.SystemMemory.MemoryFraction = memFraction
|
||
|
r.SystemMemory.MinMemory = minMemory
|
||
|
r.SystemMemory.MaxMemory = maxMemory
|
||
|
r.TransientMemory.MemoryFraction *= refactor
|
||
|
r.ServiceMemory.MemoryFraction *= refactor
|
||
|
r.ServicePeerMemory.MemoryFraction *= refactor
|
||
|
r.ProtocolMemory.MemoryFraction *= refactor
|
||
|
r.ProtocolPeerMemory.MemoryFraction *= refactor
|
||
|
r.PeerMemory.MemoryFraction *= refactor
|
||
|
return r
|
||
|
}
|
||
|
|
||
|
// DefaultLimits are the limits used by the default limiter constructors.
|
||
|
var DefaultLimits = DefaultLimitConfig{
|
||
|
SystemBaseLimit: BaseLimit{
|
||
|
StreamsInbound: 4096,
|
||
|
StreamsOutbound: 16384,
|
||
|
Streams: 16384,
|
||
|
ConnsInbound: 256,
|
||
|
ConnsOutbound: 1024,
|
||
|
Conns: 1024,
|
||
|
FD: 512,
|
||
|
},
|
||
|
|
||
|
SystemMemory: MemoryLimit{
|
||
|
MemoryFraction: 0.125,
|
||
|
MinMemory: 128 << 20,
|
||
|
MaxMemory: 1 << 30,
|
||
|
},
|
||
|
|
||
|
TransientBaseLimit: BaseLimit{
|
||
|
StreamsInbound: 128,
|
||
|
StreamsOutbound: 512,
|
||
|
Streams: 512,
|
||
|
ConnsInbound: 32,
|
||
|
ConnsOutbound: 128,
|
||
|
Conns: 128,
|
||
|
FD: 128,
|
||
|
},
|
||
|
|
||
|
TransientMemory: MemoryLimit{
|
||
|
MemoryFraction: 1,
|
||
|
MinMemory: 64 << 20,
|
||
|
MaxMemory: 64 << 20,
|
||
|
},
|
||
|
|
||
|
ServiceBaseLimit: BaseLimit{
|
||
|
StreamsInbound: 2048,
|
||
|
StreamsOutbound: 8192,
|
||
|
Streams: 8192,
|
||
|
},
|
||
|
|
||
|
ServiceMemory: MemoryLimit{
|
||
|
MemoryFraction: 0.125 / 4,
|
||
|
MinMemory: 64 << 20,
|
||
|
MaxMemory: 256 << 20,
|
||
|
},
|
||
|
|
||
|
ServicePeerBaseLimit: BaseLimit{
|
||
|
StreamsInbound: 256,
|
||
|
StreamsOutbound: 512,
|
||
|
Streams: 512,
|
||
|
},
|
||
|
|
||
|
ServicePeerMemory: MemoryLimit{
|
||
|
MemoryFraction: 0.125 / 16,
|
||
|
MinMemory: 16 << 20,
|
||
|
MaxMemory: 64 << 20,
|
||
|
},
|
||
|
|
||
|
ProtocolBaseLimit: BaseLimit{
|
||
|
StreamsInbound: 1024,
|
||
|
StreamsOutbound: 4096,
|
||
|
Streams: 4096,
|
||
|
},
|
||
|
|
||
|
ProtocolMemory: MemoryLimit{
|
||
|
MemoryFraction: 0.125 / 8,
|
||
|
MinMemory: 64 << 20,
|
||
|
MaxMemory: 128 << 20,
|
||
|
},
|
||
|
|
||
|
ProtocolPeerBaseLimit: BaseLimit{
|
||
|
StreamsInbound: 128,
|
||
|
StreamsOutbound: 256,
|
||
|
Streams: 512,
|
||
|
},
|
||
|
|
||
|
ProtocolPeerMemory: MemoryLimit{
|
||
|
MemoryFraction: 0.125 / 16,
|
||
|
MinMemory: 16 << 20,
|
||
|
MaxMemory: 64 << 20,
|
||
|
},
|
||
|
|
||
|
PeerBaseLimit: BaseLimit{
|
||
|
StreamsInbound: 512,
|
||
|
StreamsOutbound: 1024,
|
||
|
Streams: 1024,
|
||
|
ConnsInbound: 8,
|
||
|
ConnsOutbound: 16,
|
||
|
Conns: 16,
|
||
|
FD: 8,
|
||
|
},
|
||
|
|
||
|
PeerMemory: MemoryLimit{
|
||
|
MemoryFraction: 0.125 / 16,
|
||
|
MinMemory: 64 << 20,
|
||
|
MaxMemory: 128 << 20,
|
||
|
},
|
||
|
|
||
|
ConnBaseLimit: BaseLimit{
|
||
|
ConnsInbound: 1,
|
||
|
ConnsOutbound: 1,
|
||
|
Conns: 1,
|
||
|
FD: 1,
|
||
|
},
|
||
|
|
||
|
ConnMemory: 1 << 20,
|
||
|
|
||
|
StreamBaseLimit: BaseLimit{
|
||
|
StreamsInbound: 1,
|
||
|
StreamsOutbound: 1,
|
||
|
Streams: 1,
|
||
|
},
|
||
|
|
||
|
StreamMemory: 16 << 20,
|
||
|
}
|