Esempio n. 1
0
        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);
            }
        }
Esempio n. 2
0
        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;
        }