Login
[x]
Log in using an account from:
Fedora Account System
Red Hat Associate
Red Hat Customer
Or login using a Red Hat Bugzilla account
Forgot Password
Login:
Hide Forgot
Create an Account
Red Hat Bugzilla – Attachment 877363 Details for
Bug 1070360
E7-4890 V2 fails cpuscaling - Cannot hit top turboboost speed - too many cores being tested
[?]
New
Simple Search
Advanced Search
My Links
Browse
Requests
Reports
Current State
Search
Tabular reports
Graphical reports
Duplicates
Other Reports
User Changes
Plotly Reports
Bug Status
Bug Severity
Non-Defaults
|
Product Dashboard
Help
Page Help!
Bug Writing Guidelines
What's new
Browser Support Policy
5.0.4.rh83 Release notes
FAQ
Guides index
User guide
Web Services
Contact
Legal
This site requires JavaScript to be enabled to function correctly, please enable it.
[patch]
patch to use the cpu model stated frequency as the fully-loaded target max
0001-1070360-E7-4890-V2-fails-cpuscaling-Cannot-hit-top-t.patch (text/plain), 8.62 KB, created by
Greg Nichols
on 2014-03-21 16:29:23 UTC
(
hide
)
Description:
patch to use the cpu model stated frequency as the fully-loaded target max
Filename:
MIME Type:
Creator:
Greg Nichols
Created:
2014-03-21 16:29:23 UTC
Size:
8.62 KB
patch
obsolete
>From 53be1a6a9f9fa30701604b6fd009ead4012b7e48 Mon Sep 17 00:00:00 2001 >From: Greg Nichols <gnichols@redhat.com> >Date: Fri, 21 Mar 2014 12:28:10 -0400 >Subject: [PATCH] 1070360 - E7-4890 V2 fails cpuscaling - Cannot hit top > turboboost speed - too many cores being tested > >--- > tests/cpuscaling/cpuscaling.py | 80 +++++++++++++++++++++++++++--------------- > 1 file changed, 52 insertions(+), 28 deletions(-) > >diff --git a/tests/cpuscaling/cpuscaling.py b/tests/cpuscaling/cpuscaling.py >index c3195c6..8163a13 100644 >--- a/tests/cpuscaling/cpuscaling.py >+++ b/tests/cpuscaling/cpuscaling.py >@@ -25,6 +25,7 @@ import decimal > import signal > > from aperfmperf import EffectiveFrequency >+from decimal import Decimal > > from hwcert.tags import Constants, DeviceClass, TestTag > from hwcert.test import Test >@@ -74,9 +75,9 @@ class CPUScalingTest(Test): > self.workloadEffectiveFreq = dict() # measured effective cpu freq indexed by [workload][cpu] > self.workloadErrors = dict() # error log indexed by [workload] > self.currentWorkload = "minimum" >- # what RHEL are we testing? >- self.redHatRelease = RedHatRelease() >- >+ self.model = None >+ self.maximumModelFrequency = None >+ > def dumpTables(self): > print "\nDumping Data Tables:" > for workload in self.workloads: >@@ -100,7 +101,7 @@ class CPUScalingTest(Test): > for freq in freqs: > sys.stdout.write(" %4u MHz" % freq) > print "" >- >+ > def setWorkloadTime(self, workload, cpu, time): > if not workload in self.workloadTime: > self.workloadTime[workload] = dict() >@@ -645,8 +646,25 @@ class CPUScalingTest(Test): > except HwCertCommandException, exception: > print "Warning: could not read CPU flags" > print exception >- >+ > def logCPUInfo(self): >+ # determine cpu vendor >+ proc = ProcDeviceDetector() >+ self.procCPUinfoCPUs = proc.getDevices(ProcDeviceDetector.procCPUInfo) >+ if self.procCPUinfoCPUs: >+ self.model = self.procCPUinfoCPUs[0].getProperty("model name") >+ >+ # check /proc/cpuinfo model string for maxFreq >+ maxFreq = None >+ pattern = re.compile("(?P<max>[0-9\.]+)(?P<units>(MHz|GHz))") >+ match = pattern.search(self.model) >+ if match: >+ maxFreq = int(Decimal(match.group("max"))*1000000) # to KHz >+ if match.group("units") == "MHz": >+ maxFreq = int(maxFreq/1000) >+ if maxFreq: >+ self.maximumModelFrequency = maxFreq >+ # log the cpus > try: > cpuinfo = Command("cat /proc/cpuinfo") > cpuinfo.run() >@@ -663,12 +681,18 @@ class CPUScalingTest(Test): > except Exception, exception: > print "Warning: could not read CPU Info" > print exception >- >+ > return True >- >+ >+ def getMaximumFrequency(self): >+ if self.maximumModelFrequency: >+ return self.maximumModelFrequency >+ # otherwise >+ return self.getPackageParameter("scaling_max_freq") >+ > def turboBoostSupported(self): > return self.turboBoostSupport >- >+ > def checkFrequencyResults(self, requiredFrequency, unlimitedMaximum=False): > """ requiredFrequency: string, in KHz """ > success = True >@@ -712,7 +736,7 @@ class CPUScalingTest(Test): > print "Setting governor to %s" % governor > if not self.setGovernor(governor): > success = False >- >+ > # 7. Set the the cpu speed to it's lowest value > frequency = self.frequencies[0] > currentFrequency = self.getFrequency() >@@ -724,7 +748,7 @@ class CPUScalingTest(Test): > success = False > self.currentWorkload = "minimum" > sys.stdout.flush() >- >+ > # 8. Verify the speed is set to the lowest value by comparing ~/scaling_min_freq to ~/scaling_cur_freq > # if not, it's a warning - the frequency will be checked again after running the load. > currentFrequency = self.getFrequency() >@@ -732,7 +756,7 @@ class CPUScalingTest(Test): > if not minimumFrequency or not currentFrequency or not self.checkFrequency(minimumFrequency, currentFrequency): > print "Warning: Could not verify that cpu frequency is set to the minimum value of %s" % minimumFrequency > # calculate predicted speedup for the package >- maximumFrequency = self.getPackageParameter("scaling_max_freq") >+ maximumFrequency = self.getMaximumFrequency() > try: > self.predictedSpeedup = float(maximumFrequency)/float(minimumFrequency) > except Exception, e: >@@ -839,9 +863,9 @@ class CPUScalingTest(Test): > print "Note: %s governor not supported" % governor > > return success >- >+ > def runPerformanceTests(self): >- >+ > print "" > print "Performance Governor Test:" > print "-------------------------------------------------" >@@ -854,25 +878,25 @@ class CPUScalingTest(Test): > if not self.setGovernor(governor): > success = False > self.currentWorkload = "performance" >- >+ > # 21. Verify the current speed is the same as scaling_max_freq >- maximumFrequency = self.getPackageParameter("scaling_max_freq") >+ maximumFrequency = self.getMaximumFrequency() > currentFrequency = self.getFrequency() >- >+ > if not maximumFrequency or not currentFrequency or not self.checkFrequency(maximumFrequency, currentFrequency): > print "Warning: Current cpu frequency of %s is not set to the maximum value of %s" % (currentFrequency, maximumFrequency) >- >+ > # 22. Repeat workload test, record timing, also verify frequency does not drop during run > self.performanceTestTime = self.runLoadTest() > if not self.performanceTestTime: > return False > # otherwise > print "Performance load test time: %.2f" % self.performanceTestTime >- >+ > # 22.5 check EFI freq vs. max > if not self.checkFrequencyResults(maximumFrequency, unlimitedMaximum=True): > success = False >- >+ > # 23. Compare the timing to the max results for a self.speedUpTolerance delta > for cpu in self.packageToCpus[self.currentPackage]: > performanceSpeedup = self.speedup(cpu, "performance") >@@ -880,9 +904,9 @@ class CPUScalingTest(Test): > self.checkSpeedup(performanceSpeedup, warn=True) > else: > print "Note: %s governor not supported" % governor >- >+ > return success >- >+ > def runOnDemandTests(self): > """ test one cpu in the package while others are idle, and verify that its speedup is greater than when all > cpus in the package are loaded """ >@@ -991,21 +1015,21 @@ class CPUScalingTest(Test): > sys.stdout.write(" %.2f" % self.speedup(cpu, workload)) > sys.stdout.write((" (%4uMHz, %.2fs) " % (self.getWorkloadFreq(freqTable, workload, cpu) ,workloadTime)[:10])) > print "" >- >+ > print "" >- >+ > def printFreqSummary(self, title, package, freqTable): > print "" > print "Summary for Package %s:" % package > print "\n%s:\n" % title > print " User Min User Max Performance" > print "-------- -------------- -------------- --------------" >- >+ > # expected values > minimumFrequency = int(self.getPackageParameter("scaling_min_freq"))/1000 >- maximumFrequency = int(self.getPackageParameter("scaling_max_freq"))/1000 >+ maximumFrequency = int(self.getMaximumFrequency())/1000 > print "expected %5u MHz %5u MHz %5u MHz" % (minimumFrequency, maximumFrequency, maximumFrequency) >- >+ > #actual values, one row per cpu > for cpu in self.packageToCpus[package]: > sys.stdout.write("cpu %-3s " % cpu) >@@ -1016,9 +1040,9 @@ class CPUScalingTest(Test): > sys.stdout.write(" %4u" % freq) > sys.stdout.write((" (%.2fs) " % self.getWorkloadTime(workload, cpu))[:10]) > print "" >- >+ > print "" >- >+ > def printWorkloadTimeSummary(self, package): > sys.stdout.write("Workload run times for package %s:\n" % package) > sys.stdout.write("-------------------\n") >-- >1.8.5.3 >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 1070360
:
868102
|
868210
| 877363