public MonitoringUpdateResults Update() { MonitoringUpdateResults results = new MonitoringUpdateResults(); results.unitMetrics = new string[cpu.GetThreadCount()][]; cpu.InitializeCoreTotals(); for (int threadIdx = 0; threadIdx < cpu.GetThreadCount(); threadIdx++) { cpu.UpdateThreadCoreCounterData(threadIdx); results.unitMetrics[threadIdx] = computeMetrics("Thread " + threadIdx, cpu.NormalizedThreadCounts[threadIdx]); } results.overallMetrics = computeMetrics("Overall", cpu.NormalizedTotalCounts); results.overallCounterValues = cpu.GetOverallCounterValues("FP Scheduler Full", "FP PRF Full", "Decoder Empty", "FLOPs", "Instructions", "Serializing FP Ops"); return(results); }
public MonitoringUpdateResults Update() { MonitoringUpdateResults results = new MonitoringUpdateResults(); results.unitMetrics = new string[cpu.GetThreadCount()][]; cpu.InitializeCoreTotals(); for (int threadIdx = 0; threadIdx < cpu.GetThreadCount(); threadIdx++) { cpu.UpdateThreadCoreCounterData(threadIdx); results.unitMetrics[threadIdx] = computeMetrics("Thread " + threadIdx, cpu.NormalizedThreadCounts[threadIdx]); } results.overallMetrics = computeMetrics("Overall", cpu.NormalizedTotalCounts); results.overallCounterValues = cpu.GetOverallCounterValues("LDQ Full Stall", "STQ Full Stall", "INT PRF Full Stall", "FP Exceptions", "Instructions", "FP/MMX Instructions Retired"); return(results); }
public MonitoringUpdateResults Update() { MonitoringUpdateResults results = new MonitoringUpdateResults(); results.unitMetrics = new string[cpu.GetThreadCount()][]; cpu.InitializeCoreTotals(); for (int threadIdx = 0; threadIdx < cpu.GetThreadCount(); threadIdx++) { cpu.UpdateThreadCoreCounterData(threadIdx); results.unitMetrics[threadIdx] = computeMetrics("Thread " + threadIdx, cpu.NormalizedThreadCounts[threadIdx]); } results.overallMetrics = computeMetrics("Overall", cpu.NormalizedTotalCounts); results.overallCounterValues = cpu.GetOverallCounterValues("Return stack hits", "Return stack overflows", "instructions", "taken branches", "retired branches", "retired mispredicted branches"); return(results); }
public MonitoringUpdateResults Update() { MonitoringUpdateResults results = new MonitoringUpdateResults(); results.unitMetrics = new string[cpu.GetThreadCount()][]; cpu.InitializeCoreTotals(); for (int threadIdx = 0; threadIdx < cpu.GetThreadCount(); threadIdx++) { cpu.UpdateThreadCoreCounterData(threadIdx); results.unitMetrics[threadIdx] = computeMetrics("Thread " + threadIdx, cpu.NormalizedThreadCounts[threadIdx]); } results.overallMetrics = computeMetrics("Overall", cpu.NormalizedTotalCounts); results.overallCounterValues = cpu.GetOverallCounterValues("L2 Request", "L2 Miss", "L2 Fill from System", "Instructions", "Misaligned DC Access", "Cancelled Store Forward"); return(results); }
public MonitoringUpdateResults Update() { MonitoringUpdateResults results = new MonitoringUpdateResults(); results.unitMetrics = new string[cpu.GetThreadCount()][]; cpu.InitializeCoreTotals(); for (int threadIdx = 0; threadIdx < cpu.GetThreadCount(); threadIdx++) { cpu.UpdateThreadCoreCounterData(threadIdx); results.unitMetrics[threadIdx] = computeMetrics("Thread " + threadIdx, cpu.NormalizedThreadCounts[threadIdx]); } results.overallMetrics = computeMetrics("Overall", cpu.NormalizedTotalCounts); results.overallCounterValues = cpu.GetOverallCounterValues("Dispatch stall", "ROB Full Stall", "Integer Scheduler Full Stall", "STQ Full Stall", "Instructions", "DC Refill Read Data Error"); return(results); }
public MonitoringUpdateResults Update() { MonitoringUpdateResults results = new MonitoringUpdateResults(); results.unitMetrics = new string[cpu.GetThreadCount()][]; cpu.InitializeCoreTotals(); for (int threadIdx = 0; threadIdx < cpu.GetThreadCount(); threadIdx++) { cpu.UpdateThreadCoreCounterData(threadIdx); results.unitMetrics[threadIdx] = computeMetrics("Thread " + threadIdx, cpu.NormalizedThreadCounts[threadIdx]); } results.overallMetrics = computeMetrics("Overall", cpu.NormalizedTotalCounts); results.overallCounterValues = cpu.GetOverallCounterValues("Misaligned Store", "DC Miss", "LS Dispatch", "Instr", "DC Access Cmask 1", "DC Access Cmask 2"); return(results); }
public MonitoringUpdateResults Update() { MonitoringUpdateResults results = new MonitoringUpdateResults(); results.unitMetrics = new string[cpu.GetThreadCount()][]; cpu.InitializeCoreTotals(); for (int threadIdx = 0; threadIdx < cpu.GetThreadCount(); threadIdx++) { cpu.UpdateThreadCoreCounterData(threadIdx); results.unitMetrics[threadIdx] = computeMetrics("Thread " + threadIdx, cpu.NormalizedThreadCounts[threadIdx]); } results.overallMetrics = computeMetrics("Overall", cpu.NormalizedTotalCounts); results.overallCounterValues = cpu.GetOverallCounterValues("LDQ full", "STQ full", "DC fill from sys", "Instructions", "DC Fill from L2 or Sys", "DC access"); return(results); }
public MonitoringUpdateResults Update() { MonitoringUpdateResults results = new MonitoringUpdateResults(); results.unitMetrics = new string[cpu.GetThreadCount()][]; cpu.InitializeCoreTotals(); for (int threadIdx = 0; threadIdx < cpu.GetThreadCount(); threadIdx++) { cpu.UpdateThreadCoreCounterData(threadIdx); results.unitMetrics[threadIdx] = computeMetrics("Thread " + threadIdx, cpu.NormalizedThreadCounts[threadIdx]); } results.overallMetrics = computeMetrics("Overall", cpu.NormalizedTotalCounts); results.overallCounterValues = cpu.GetOverallCounterValues("IC Access", "IC Miss", "Decoder Empty", "Instructions", "Uops", "Pipeline Restart for SMC"); return(results); }
public MonitoringUpdateResults Update() { MonitoringUpdateResults results = new MonitoringUpdateResults(); results.unitMetrics = new string[cpu.GetThreadCount()][]; cpu.InitializeCoreTotals(); for (int threadIdx = 0; threadIdx < cpu.GetThreadCount(); threadIdx++) { cpu.UpdateThreadCoreCounterData(threadIdx); results.unitMetrics[threadIdx] = computeMetrics("Thread " + threadIdx, cpu.NormalizedThreadCounts[threadIdx]); } results.overallMetrics = computeMetrics("Overall", cpu.NormalizedTotalCounts); results.overallCounterValues = cpu.GetOverallCounterValues("L2 TLB Hit", "L2 TLB Miss", "ITLB Reloads", "(DC Miss)", "Instructions", "DC Access"); return(results); }
public MonitoringUpdateResults Update() { MonitoringUpdateResults results = new MonitoringUpdateResults(); results.unitMetrics = new string[cpu.GetThreadCount()][]; cpu.InitializeCoreTotals(); for (int threadIdx = 0; threadIdx < cpu.GetThreadCount(); threadIdx++) { cpu.UpdateThreadCoreCounterData(threadIdx); results.unitMetrics[threadIdx] = computeMetrics("Thread " + threadIdx, cpu.NormalizedThreadCounts[threadIdx]); } results.overallMetrics = computeMetrics("Overall", cpu.NormalizedTotalCounts); results.overallCounterValues = cpu.GetOverallCounterValues("Cycles Not In Halt", "Retired Instr", "DC Fill From L2", "DC Fill From Cache", "DC Fill From DRAM", "DC Fill From Remote Cache or DRAM"); return(results); }
public MonitoringUpdateResults Update() { MonitoringUpdateResults results = new MonitoringUpdateResults(); results.unitMetrics = new string[l3Cache.ccxSampleThreads.Count()][]; float[] ccxClocks = new float[l3Cache.allCcxThreads.Count()]; l3Cache.ClearTotals(); ulong totalAperf = 0, totalMperf = 0, totalTsc = 0, totalIrPerfCount = 0; foreach (KeyValuePair <int, int> ccxThread in l3Cache.ccxSampleThreads) { // Try to determine frequency, by getting max frequency of cores in ccx foreach (int ccxThreadIdx in l3Cache.allCcxThreads[ccxThread.Key]) { ThreadAffinity.Set(1UL << ccxThreadIdx); float normalizationFactor = l3Cache.GetNormalizationFactor(l3Cache.GetThreadCount() + ccxThreadIdx); ulong aperf, mperf, tsc, irperfcount; l3Cache.ReadFixedCounters(ccxThreadIdx, out aperf, out irperfcount, out tsc, out mperf); totalAperf += aperf; totalIrPerfCount += irperfcount; totalTsc += tsc; totalMperf += mperf; float clk = tsc * ((float)aperf / mperf) * normalizationFactor; if (clk > ccxClocks[ccxThread.Key]) { ccxClocks[ccxThread.Key] = clk; } if (ccxThreadIdx == ccxThread.Value) { l3Cache.UpdateCcxL3CounterData(ccxThread.Key, ccxThread.Value); results.unitMetrics[ccxThread.Key] = computeMetrics("CCX " + ccxThread.Key, l3Cache.ccxCounterData[ccxThread.Key], ccxClocks[ccxThread.Key]); } } } float avgClk = 0; foreach (float ccxClock in ccxClocks) { avgClk += ccxClock; } avgClk /= l3Cache.allCcxThreads.Count(); results.overallMetrics = computeMetrics("Overall", l3Cache.ccxTotals, avgClk); results.overallCounterValues = l3Cache.GetOverallL3CounterValues(totalAperf, totalMperf, totalIrPerfCount, totalTsc, "L3Access", "L3Miss", "L3MissLat/16", "L3MissSdpReq", "Unused", "Unused"); return(results); }
public MonitoringUpdateResults Update() { MonitoringUpdateResults results = new MonitoringUpdateResults(); results.unitMetrics = new string[cpu.GetThreadCount()][]; cpu.InitializeCoreTotals(); for (int threadIdx = 0; threadIdx < cpu.GetThreadCount(); threadIdx++) { cpu.UpdateThreadCoreCounterData(threadIdx); results.unitMetrics[threadIdx] = computeMetrics("Thread " + threadIdx, cpu.NormalizedThreadCounts[threadIdx], false); } cpu.ReadPackagePowerCounter(); results.overallMetrics = computeMetrics("Overall", cpu.NormalizedTotalCounts, true); results.overallCounterValues = cpu.GetOverallCounterValues("Offcore Req Occupancy", "Offcore Requests", "SQ Full", "offcore req cmask 16"); return(results); }
public MonitoringUpdateResults Update() { MonitoringUpdateResults results = new MonitoringUpdateResults(); results.unitMetrics = new string[cpu.GetThreadCount()][]; cpu.InitializeCoreTotals(); for (int threadIdx = 0; threadIdx < cpu.GetThreadCount(); threadIdx++) { cpu.UpdateThreadCoreCounterData(threadIdx); results.unitMetrics[threadIdx] = computeMetrics("Thread " + threadIdx, cpu.NormalizedThreadCounts[threadIdx]); } cpu.ReadPackagePowerCounter(); results.overallMetrics = computeMetrics("Overall", cpu.NormalizedTotalCounts); results.overallCounterValues = cpu.GetOverallCounterValues("L2 Code Read", "L2 Code Miss", "L2 Data Read", "L2 Data Miss", "L2 Prefetcher Hit in L3", "L2 Prefetcher Misses in L3"); return(results); }
public MonitoringUpdateResults Update() { MonitoringUpdateResults results = new MonitoringUpdateResults(); results.unitMetrics = new string[cpu.GetThreadCount()][]; cpu.InitializeCoreTotals(); for (int threadIdx = 0; threadIdx < cpu.GetThreadCount(); threadIdx++) { cpu.UpdateThreadCoreCounterData(threadIdx); results.unitMetrics[threadIdx] = computeMetrics("Thread " + threadIdx, cpu.NormalizedThreadCounts[threadIdx]); } cpu.ReadPackagePowerCounter(); results.overallMetrics = computeMetrics("Overall", cpu.NormalizedTotalCounts); results.overallCounterValues = cpu.GetOverallCounterValues("L2 References", "L2 Misses", "L2 Lines In", "L2 Dirty Lines Evicted"); return(results); }
public MonitoringUpdateResults Update() { MonitoringUpdateResults results = new MonitoringUpdateResults(); results.unitMetrics = new string[cpu.GetThreadCount()][]; cpu.InitializeCoreTotals(); for (int threadIdx = 0; threadIdx < cpu.GetThreadCount(); threadIdx++) { cpu.UpdateThreadCoreCounterData(threadIdx); results.unitMetrics[threadIdx] = computeMetrics("Thread " + threadIdx, cpu.NormalizedThreadCounts[threadIdx]); } cpu.ReadPackagePowerCounter(); results.overallMetrics = computeMetrics("Overall", cpu.NormalizedTotalCounts); results.overallCounterValues = cpu.GetOverallCounterValues("RetireToken", "Int Regs Full", "FP Regs Full", "LDQ Full", "STQ Full", "Taken Branch Buffer Full"); return(results); }
public MonitoringUpdateResults Update() { MonitoringUpdateResults results = new MonitoringUpdateResults(); results.unitMetrics = new string[cpu.GetThreadCount()][]; cpu.InitializeCoreTotals(); for (int threadIdx = 0; threadIdx < cpu.GetThreadCount(); threadIdx++) { cpu.UpdateThreadCoreCounterData(threadIdx); results.unitMetrics[threadIdx] = computeMetrics("Thread " + threadIdx, cpu.NormalizedThreadCounts[threadIdx]); } cpu.ReadPackagePowerCounter(); results.overallMetrics = computeMetrics("Overall", cpu.NormalizedTotalCounts); results.overallCounterValues = cpu.GetOverallCounterValues("LS Dispatch", "Bus lock", "zen2 nonspeclock", "zen 2 speclocklo", "zen 2 speclockhi", "all locks?"); return(results); }
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); }
public MonitoringUpdateResults Update() { MonitoringUpdateResults results = new MonitoringUpdateResults(); results.unitMetrics = new string[cpu.GetThreadCount()][]; cpu.InitializeCoreTotals(); for (int threadIdx = 0; threadIdx < cpu.GetThreadCount(); threadIdx++) { cpu.UpdateThreadCoreCounterData(threadIdx); results.unitMetrics[threadIdx] = computeMetrics("Thread " + threadIdx, cpu.NormalizedThreadCounts[threadIdx]); } cpu.ReadPackagePowerCounter(); results.overallMetrics = computeMetrics("Overall", cpu.NormalizedTotalCounts); results.overallCounterValues = cpu.GetOverallCounterValues("No execute cycles", "LDM Pending Cycles", "Stall L1D Miss Pending Cycles", "Stall L2 Miss Pending cycles"); return(results); }
public MonitoringUpdateResults Update() { MonitoringUpdateResults results = new MonitoringUpdateResults(); results.unitMetrics = new string[cpu.GetThreadCount()][]; cpu.InitializeCoreTotals(); for (int threadIdx = 0; threadIdx < cpu.GetThreadCount(); threadIdx++) { cpu.UpdateThreadCoreCounterData(threadIdx); results.unitMetrics[threadIdx] = computeMetrics("Thread " + threadIdx, cpu.NormalizedThreadCounts[threadIdx]); } cpu.ReadPackagePowerCounter(); results.overallMetrics = computeMetrics("Overall", cpu.NormalizedTotalCounts); results.overallCounterValues = cpu.GetOverallCounterValues("Cycles Not In Halt", "Instructions Retired", "Ret Branches", "Ret Misp Branches", "L1 BTB Overrides", "L2 BTB Overrides"); return(results); }
public MonitoringUpdateResults Update() { MonitoringUpdateResults results = new MonitoringUpdateResults(); results.unitMetrics = new string[cpu.GetThreadCount()][]; cpu.InitializeCoreTotals(); for (int threadIdx = 0; threadIdx < cpu.GetThreadCount(); threadIdx++) { cpu.UpdateThreadCoreCounterData(threadIdx); results.unitMetrics[threadIdx] = computeMetrics("Thread " + threadIdx, cpu.NormalizedThreadCounts[threadIdx]); } cpu.ReadPackagePowerCounter(); results.overallMetrics = computeMetrics("Overall", cpu.NormalizedTotalCounts); results.overallCounterValues = cpu.GetOverallCounterValues("Retire slots cmask 1", "Retire slots cmask 2", "Retire slots cmask 3", "Retire slots cmask 4"); return(results); }
public MonitoringUpdateResults Update() { MonitoringUpdateResults results = new MonitoringUpdateResults(); results.unitMetrics = new string[cpu.GetThreadCount()][]; cpu.InitializeCoreTotals(); for (int threadIdx = 0; threadIdx < cpu.GetThreadCount(); threadIdx++) { cpu.UpdateThreadCoreCounterData(threadIdx); results.unitMetrics[threadIdx] = computeMetrics("Thread " + threadIdx, cpu.NormalizedThreadCounts[threadIdx]); } cpu.ReadPackagePowerCounter(); results.overallMetrics = computeMetrics("Overall", cpu.NormalizedTotalCounts); results.overallCounterValues = cpu.GetOverallCounterValues("All loads", "Locked loads", "SQ Split Locks", "MEM_LOAD_L3_HIT_RETIRED.XSNP_HITM"); return(results); }
public MonitoringUpdateResults Update() { MonitoringUpdateResults results = new MonitoringUpdateResults(); results.unitMetrics = new string[cpu.GetThreadCount()][]; cpu.InitializeCoreTotals(); for (int threadIdx = 0; threadIdx < cpu.GetThreadCount(); threadIdx++) { cpu.UpdateThreadCoreCounterData(threadIdx); results.unitMetrics[threadIdx] = computeMetrics("Thread " + threadIdx, cpu.NormalizedThreadCounts[threadIdx]); } cpu.ReadPackagePowerCounter(); results.overallMetrics = computeMetrics("Overall", cpu.NormalizedTotalCounts); results.overallCounterValues = cpu.GetOverallCounterValues("LclL2", "IntCache", "ExtCacheLocal", "MemIoLocal", "ExtCacheRemote", "MemIoRemote"); return(results); }
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); }
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); }
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); }
public MonitoringUpdateResults Update() { MonitoringUpdateResults results = new MonitoringUpdateResults(); results.unitMetrics = new string[cpu.GetThreadCount()][]; cpu.InitializeCoreTotals(); byte nextPipeUmask = 0; if (pipeNumber == 0) { nextPipeUmask = 0x2; // pipe 1 } else if (pipeNumber == 1) { nextPipeUmask = 0x4; // pipe 2 } else if (pipeNumber == 2) { nextPipeUmask = 0x8; // pipe 3 } else if (pipeNumber == 3) { nextPipeUmask = 0x1; // pipe 0 } else { throw new Exception("Bad Pipe"); } for (int threadIdx = 0; threadIdx < cpu.GetThreadCount(); threadIdx++) { cpu.UpdateThreadCoreCounterData(threadIdx); Ring0.WriteMsr(MSR_PERF_CTL_3, GetPerfCtlValue(0, nextPipeUmask, false, 0, 0)); lastPipeCounts[threadIdx * 4 + pipeNumber] = cpu.NormalizedThreadCounts[threadIdx].ctr3; results.unitMetrics[threadIdx] = computeMetrics("Thread " + threadIdx, cpu.NormalizedThreadCounts[threadIdx], threadIdx); } results.overallMetrics = computeMetrics("Overall", cpu.NormalizedTotalCounts, -1); //results.overallCounterValues = cpu.GetOverallCounterValues("Instructions", "SSE/AVX Instructions", "MMX/x87 Instructions", "FPU Pipe Assignment (MUX)"); pipeNumber = (pipeNumber + 1) % 4; return(results); }
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); }
public MonitoringUpdateResults Update() { MonitoringUpdateResults results = new MonitoringUpdateResults(); results.unitMetrics = new string[cpu.GetThreadCount()][]; ulong ctl0 = 0, ctl1 = 0, ctl2 = 0, ctl3 = 0, ctl4 = 0, ctl5 = 0; for (int threadIdx = 0; threadIdx < cpu.GetThreadCount(); threadIdx++) { ThreadAffinity.Set(1UL << threadIdx); Ring0.ReadMsr(MSR_PERF_CTL_0, out ctl0); Ring0.ReadMsr(MSR_PERF_CTL_1, out ctl1); Ring0.ReadMsr(MSR_PERF_CTL_2, out ctl2); Ring0.ReadMsr(MSR_PERF_CTL_3, out ctl3); Ring0.ReadMsr(MSR_PERF_CTL_4, out ctl4); Ring0.ReadMsr(MSR_PERF_CTL_5, out ctl5); results.unitMetrics[threadIdx] = new string[] { "Thread " + threadIdx, string.Format("{0:X}", ctl0), string.Format("{0:X}", ctl1), string.Format("{0:X}", ctl2), string.Format("{0:X}", ctl3), string.Format("{0:X}", ctl4), string.Format("{0:X}", ctl5) }; } results.overallMetrics = new string[] { "Overall (ignore) ", string.Format("{0:X}", ctl0), string.Format("{0:X}", ctl1), string.Format("{0:X}", ctl2), string.Format("{0:X}", ctl3), string.Format("{0:X}", ctl4), string.Format("{0:X}", ctl5) }; results.overallCounterValues = new Tuple <string, float> [6]; results.overallCounterValues[0] = new Tuple <string, float>("Ctl0", ctl0); results.overallCounterValues[1] = new Tuple <string, float>("Ctl1", ctl1); results.overallCounterValues[2] = new Tuple <string, float>("Ctl2", ctl2); results.overallCounterValues[3] = new Tuple <string, float>("Ctl3", ctl3); results.overallCounterValues[4] = new Tuple <string, float>("Ctl4", ctl4); results.overallCounterValues[5] = new Tuple <string, float>("Ctl5", ctl5); return(results); }
public MonitoringUpdateResults Update() { MonitoringUpdateResults results = new MonitoringUpdateResults(); results.unitMetrics = new string[cpu.GetThreadCount()][]; cpu.InitializeCoreTotals(); for (int threadIdx = 0; threadIdx < cpu.GetThreadCount(); threadIdx++) { cpu.UpdateThreadCoreCounterData(threadIdx); results.unitMetrics[threadIdx] = computeMetrics("Thread " + threadIdx, cpu.NormalizedThreadCounts[threadIdx]); } results.overallMetrics = computeMetrics("Overall", cpu.NormalizedTotalCounts); results.overallCounterValues = cpu.GetOverallCounterValues("Dispatch Stall Waiting for All Quiet", "Dispatch Stall for Serialization", "Instruction fetch stall", "SSE Moves Eliminated", "Instructions", "FP+Load Buffer Stall"); return(results); }
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); }