コード例 #1
0
 public DeploymentLoadPublisher(
     ILocalSiloDetails siloDetails,
     ISiloStatusOracle siloStatusOracle,
     IOptions <DeploymentLoadPublisherOptions> options,
     IInternalGrainFactory grainFactory,
     OrleansTaskScheduler scheduler,
     ILoggerFactory loggerFactory,
     IMessageCenter messageCenter,
     ActivationDirectory activationDirectory,
     ActivationCollector activationCollector,
     IAppEnvironmentStatistics appEnvironmentStatistics,
     IHostEnvironmentStatistics hostEnvironmentStatistics,
     IOptions <LoadSheddingOptions> loadSheddingOptions)
     : base(Constants.DeploymentLoadPublisherSystemTargetId, siloDetails.SiloAddress, loggerFactory)
 {
     this.logger                    = loggerFactory.CreateLogger <DeploymentLoadPublisher>();
     this.siloDetails               = siloDetails;
     this.siloStatusOracle          = siloStatusOracle;
     this.grainFactory              = grainFactory;
     this.scheduler                 = scheduler;
     this.messageCenter             = messageCenter;
     this.activationDirectory       = activationDirectory;
     this.activationCollector       = activationCollector;
     this.appEnvironmentStatistics  = appEnvironmentStatistics;
     this.hostEnvironmentStatistics = hostEnvironmentStatistics;
     this.loadSheddingOptions       = loadSheddingOptions;
     statisticsRefreshTime          = options.Value.DeploymentLoadPublisherRefreshTime;
     periodicStats                  = new ConcurrentDictionary <SiloAddress, SiloRuntimeStatistics>();
     siloStatisticsChangeListeners  = new List <ISiloStatisticsChangeListener>();
 }
コード例 #2
0
 public SiloStatisticsManager(
     IOptions <SiloStatisticsOptions> statisticsOptions,
     IOptions <LoadSheddingOptions> loadSheddingOptions,
     IOptions <StorageOptions> azureStorageOptions,
     ILocalSiloDetails siloDetails,
     SerializationManager serializationManager,
     ITelemetryProducer telemetryProducer,
     IHostEnvironmentStatistics hostEnvironmentStatistics,
     IAppEnvironmentStatistics appEnvironmentStatistics,
     ILoggerFactory loggerFactory,
     IOptions <SiloMessagingOptions> messagingOptions)
 {
     this.siloDetails    = siloDetails;
     this.storageOptions = azureStorageOptions.Value;
     MessagingStatisticsGroup.Init(true);
     MessagingProcessingStatisticsGroup.Init();
     NetworkingStatisticsGroup.Init(true);
     ApplicationRequestsStatisticsGroup.Init(messagingOptions.Value.ResponseTimeout);
     SchedulerStatisticsGroup.Init(loggerFactory);
     StorageStatisticsGroup.Init();
     TransactionsStatisticsGroup.Init();
     this.logger = loggerFactory.CreateLogger <SiloStatisticsManager>();
     this.hostEnvironmentStatistics = hostEnvironmentStatistics;
     this.logStatistics             = new LogStatistics(statisticsOptions.Value.LogWriteInterval, true, serializationManager, loggerFactory);
     this.MetricsTable      = new SiloPerformanceMetrics(this.hostEnvironmentStatistics, appEnvironmentStatistics, loggerFactory, loadSheddingOptions);
     this.countersPublisher = new CountersStatistics(statisticsOptions.Value.PerfCountersWriteInterval, telemetryProducer, loggerFactory);
 }
コード例 #3
0
 internal SiloPerformanceMetrics(
     IHostEnvironmentStatistics hostEnvironmentStatistics,
     IAppEnvironmentStatistics appEnvironmentStatistics,
     ILoggerFactory loggerFactory,
     IOptions <SiloStatisticsOptions> statisticsOptions)
 {
     this.loggerFactory             = loggerFactory;
     this.hostEnvironmentStatistics = hostEnvironmentStatistics;
     this.appEnvironmentStatistics  = appEnvironmentStatistics;
     reportFrequency        = TimeSpan.Zero;
     overloadLatched        = false;
     overloadValue          = false;
     this.logger            = loggerFactory.CreateLogger <SiloPerformanceMetrics>();
     this.statisticsOptions = statisticsOptions.Value;
     StringValueStatistic.FindOrCreate(StatisticNames.RUNTIME_IS_OVERLOADED, () => IsOverloaded.ToString());
 }
コード例 #4
0
 internal SiloPerformanceMetrics(
     IHostEnvironmentStatistics hostEnvironmentStatistics,
     IAppEnvironmentStatistics appEnvironmentStatistics,
     ILoggerFactory loggerFactory,
     NodeConfiguration cfg = null)
 {
     this.loggerFactory             = loggerFactory;
     this.hostEnvironmentStatistics = hostEnvironmentStatistics;
     this.appEnvironmentStatistics  = appEnvironmentStatistics;
     reportFrequency = TimeSpan.Zero;
     overloadLatched = false;
     overloadValue   = false;
     this.logger     = loggerFactory.CreateLogger <SiloPerformanceMetrics>();
     NodeConfig      = cfg ?? new NodeConfiguration();
     StringValueStatistic.FindOrCreate(StatisticNames.RUNTIME_IS_OVERLOADED, () => IsOverloaded.ToString());
 }
