Beispiel #1
0
        /// <summary>
        /// Read Jaketown CBo counters
        /// </summary>
        /// <param name="cboIdx">CBo index</param>
        public void UpdateCboCounterData(uint cboIdx)
        {
            float normalizationFactor = GetNormalizationFactor((int)cboIdx);
            ulong ctr0, ctr1, ctr2, ctr3;

            FreezeBoxCounters(cboIdx);
            Ring0.ReadMsr(C0_MSR_PMON_CTR0 + MSR_UNC_CBO_increment * cboIdx, out ctr0);
            Ring0.ReadMsr(C0_MSR_PMON_CTR1 + MSR_UNC_CBO_increment * cboIdx, out ctr1);
            Ring0.ReadMsr(C0_MSR_PMON_CTR2 + MSR_UNC_CBO_increment * cboIdx, out ctr2);
            Ring0.ReadMsr(C0_MSR_PMON_CTR3 + MSR_UNC_CBO_increment * cboIdx, out ctr3);
            ClearBoxCounters(cboIdx);
            UnFreezeBoxCounters(cboIdx);

            if (cboData[cboIdx] == null)
            {
                cboData[cboIdx] = new NormalizedCboCounterData();
            }

            cboData[cboIdx].ctr0 = ctr0 * normalizationFactor;
            cboData[cboIdx].ctr1 = ctr1 * normalizationFactor;
            cboData[cboIdx].ctr2 = ctr2 * normalizationFactor;
            cboData[cboIdx].ctr3 = ctr3 * normalizationFactor;
            cboTotals.ctr0      += cboData[cboIdx].ctr0;
            cboTotals.ctr1      += cboData[cboIdx].ctr1;
            cboTotals.ctr2      += cboData[cboIdx].ctr2;
            cboTotals.ctr3      += cboData[cboIdx].ctr3;
        }
Beispiel #2
0
 private string[] computeMetrics(string label, NormalizedCboCounterData counterData)
 {
     return(new string[] { label,
                           string.Format("{0:F2}%", 100 * (counterData.ctr1 / counterData.ctr0)),
                           FormatLargeNumber(counterData.ctr1 * 64) + "B/s",
                           FormatLargeNumber(counterData.ctr0),
                           FormatLargeNumber(counterData.ctr1) });
 }
Beispiel #3
0
 private string[] computeMetrics(string label, NormalizedCboCounterData counterData)
 {
     return(new string[] { label,
                           FormatLargeNumber(counterData.ctr1),
                           FormatLargeNumber(counterData.ctr0),
                           FormatLargeNumber(counterData.ctr2 + counterData.ctr3),
                           string.Format("{0:F2}%", 100 * counterData.ctr2 / counterData.ctr1),
                           string.Format("{0:F2}%", 100 * counterData.ctr3 / counterData.ctr1) });
 }
Beispiel #4
0
        public void InitializeCboTotals()
        {
            if (cboTotals == null)
            {
                cboTotals = new NormalizedCboCounterData();
            }

            cboTotals.ctr0 = 0;
            cboTotals.ctr1 = 0;
        }
Beispiel #5
0
            private string[] computeMetrics(string label, NormalizedCboCounterData counterData, bool total)
            {
                float avgClock    = total ? counterData.ctr2 / CboCount : counterData.ctr2;
                float missLatency = counterData.ctr0 / counterData.ctr1;

                return(new string[] { label,
                                      FormatLargeNumber(counterData.ctr2),
                                      string.Format("{0:F2}", counterData.ctr0 / counterData.ctr3),
                                      string.Format("{0:F2} clk", missLatency),
                                      string.Format("{0:F2} ns", (1000000000 / avgClock) * missLatency),
                                      string.Format("{0:F2}%", 100 * counterData.ctr3 / counterData.ctr2),
                                      FormatLargeNumber(counterData.ctr1) });
            }
Beispiel #6
0
 public SandyBridgeEL3()
 {
     architectureName     = "Sandy Bridge E L3 Cache";
     cboTotals            = new NormalizedCboCounterData();
     cboData              = new NormalizedCboCounterData[CboCount];
     monitoringConfigs    = new MonitoringConfig[8];
     monitoringConfigs[0] = new HitsBlConfig(this);
     monitoringConfigs[1] = new RxRConfig(this);
     monitoringConfigs[2] = new DataReadLatency(this);
     monitoringConfigs[3] = new MissesAdConfig(this);
     monitoringConfigs[4] = new LLCVictimsAndIvRing(this);
     monitoringConfigs[5] = new BouncesAndAkRing(this);
     monitoringConfigs[6] = new DataReadMissLatency(this);
     monitoringConfigs[7] = new ToR(this);
 }
Beispiel #7
0
        public void UpdateCboCounterData(uint cboIdx)
        {
            float normalizationFactor = GetNormalizationFactor((int)cboIdx);
            ulong ctr0 = ReadAndClearMsr(MSR_UNC_CBO_PERFCTR0_base + MSR_UNC_CBO_increment * cboIdx);
            ulong ctr1 = ReadAndClearMsr(MSR_UNC_CBO_PERFCTR1_base + MSR_UNC_CBO_increment * cboIdx);

            if (cboData[cboIdx] == null)
            {
                cboData[cboIdx] = new NormalizedCboCounterData();
            }

            cboData[cboIdx].ctr0 = ctr0 * normalizationFactor;
            cboData[cboIdx].ctr1 = ctr1 * normalizationFactor;
            cboTotals.ctr0      += cboData[cboIdx].ctr0;
            cboTotals.ctr1      += cboData[cboIdx].ctr1;
        }