public void UpdateNetworkConfig(ulong memoryHint, uint cpuCount, INetworkConfig networkConfig) { ValidateMemoryHint(memoryHint); ValidateCpuCount(cpuCount); /* first of all we assume that the mainnet will be heavier than any other chain on the side */ /* we will leave the arena order as in config if it is set to a non-default value */ if (networkConfig.NettyArenaOrder != INetworkConfig.DefaultNettyArenaOrder) { if (_logger.IsInfo) { _logger.Info($"Leaving {nameof(INetworkConfig.NettyArenaOrder)} " + $"at {networkConfig.NettyArenaOrder} as it is set to non-default."); } } else { int targetNettyArenaOrder = INetworkConfig.DefaultNettyArenaOrder; for (int i = networkConfig.NettyArenaOrder; i > 0; i--) { ulong estimate = NettyMemoryEstimator.Estimate(cpuCount, i); ulong maxAvailableFoNetty = (ulong)(AvailableForNetty * memoryHint); if (estimate <= maxAvailableFoNetty) { targetNettyArenaOrder = i; break; } } networkConfig.NettyArenaOrder = Math.Min(11, targetNettyArenaOrder); } }
private void AssignNettyMemory(INetworkConfig networkConfig, uint cpuCount) { NettyMemory = Math.Min(512.MB(), (long)(0.2 * _remainingMemory)); long estimate = NettyMemoryEstimator.Estimate(cpuCount, networkConfig.NettyArenaOrder); ValidateCpuCount(cpuCount); /* first of all we assume that the mainnet will be heavier than any other chain on the side */ /* we will leave the arena order as in config if it is set to a non-default value */ if (networkConfig.NettyArenaOrder != INetworkConfig.DefaultNettyArenaOrder) { if (_logger.IsInfo) { _logger.Info($"Leaving {nameof(INetworkConfig.NettyArenaOrder)} " + $"at {networkConfig.NettyArenaOrder} as it is set to non-default."); } } else { int targetNettyArenaOrder = INetworkConfig.DefaultNettyArenaOrder; for (int i = networkConfig.NettyArenaOrder; i > 0; i--) { estimate = NettyMemoryEstimator.Estimate(cpuCount, i); long maxAvailableFoNetty = NettyMemory; if (estimate <= maxAvailableFoNetty) { targetNettyArenaOrder = i; break; } } networkConfig.NettyArenaOrder = Math.Min(11, targetNettyArenaOrder); } NettyMemory = estimate; }