コード例 #1
0
 private Tuple <string, float>[] GetOverallCounterValues(NormalizedNbCounterData counterData, string ctr0, string ctr1, string ctr2, string ctr3)
 {
     Tuple <string, float>[] retval = new Tuple <string, float> [4];
     retval[0] = new Tuple <string, float>(ctr0, counterData.ctr0);
     retval[1] = new Tuple <string, float>(ctr1, counterData.ctr1);
     retval[2] = new Tuple <string, float>(ctr2, counterData.ctr2);
     retval[3] = new Tuple <string, float>(ctr3, counterData.ctr3);
     return(retval);
 }
コード例 #2
0
        private NormalizedNbCounterData UpdateNbPerfCounterData()
        {
            float normalizationFactor = GetNormalizationFactor(monitoringThread);
            ulong ctr0 = ReadAndClearMsr(MSR_NB_PERF_CTR_0);
            ulong ctr1 = ReadAndClearMsr(MSR_NB_PERF_CTR_1);
            ulong ctr2 = ReadAndClearMsr(MSR_NB_PERF_CTR_2);
            ulong ctr3 = ReadAndClearMsr(MSR_NB_PERF_CTR_3);

            NormalizedNbCounterData counterData = new NormalizedNbCounterData();

            counterData.ctr0 = ctr0 * normalizationFactor;
            counterData.ctr1 = ctr1 * normalizationFactor;
            counterData.ctr2 = ctr2 * normalizationFactor;
            counterData.ctr3 = ctr3 * normalizationFactor;
            return(counterData);
        }
コード例 #3
0
            public MonitoringUpdateResults Update()
            {
                MonitoringUpdateResults results     = new MonitoringUpdateResults();
                NormalizedNbCounterData counterData = dataFabric.UpdateNbPerfCounterData();

                results.unitMetrics    = new string[3][];
                results.unitMetrics[0] = new string[] { "Sized Read", FormatLargeNumber(counterData.ctr0) };
                results.unitMetrics[1] = new string[] { "Posted Sized Write", FormatLargeNumber(counterData.ctr1) };
                results.unitMetrics[2] = new string[] { "Non-Posted Sized Write", FormatLargeNumber(counterData.ctr2) };

                float totalReqs = counterData.ctr0 + counterData.ctr1 + counterData.ctr2;

                results.overallMetrics = new string[] { "Overall", FormatLargeNumber(totalReqs) };

                results.overallCounterValues = dataFabric.GetOverallCounterValues(counterData, "SzRd", "Posted SzWr", "Non-Posted SzWr", "Unused");
                return(results);
            }
コード例 #4
0
            public MonitoringUpdateResults Update()
            {
                MonitoringUpdateResults results     = new MonitoringUpdateResults();
                NormalizedNbCounterData counterData = dataFabric.UpdateNbPerfCounterData();

                results.unitMetrics    = new string[4][];
                results.unitMetrics[0] = new string[] { "CPU to Mem", FormatLargeNumber(counterData.ctr0) };
                results.unitMetrics[1] = new string[] { "CPU to IO", FormatLargeNumber(counterData.ctr1) };
                results.unitMetrics[2] = new string[] { "IO to Mem", FormatLargeNumber(counterData.ctr2) };
                results.unitMetrics[3] = new string[] { "IO to IO", FormatLargeNumber(counterData.ctr3) };

                float totalReqs = counterData.ctr0 + counterData.ctr1 + counterData.ctr2;

                results.overallMetrics = new string[] { "Overall", FormatLargeNumber(totalReqs) };

                results.overallCounterValues = dataFabric.GetOverallCounterValues(counterData, "CPU to Mem", "CPU to IO", "IO to Mem", "IO to IO");
                return(results);
            }
