Esempio n. 1
0
            public MonitoringUpdateResults Update()
            {
                float normalizationFactor       = dataFabric.GetNormalizationFactor(ref lastUpdateTime);
                MonitoringUpdateResults results = new MonitoringUpdateResults();

                ThreadAffinity.Set(1UL << monitoringThread);
                ulong ctr0 = ReadAndClearMsr(MSR_DF_PERF_CTR_0);
                ulong ctr1 = ReadAndClearMsr(MSR_DF_PERF_CTR_1);
                ulong ctr2 = ReadAndClearMsr(MSR_DF_PERF_CTR_2);
                ulong ctr3 = ReadAndClearMsr(MSR_DF_PERF_CTR_3);

                dataFabric.ReadPackagePowerCounter();
                results.unitMetrics    = new string[4][];
                results.unitMetrics[0] = new string[] { "CCM0 DRAM BW?", FormatLargeNumber(ctr0 * normalizationFactor * 64) + "B/s", FormatLargeNumber(ctr0 * normalizationFactor), "N/A" };
                results.unitMetrics[1] = new string[] { "CCM1 DRAM BW?", FormatLargeNumber(ctr1 * normalizationFactor * 16) + "B/s", FormatLargeNumber(ctr1 * normalizationFactor), "N/A" };
                results.unitMetrics[2] = new string[] { "Mem BW related?", FormatLargeNumber(ctr2 * normalizationFactor * 64) + "B/s", FormatLargeNumber(ctr2 * normalizationFactor), "N/A" };
                results.unitMetrics[3] = new string[] { "Wat Dis?", FormatLargeNumber(ctr3 * normalizationFactor * 64) + "B/s", FormatLargeNumber(ctr3 * normalizationFactor), "N/A" };

                results.overallMetrics = new string[] { "Overall",
                                                        FormatLargeNumber((ctr0 + ctr1 + ctr2 + ctr3) * normalizationFactor * 64) + "B/s",
                                                        FormatLargeNumber(ctr0 + ctr1 + ctr2 + ctr3),
                                                        string.Format("{0:F2} W", dataFabric.NormalizedTotalCounts.watts) };

                results.overallCounterValues    = new Tuple <string, float> [5];
                results.overallCounterValues[0] = new Tuple <string, float>("Package Power", dataFabric.NormalizedTotalCounts.watts);
                results.overallCounterValues[1] = new Tuple <string, float>("Evt 0x07 Umask 2", ctr0);
                results.overallCounterValues[2] = new Tuple <string, float>("Evt 0x47 Umask 2", ctr1);
                results.overallCounterValues[3] = new Tuple <string, float>("Mem BW? 0x87 Umask 1", ctr2);
                results.overallCounterValues[4] = new Tuple <string, float>("Evt 0xC7 Umask 4", ctr3);
                return(results);
            }
Esempio n. 2
0
            public MonitoringUpdateResults Update()
            {
                float normalizationFactor       = dataFabric.GetNormalizationFactor(ref lastUpdateTime);
                MonitoringUpdateResults results = new MonitoringUpdateResults();

                results.unitMetrics = new string[4][];
                ThreadAffinity.Set(1UL << monitoringThread);
                ulong mysteryDramBytes0 = ReadAndClearMsr(MSR_DF_PERF_CTR_0) * 64;
                ulong mysteryDramBytes1 = ReadAndClearMsr(MSR_DF_PERF_CTR_1) * 64;
                ulong mysteryDramBytes2 = ReadAndClearMsr(MSR_DF_PERF_CTR_2) * 64;
                ulong mysteryDramBytes3 = ReadAndClearMsr(MSR_DF_PERF_CTR_3) * 64;

                results.unitMetrics[0] = new string[] { "DF Evt 0x07 Umask 0x38", FormatLargeNumber(mysteryDramBytes0 * normalizationFactor) + "B/s" };
                results.unitMetrics[1] = new string[] { "DF Evt 0x47 Umask 0x38", FormatLargeNumber(mysteryDramBytes1 * normalizationFactor) + "B/s" };
                results.unitMetrics[2] = new string[] { "DF Evt 0x87 Umask 0x38", FormatLargeNumber(mysteryDramBytes2 * normalizationFactor) + "B/s" };
                results.unitMetrics[3] = new string[] { "DF Evt 0xC7 Umask 0x38", FormatLargeNumber(mysteryDramBytes3 * normalizationFactor) + "B/s" };

                results.overallMetrics = new string[] { "Overall",
                                                        FormatLargeNumber((mysteryDramBytes0 + mysteryDramBytes1) * normalizationFactor) + "B/s" };
                return(results);
            }