示例#1
0
            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 1", "Dispatch stall 2", "Op Queue Empty?", "Ops from Decoder", "Decoder cycles", "Op cache cycles");
                return(results);
            }
示例#2
0
            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);
            }