public NetIfaceTracker(string partID, NetworkInterface netIface, int netIfaceNum, ulong statisticsGroupsFileIndexUserRowFlagBits) { originalNetIface = netIface; this.netIfaceNum = netIfaceNum; name = netIface.Name; groupInfo = new MDRF.Writer.GroupInfo() { Name = "{0}.{1:d2}.Stats".CheckedFormat(partID, netIfaceNum), FileIndexUserRowFlagBits = statisticsGroupsFileIndexUserRowFlagBits, GroupBehaviorOptions = MDRF.Writer.GroupBehaviorOptions.UseVCHasBeenSetForTouched | MDRF.Writer.GroupBehaviorOptions.IncrSeqNumOnTouched, GroupPointInfoArray = new [] { linkUpGPI, opStatGPI, rxBytesGPI, txBytesGPI, rxUnicastPktsGPI, txUnicastPktsGPI, rxNonUnicastPktsGPI, txNonUnicastPktsGPI, txQueueLenGPI, rxPktDiscardsGPI, rxPktErrorsGPI, rxPktUnkProtosGPI, txPktDiscardsGPI, txPktErrorsGPI, rxByteRateGPI, txByteRateGPI, rxUnicastPktRateGPI, txUnicastPktRateGPI, rxNonUnicastPktRateGPI, txNonUnicastPktRateGPI, }, }; }
public PerformanceCountersPart(PerformanceCountersPartConfig config, PartsLib.Tools.MDRF.Writer.IMDRFWriter mdrfWriter) : base(config.PartID, initialSettings: SimpleActivePartBaseSettings.DefaultVersion0.Build(waitTimeLimit: (0.10).FromSeconds(), goOnlineAndOfflineHandling: GoOnlineAndGoOfflineHandling.All)) { Config = new PerformanceCountersPartConfig(config); this.mdrfWriter = mdrfWriter; // we trigger acquiring a new sample two times a second sampleIntervalTimer = new QpcTimer() { TriggerInterval = Config.SampleInterval, AutoReset = true }.Start(); performanceCounterTrackerArray = Config.PerformanceCounterSpecArray.Select(pcs => new PerformanceCounterTracker(Log, pcs)).ToArray(); pccTupleArray = performanceCounterTrackerArray.GroupBy(pct => pct.pcc, (pcc, pctSet) => Tuple.Create(pcc, pctSet.ToArray())).ToArray(); groupInfo = new MDRF.Writer.GroupInfo() { Name = "{0}.Grp".CheckedFormat(PartID), GroupBehaviorOptions = MDRF.Writer.GroupBehaviorOptions.UseVCHasBeenSetForTouched | MDRF.Writer.GroupBehaviorOptions.IncrSeqNumOnTouched, FileIndexUserRowFlagBits = (ulong)Config.PerformanceCounterGroupsFileIndexUserRowFlagBits, GroupPointInfoArray = performanceCounterTrackerArray.Select(pct => pct.gpInfo).ToArray(), }; mdrfWriter.Add(groupInfo); noMDRFLogger = new Logging.Logger(PartID).SetDefaultNamedValueSetForEmitter(Logging.LogGate.All, new NamedValueSet() { { "noMDRF" } }); }
public ActiveSetItemTracker(string groupName, ulong activeSetGroupsFileIndexUserRowFlagBits) { GroupInfo = new MDRF.Writer.GroupInfo() { Name = groupName, GroupBehaviorOptions = MDRF.Writer.GroupBehaviorOptions.UseVCHasBeenSetForTouched | MDRF.Writer.GroupBehaviorOptions.IncrSeqNumOnTouched, GroupPointInfoArray = new[] { pidGPI, cpuPerEstGPI, userCpuPerEstGPI, cpuTicksGPI, userCpuTicksGPI, vmSizeGPI, wsSizeGPI, handlesGPI }, FileIndexUserRowFlagBits = activeSetGroupsFileIndexUserRowFlagBits, }; }
public ActiveSetMapGroupTracker(int configuredActiveSetSize, string groupName, ulong activeSetMapGroupFileIndexUserRowFlagBits) { gpiPairArray = Enumerable.Range(1, configuredActiveSetSize).Select(setNum => new GPIPair(setNum)).ToArray(); GroupInfo = new MDRF.Writer.GroupInfo() { Name = groupName, GroupBehaviorOptions = MDRF.Writer.GroupBehaviorOptions.UseVCHasBeenSetForTouched | MDRF.Writer.GroupBehaviorOptions.IncrSeqNumOnTouched, GroupPointInfoArray = gpiPairArray.SelectMany(pair => new [] { pair.pidGPI, pair.nameGPI }).ToArray(), FileIndexUserRowFlagBits = activeSetMapGroupFileIndexUserRowFlagBits, }; }
public MDRFHistogramGroupSource(string groupName, Histogram histogram, ulong fileIndexUserRowFlagBits = 0, INamedValueSet extraClientNVS = null, IEnumerable <PartsLib.Tools.MDRF.Writer.GroupPointInfo> extraGPISet = null) { GroupInfo = new MDRF.Writer.GroupInfo() { Name = groupName, GroupBehaviorOptions = MDRF.Writer.GroupBehaviorOptions.UseVCHasBeenSetForTouched | MDRF.Writer.GroupBehaviorOptions.IncrSeqNumOnTouched, FileIndexUserRowFlagBits = fileIndexUserRowFlagBits, GroupPointInfoArray = new[] { countGPI, minGPI, maxGPI, avgGPI, sdGPI, medianEstGPI, percentile5EstGPI, percentile95EstGPI, binsGPI }.Concat(extraGPISet ?? emptyGPIArray).ToArray(), ClientNVS = new NamedValueSet() { { "Histogram" }, { "NumBins", histogram.NumBins }, { "BinBoundaryArray", histogram.BinBoundaryArray } }.MergeWith(extraClientNVS ?? NamedValueSet.Empty, NamedValueMergeBehavior.AddNewItems).MakeReadOnly(), }; Histogram = histogram; lastBinCountArray = Histogram.BinCountArray.MakeCopyOf(); UpdateGroupItems(); GroupInfo.Touched = true; }
public FileRWPerformancePart(string partID, FileRWPerformancePartConfig config, PartsLib.Tools.MDRF.Writer.IMDRFWriter mdrfWriter) : base(partID, initialSettings: SimpleActivePartBaseSettings.DefaultVersion0.Build(waitTimeLimit: (0.10).FromSeconds(), goOnlineAndOfflineHandling: GoOnlineAndGoOfflineHandling.All)) { Config = new FileRWPerformancePartConfig(config); this.mdrfWriter = mdrfWriter; // we trigger acquiring a new sample two times a second sampleIntervalTimer = new QpcTimer() { TriggerInterval = Config.SampleInterval, AutoReset = true }.Start(); aggregationIntervalTimer = new QpcTimer() { TriggerInterval = Config.AggregationInterval, AutoReset = true }.Start(); AddExplicitDisposeAction(() => Release()); ahReadNormal = new Histogram(hReadNormal); ahReadThrough = new Histogram(hReadThrough); ahWriteThrough = new Histogram(hWriteThrough); avgRatesGroup = new MDRF.Writer.GroupInfo() { Name = "{0}.avgRates".CheckedFormat(PartID), GroupBehaviorOptions = MDRF.Writer.GroupBehaviorOptions.UseVCHasBeenSetForTouched | MDRF.Writer.GroupBehaviorOptions.IncrSeqNumOnTouched, FileIndexUserRowFlagBits = (ulong)Config.AggregateGroupsFileIndexUserRowFlagBits, GroupPointInfoArray = new MDRF.Writer.GroupPointInfo[] { peakReadNormalRateGPI = new MDRF.Writer.GroupPointInfo() { Name = "peakReadRate", ValueCST = ContainerStorageType.Double, VC = new ValueContainer(0.0) }, peakReadThroughRateGPI = new MDRF.Writer.GroupPointInfo() { Name = "peakReadThroughRate", ValueCST = ContainerStorageType.Double, VC = new ValueContainer(0.0) }, peakWriteThroughRateGPI = new MDRF.Writer.GroupPointInfo() { Name = "peakWriteThroughRate", ValueCST = ContainerStorageType.Double, VC = new ValueContainer(0.0) }, }, Touched = true, }; accumTupleArray = new Tuple <MDRFHistogramGroupSource, MDRFHistogramGroupSource> [] { Tuple.Create(new MDRFHistogramGroupSource("{0}.hReadNormal".CheckedFormat(PartID), hReadNormal, Config.SampleGroupsFileIndexUserRowFlagBits), new MDRFHistogramGroupSource("{0}.ahReadNormal".CheckedFormat(PartID), ahReadNormal, Config.AggregateGroupsFileIndexUserRowFlagBits)), Tuple.Create(new MDRFHistogramGroupSource("{0}.hReadThrough".CheckedFormat(PartID), hReadThrough, Config.SampleGroupsFileIndexUserRowFlagBits), new MDRFHistogramGroupSource("{0}.ahReadThrough".CheckedFormat(PartID), ahReadThrough, Config.AggregateGroupsFileIndexUserRowFlagBits)), Tuple.Create(new MDRFHistogramGroupSource("{0}.hWriteThrough".CheckedFormat(PartID), hWriteThrough, Config.SampleGroupsFileIndexUserRowFlagBits), new MDRFHistogramGroupSource("{0}.ahWriteThrough".CheckedFormat(PartID), ahWriteThrough, Config.AggregateGroupsFileIndexUserRowFlagBits)), }; IEnumerable <Tuple <MDRFHistogramGroupSource, MDRFHistogramGroupSource> > registerGroupsSet = ((Config.UseFileFlagNoBuffering) ? accumTupleArray : new [] { accumTupleArray[0], accumTupleArray[2] }); mdrfWriter.Add(avgRatesGroup); mdrfWriter.AddRange(registerGroupsSet.Select(t => t.Item1.GroupInfo).Concat(registerGroupsSet.Select(t => t.Item2.GroupInfo))); noMDRFLogger = new Logging.Logger(PartID).SetDefaultNamedValueSetForEmitter(Logging.LogGate.All, new NamedValueSet() { { "noMDRF" } }); }