コード例 #5
0
        public SiloControl(
            ILocalSiloDetails localSiloDetails,
            DeploymentLoadPublisher deploymentLoadPublisher,
            Catalog catalog,
            CachedVersionSelectorManager cachedVersionSelectorManager,
            CompatibilityDirectorManager compatibilityDirectorManager,
            VersionSelectorManager selectorManager,
            IServiceProvider services,
            ILoggerFactory loggerFactory,
            IMessageCenter messageCenter,
            ActivationCollector activationCollector,
            ActivationDirectory activationDirectory,
            IActivationWorkingSet activationWorkingSet,
            IAppEnvironmentStatistics appEnvironmentStatistics,
            IHostEnvironmentStatistics hostEnvironmentStatistics,
            IOptions <LoadSheddingOptions> loadSheddingOptions,
            GrainCountStatistics grainCountStatistics)
            : base(Constants.SiloControlType, localSiloDetails.SiloAddress, loggerFactory)
        {
            this.localSiloDetails = localSiloDetails;

            this.logger = loggerFactory.CreateLogger <SiloControl>();
            this.deploymentLoadPublisher = deploymentLoadPublisher;
            this.catalog = catalog;
            this.cachedVersionSelectorManager = cachedVersionSelectorManager;
            this.compatibilityDirectorManager = compatibilityDirectorManager;
            this.selectorManager           = selectorManager;
            _activationCollector           = activationCollector;
            this.activationDirectory       = activationDirectory;
            this.activationWorkingSet      = activationWorkingSet;
            this.appEnvironmentStatistics  = appEnvironmentStatistics;
            this.hostEnvironmentStatistics = hostEnvironmentStatistics;
            this.loadSheddingOptions       = loadSheddingOptions;
            _grainCountStatistics          = grainCountStatistics;
            this.controllables             = new Dictionary <Tuple <string, string>, IControllable>();
            IEnumerable <IKeyedServiceCollection <string, IControllable> > namedIControllableCollections = services.GetServices <IKeyedServiceCollection <string, IControllable> >();

            foreach (IKeyedService <string, IControllable> keyedService in namedIControllableCollections.SelectMany(c => c.GetServices(services)))
            {
                IControllable controllable = keyedService.GetService(services);
                if (controllable != null)
                {
                    this.controllables.Add(Tuple.Create(controllable.GetType().FullName, keyedService.Key), controllable);
                }
            }
        }
コード例 #6
0
 internal ClientTableStatistics(
     IMessageCenter mc,
     IClientMetricsDataPublisher metricsDataPublisher,
     IHostEnvironmentStatistics hostEnvironmentStatistics,
     IAppEnvironmentStatistics appEnvironmentStatistics,
     ILoggerFactory loggerFactory)
 {
     this.mc = mc;
     this.metricsDataPublisher = metricsDataPublisher;
     this.logger = loggerFactory.CreateLogger <ClientTableStatistics>();
     //async timer created through current class all share this logger for perf reasons
     this.timerLogger = loggerFactory.CreateLogger <AsyncTaskSafeTimer>();
     this.hostEnvironmentStatistics = hostEnvironmentStatistics;
     this.appEnvironmentStatistics  = appEnvironmentStatistics;
     reportFrequency       = TimeSpan.Zero;
     connectedGatewayCount = IntValueStatistic.Find(StatisticNames.CLIENT_CONNECTED_GATEWAY_COUNT);
 }
コード例 #7
0
 internal SiloRuntimeStatistics(
     int activationCount,
     int recentlyUsedActivationCount,
     IAppEnvironmentStatistics appEnvironmentStatistics,
     IHostEnvironmentStatistics hostEnvironmentStatistics,
     IOptions <LoadSheddingOptions> loadSheddingOptions,
     DateTime dateTime)
 {
     ActivationCount             = activationCount;
     RecentlyUsedActivationCount = recentlyUsedActivationCount;
     CpuUsage            = hostEnvironmentStatistics.CpuUsage;
     AvailableMemory     = hostEnvironmentStatistics.AvailableMemory;
     MemoryUsage         = appEnvironmentStatistics.MemoryUsage;
     IsOverloaded        = loadSheddingOptions.Value.LoadSheddingEnabled && this.CpuUsage > loadSheddingOptions.Value.LoadSheddingLimit;
     ClientCount         = MessagingStatisticsGroup.ConnectedClientCount.GetCurrentValue();
     TotalPhysicalMemory = hostEnvironmentStatistics.TotalPhysicalMemory;
     ReceivedMessages    = MessagingStatisticsGroup.MessagesReceived.GetCurrentValue();
     SentMessages        = MessagingStatisticsGroup.MessagesSentTotal.GetCurrentValue();
     DateTime            = dateTime;
 }
コード例 #8
0
 public ClientStatisticsManager(
     ClientConfiguration config,
     SerializationManager serializationManager,
     IServiceProvider serviceProvider,
     IHostEnvironmentStatistics hostEnvironmentStatistics,
     IAppEnvironmentStatistics appEnvironmentStatistics,
     ILoggerFactory loggerFactory,
     IOptions <ClientStatisticsOptions> statisticsOptions,
     IOptions <ClusterClientOptions> clusterClientOptions)
 {
     this.config                    = config;
     this.statisticsOptions         = statisticsOptions.Value;
     this.serviceProvider           = serviceProvider;
     this.hostEnvironmentStatistics = hostEnvironmentStatistics;
     this.appEnvironmentStatistics  = appEnvironmentStatistics;
     this.clusterClientOptions      = clusterClientOptions.Value;
     logStatistics                  = new LogStatistics(this.statisticsOptions.LogWriteInterval, false, serializationManager, loggerFactory);
     logger             = loggerFactory.CreateLogger <ClientStatisticsManager>();
     this.loggerFactory = loggerFactory;
     MessagingStatisticsGroup.Init(false);
     NetworkingStatisticsGroup.Init(false);
     ApplicationRequestsStatisticsGroup.Init(config.ResponseTimeout);
 }