Esempio n. 1
0
        internal static void InitializeAvailableCounterTypes()
        {
            ActorPerformanceCounters actorPerformanceCounters = new ActorPerformanceCounters();
            var requestedCounterSets = actorPerformanceCounters.GetCounterSets();

            AvaiableFabricCounterSet = new Dictionary <string, FabricPerformanceCounterSet>();

            foreach (FabricPerformanceCounterSetDefinition category in requestedCounterSets.Keys)
            {
                FabricPerformanceCounterSet counterSet;
                try
                {
                    //Create CounterSet for this category.
                    counterSet = new FabricPerformanceCounterSet(category, requestedCounterSets[category]);
                }
                catch (Exception ex)
                {
                    ActorTrace.Source.WriteWarning(TraceType,
                                                   "Data for performance counter category {0} will not be provided because an exception occurred during its initialization. Exception info: {1}",
                                                   category.Name, ex);
                    continue;
                }
                DumpCounterSetInfo(counterSet, requestedCounterSets[category]);
                AvaiableFabricCounterSet.Add(category.Name, counterSet);
            }
        }
        private static void InitializeAvailableCounterTypes()
        {
            var servicePerformanceCounters = new ServiceRemotingPerformanceCounters();
            var counterSetDefinitions      = servicePerformanceCounters.GetCounterSets();

            ServiceCounterSet = CreateCounterSet(counterSetDefinitions,
                                                 ServiceRemotingPerformanceCounters.ServiceCategoryName);
        }
Esempio n. 3
0
        private static void DumpCounterSetInfo(FabricPerformanceCounterSet counterSet, IEnumerable <FabricPerformanceCounterDefinition> activeCounters)
        {
            StringBuilder sb = new StringBuilder();

            sb.Append(String.Format("Created performance counter category {0} with following counters.", counterSet.CounterSetDefinition.Name));
            sb.AppendLine();
            foreach (var counter in activeCounters)
            {
                sb.Append(String.Format("CounterName : {0}", counter.Name));
                sb.AppendLine();
            }
            ActorTrace.Source.WriteInfo(TraceType, sb.ToString());
        }
Esempio n. 4
0
        private static FabricPerformanceCounterSet CreateCounterSet(
            Dictionary <FabricPerformanceCounterSetDefinition, IEnumerable <FabricPerformanceCounterDefinition> > counterSetDefinitions,
            string categoryName)
        {
            var counterSetDefinition = counterSetDefinitions.Single(kvp => (kvp.Key.Name == categoryName));
            FabricPerformanceCounterSet counterSet = null;

            try
            {
                //Create CounterSet for this categoryName.
                counterSet = new FabricPerformanceCounterSet(counterSetDefinition.Key, counterSetDefinition.Value);
            }
            catch (Exception ex)
            {
                ServiceTrace.Source.WriteWarning(TraceType,
                                                 "Data for performance counter categoryName {0} will not be provided because an exception occurred during its initialization. Exception info: {1}",
                                                 counterSetDefinition.Key.Name, ex);
                return(null);
            }
            DumpCounterSetInfo(counterSet, counterSetDefinition.Value);

            return(counterSet);
        }
Esempio n. 5
0
        private MethodSpecificCounterWriters CreateCounterWriters(
            CounterInstanceData counterInstanceData,
            FabricPerformanceCounterSet ActorMethodCounterSet)
        {
            var logCounterWriterCreation = false;

            // We have not yet created the objects that write the counter values. So build
            // up the list of counter writers now.
            var instanceName       = counterInstanceData.InstanceName;
            var tempCounterWriters = new MethodSpecificCounterWriters();

            try
            {
                tempCounterWriters.ActorMethodCounterSetInstance =
                    ActorMethodCounterSet.CreateCounterSetInstance(instanceName);
            }
            catch (Exception ex)
            {
                //Instance creation failed, Be done.
                ActorTrace.Source.WriteWarning(
                    TraceType,
                    "Data for performance counter instance {0} of category {1} will not be provided because an exception occurred during its initialization. Exception info: {2}",
                    instanceName, ActorPerformanceCounters.ActorMethodCategoryName, ex);
                return(null);
            }

            tempCounterWriters.ActorMethodFrequencyCounterWriter = this.CreateMethodCounterWriter(
                instanceName,
                typeof(ActorMethodFrequencyCounterWriter),
                tempCounterWriters.ActorMethodCounterSetInstance,
                inst => new ActorMethodFrequencyCounterWriter(inst));
            tempCounterWriters.ActorMethodExceptionFrequencyCounterWriter = this.CreateMethodCounterWriter(
                instanceName,
                typeof(ActorMethodExceptionFrequencyCounterWriter),
                tempCounterWriters.ActorMethodCounterSetInstance,
                inst => new ActorMethodExceptionFrequencyCounterWriter(inst));
            tempCounterWriters.ActorMethodExecTimeCounterWriter = this.CreateMethodCounterWriter(
                instanceName,
                typeof(ActorMethodExecTimeCounterWriter),
                tempCounterWriters.ActorMethodCounterSetInstance,
                inst => new ActorMethodExecTimeCounterWriter(inst));
            logCounterWriterCreation = true;


            if (logCounterWriterCreation)
            {
                object[] newlyCreatedCounterWriters =
                {
                    tempCounterWriters.ActorMethodFrequencyCounterWriter,
                    tempCounterWriters.ActorMethodExceptionFrequencyCounterWriter,
                    tempCounterWriters.ActorMethodExecTimeCounterWriter
                };
                foreach (var newlyCreatedCounterWriter in newlyCreatedCounterWriters)
                {
                    if (null != newlyCreatedCounterWriter)
                    {
                        this.LogCounterInstanceCreationResult(
                            newlyCreatedCounterWriter.GetType(),
                            counterInstanceData.InstanceName,
                            null);
                    }
                }
            }

            return(tempCounterWriters);
        }