コード例 #5
0
            public MonitoringUpdateResults Update()
            {
                MonitoringUpdateResults results     = new MonitoringUpdateResults();
                NormalizedNbCounterData counterData = dataFabric.UpdateNbPerfCounterData();

                results.unitMetrics    = new string[4][];
                results.unitMetrics[0] = new string[] { "Read Block/Read Block Modified", FormatLargeNumber(counterData.ctr1 * 64) + "B/s", FormatLargeNumber(counterData.ctr1) };
                results.unitMetrics[1] = new string[] { "Read Block Shared", FormatLargeNumber(counterData.ctr2 * 64) + "B/s", FormatLargeNumber(counterData.ctr2) };
                results.unitMetrics[2] = new string[] { "Victim Block (Writeback)", FormatLargeNumber(counterData.ctr3 * 64) + "B/s", FormatLargeNumber(counterData.ctr3) };
                results.unitMetrics[3] = new string[] { "Change-to-Dirty", FormatLargeNumber(counterData.ctr0 * 64) + "B/s", FormatLargeNumber(counterData.ctr0) };

                float totalReqs = counterData.ctr1 + counterData.ctr2 + counterData.ctr3;

                results.overallMetrics = new string[] { "Overall", FormatLargeNumber(totalReqs * 64) + "B/s", FormatLargeNumber(totalReqs) };

                results.overallCounterValues = dataFabric.GetOverallCounterValues(counterData, "Change-To-Dirty", "Read Block/Modified", "Read Block Shared", "Victim Block");
                return(results);
            }
コード例 #6
0
            public MonitoringUpdateResults Update()
            {
                MonitoringUpdateResults results     = new MonitoringUpdateResults();
                NormalizedNbCounterData counterData = dataFabric.UpdateNbPerfCounterData();

                results.unitMetrics    = new string[4][];
                results.unitMetrics[0] = new string[] { "Page Hit", FormatLargeNumber(counterData.ctr0 * 64) + "B/s", FormatLargeNumber(counterData.ctr0) };
                results.unitMetrics[1] = new string[] { "Page Miss", FormatLargeNumber(counterData.ctr1 * 64) + "B/s", FormatLargeNumber(counterData.ctr1) };
                results.unitMetrics[2] = new string[] { "Page Conflict", FormatLargeNumber(counterData.ctr2 * 64) + "B/s", FormatLargeNumber(counterData.ctr2) };
                results.unitMetrics[3] = new string[] { "MC Page Table Overflow", FormatLargeNumber(counterData.ctr3 * 64) + "B/s", FormatLargeNumber(counterData.ctr3) };

                float totalReqs = counterData.ctr0 + counterData.ctr1 + counterData.ctr2;

                results.overallMetrics = new string[] { "Overall", FormatLargeNumber(totalReqs * 64) + "B/s", FormatLargeNumber(totalReqs) };

                results.overallCounterValues = dataFabric.GetOverallCounterValues(counterData, "Page Hit", "Page Miss", "Page Conflict", "Page Table Overflow");
                return(results);
            }
コード例 #7
0
            public MonitoringUpdateResults Update()
            {
                MonitoringUpdateResults results     = new MonitoringUpdateResults();
                NormalizedNbCounterData counterData = dataFabric.UpdateNbPerfCounterData();

                results.unitMetrics = null;

                float l3Hits = counterData.ctr0 - counterData.ctr1;

                results.overallMetrics = new string[] { "Overall",
                                                        FormatPercentage(l3Hits, counterData.ctr0),
                                                        FormatLargeNumber(64 * l3Hits) + "B/s",
                                                        FormatLargeNumber(64 * counterData.ctr2) + "B/s",
                                                        FormatLargeNumber(64 * counterData.ctr3) + "B/s",
                                                        FormatLargeNumber(64 * (l3Hits + counterData.ctr2 + counterData.ctr3)) + "B/s" };

                results.overallCounterValues = dataFabric.GetOverallCounterValues(counterData, "L3 Read Request", "L3 Miss", "L3 Fill", "L3 Eviction, Modified");
                return(results);
            }