[v2,1/1] test/power: fix CPU frequency check

Message ID 20210714104405.23917-2-richael.zhuang@arm.com (mailing list archive)
State Accepted, archived
Delegated to: David Marchand
Headers
Series test/power: fix CPU frequency check |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/github-robot success github build: passed
ci/iol-abi-testing success Testing PASS
ci/iol-intel-Functional success Functional Testing PASS
ci/Intel-compilation success Compilation OK
ci/intel-Testing success Testing PASS
ci/iol-testing success Testing PASS
ci/iol-intel-Performance fail Performance Testing issues

Commit Message

Richael Zhuang July 14, 2021, 10:44 a.m. UTC
  For acpi_cpufreq and cppc_cpufreq, both cpuinfo_cur_freq and
scaling_cur_freq exist. For pstate, only scaling_cur_freq exists.
And value in scaling_cur_freq and cpuinfo_cur_freq may not be the
same. For acpi_cpufreq and cppc_cpufreq, we should check
cpuinfo_cur_freq but not scaling_cur_freq. So here change the
check sequence to make sure it works for all cpufreq drivers.
Besides, add rounding for pstate driver.

Fixes: ff6dfb8e492f ("test/power: fix CPU frequency check")
Cc: david.hunt@intel.com
Cc: stable@dpdk.org

Signed-off-by: Richael Zhuang <richael.zhuang@arm.com>
---
 app/test/test_power_cpufreq.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)
  

Comments

Hunt, David July 14, 2021, 12:23 p.m. UTC | #1
Hi Richael,

On 14/7/2021 11:44 AM, Richael Zhuang wrote:
> For acpi_cpufreq and cppc_cpufreq, both cpuinfo_cur_freq and
> scaling_cur_freq exist. For pstate, only scaling_cur_freq exists.
> And value in scaling_cur_freq and cpuinfo_cur_freq may not be the
> same. For acpi_cpufreq and cppc_cpufreq, we should check
> cpuinfo_cur_freq but not scaling_cur_freq. So here change the
> check sequence to make sure it works for all cpufreq drivers.
> Besides, add rounding for pstate driver.
>
> Fixes: ff6dfb8e492f ("test/power: fix CPU frequency check")
> Cc: david.hunt@intel.com
> Cc: stable@dpdk.org
>
> Signed-off-by: Richael Zhuang <richael.zhuang@arm.com>
> ---
>   app/test/test_power_cpufreq.c | 6 +++---
>   1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/app/test/test_power_cpufreq.c b/app/test/test_power_cpufreq.c
> index b8fc53925c..1a9549527e 100644
> --- a/app/test/test_power_cpufreq.c
> +++ b/app/test/test_power_cpufreq.c
> @@ -62,13 +62,13 @@ check_cur_freq(unsigned int lcore_id, uint32_t idx, bool turbo)
>   	int i;
>   
>   	if (snprintf(fullpath, sizeof(fullpath),
> -		TEST_POWER_SYSFILE_SCALING_FREQ, lcore_id) < 0) {
> +		TEST_POWER_SYSFILE_CPUINFO_FREQ, lcore_id) < 0) {
>   		return 0;
>   	}
>   	f = fopen(fullpath, "r");
>   	if (f == NULL) {
>   		if (snprintf(fullpath, sizeof(fullpath),
> -			TEST_POWER_SYSFILE_CPUINFO_FREQ, lcore_id) < 0) {
> +			TEST_POWER_SYSFILE_SCALING_FREQ, lcore_id) < 0) {
>   			return 0;
>   		}
>   		f = fopen(fullpath, "r");
> @@ -85,7 +85,7 @@ check_cur_freq(unsigned int lcore_id, uint32_t idx, bool turbo)
>   		freq_conv = cur_freq;
>   
>   		env = rte_power_get_env();
> -		if (env == PM_ENV_CPPC_CPUFREQ) {
> +		if (env == PM_ENV_CPPC_CPUFREQ || env == PM_ENV_PSTATE_CPUFREQ) {
>   			/* convert the frequency to nearest 100000 value
>   			 * Ex: if cur_freq=1396789 then freq_conv=1400000
>   			 * Ex: if cur_freq=800030 then freq_conv=800000


Looks good now. I ran the power_cpufreq_autotest test on both the 
acpi-cpufreq and pstate drivers, and both passed.

Acked-by: David Hunt <david.hunt@intel.com>
  
Richael Zhuang July 15, 2021, 1:44 a.m. UTC | #2
> -----Original Message-----
> From: David Hunt <david.hunt@intel.com>
> Sent: Wednesday, July 14, 2021 8:23 PM
> To: Richael Zhuang <Richael.Zhuang@arm.com>; dev@dpdk.org
> Cc: zhiminx.huang@intel.com; stable@dpdk.org
> Subject: Re: [PATCH v2 1/1] test/power: fix CPU frequency check
> 
> Hi Richael,
> 
> On 14/7/2021 11:44 AM, Richael Zhuang wrote:
> > For acpi_cpufreq and cppc_cpufreq, both cpuinfo_cur_freq and
> > scaling_cur_freq exist. For pstate, only scaling_cur_freq exists.
> > And value in scaling_cur_freq and cpuinfo_cur_freq may not be the
> > same. For acpi_cpufreq and cppc_cpufreq, we should check
> > cpuinfo_cur_freq but not scaling_cur_freq. So here change the check
> > sequence to make sure it works for all cpufreq drivers.
> > Besides, add rounding for pstate driver.
> >
> > Fixes: ff6dfb8e492f ("test/power: fix CPU frequency check")
> > Cc: david.hunt@intel.com
> > Cc: stable@dpdk.org
> >
> > Signed-off-by: Richael Zhuang <richael.zhuang@arm.com>
> > ---
> >   app/test/test_power_cpufreq.c | 6 +++---
> >   1 file changed, 3 insertions(+), 3 deletions(-)
> >
> > diff --git a/app/test/test_power_cpufreq.c
> > b/app/test/test_power_cpufreq.c index b8fc53925c..1a9549527e 100644
> > --- a/app/test/test_power_cpufreq.c
> > +++ b/app/test/test_power_cpufreq.c
> > @@ -62,13 +62,13 @@ check_cur_freq(unsigned int lcore_id, uint32_t idx,
> bool turbo)
> >   	int i;
> >
> >   	if (snprintf(fullpath, sizeof(fullpath),
> > -		TEST_POWER_SYSFILE_SCALING_FREQ, lcore_id) < 0) {
> > +		TEST_POWER_SYSFILE_CPUINFO_FREQ, lcore_id) < 0) {
> >   		return 0;
> >   	}
> >   	f = fopen(fullpath, "r");
> >   	if (f == NULL) {
> >   		if (snprintf(fullpath, sizeof(fullpath),
> > -			TEST_POWER_SYSFILE_CPUINFO_FREQ, lcore_id) < 0)
> {
> > +			TEST_POWER_SYSFILE_SCALING_FREQ, lcore_id) < 0)
> {
> >   			return 0;
> >   		}
> >   		f = fopen(fullpath, "r");
> > @@ -85,7 +85,7 @@ check_cur_freq(unsigned int lcore_id, uint32_t idx,
> bool turbo)
> >   		freq_conv = cur_freq;
> >
> >   		env = rte_power_get_env();
> > -		if (env == PM_ENV_CPPC_CPUFREQ) {
> > +		if (env == PM_ENV_CPPC_CPUFREQ || env ==
> PM_ENV_PSTATE_CPUFREQ) {
> >   			/* convert the frequency to nearest 100000 value
> >   			 * Ex: if cur_freq=1396789 then freq_conv=1400000
> >   			 * Ex: if cur_freq=800030 then freq_conv=800000
> 
> 
> Looks good now. I ran the power_cpufreq_autotest test on both the acpi-
> cpufreq and pstate drivers, and both passed.
> 
> Acked-by: David Hunt <david.hunt@intel.com>
> 
Thank you for testing it!
>
  
David Marchand July 20, 2021, 3:20 p.m. UTC | #3
On Wed, Jul 14, 2021 at 2:23 PM David Hunt <david.hunt@intel.com> wrote:
> On 14/7/2021 11:44 AM, Richael Zhuang wrote:
> > For acpi_cpufreq and cppc_cpufreq, both cpuinfo_cur_freq and
> > scaling_cur_freq exist. For pstate, only scaling_cur_freq exists.
> > And value in scaling_cur_freq and cpuinfo_cur_freq may not be the
> > same. For acpi_cpufreq and cppc_cpufreq, we should check
> > cpuinfo_cur_freq but not scaling_cur_freq. So here change the
> > check sequence to make sure it works for all cpufreq drivers.
> > Besides, add rounding for pstate driver.
> >
> > Fixes: ff6dfb8e492f ("test/power: fix CPU frequency check")
> > Cc: stable@dpdk.org
> >
> > Signed-off-by: Richael Zhuang <richael.zhuang@arm.com>
> Acked-by: David Hunt <david.hunt@intel.com>

Applied, thanks.
  

Patch

diff --git a/app/test/test_power_cpufreq.c b/app/test/test_power_cpufreq.c
index b8fc53925c..1a9549527e 100644
--- a/app/test/test_power_cpufreq.c
+++ b/app/test/test_power_cpufreq.c
@@ -62,13 +62,13 @@  check_cur_freq(unsigned int lcore_id, uint32_t idx, bool turbo)
 	int i;
 
 	if (snprintf(fullpath, sizeof(fullpath),
-		TEST_POWER_SYSFILE_SCALING_FREQ, lcore_id) < 0) {
+		TEST_POWER_SYSFILE_CPUINFO_FREQ, lcore_id) < 0) {
 		return 0;
 	}
 	f = fopen(fullpath, "r");
 	if (f == NULL) {
 		if (snprintf(fullpath, sizeof(fullpath),
-			TEST_POWER_SYSFILE_CPUINFO_FREQ, lcore_id) < 0) {
+			TEST_POWER_SYSFILE_SCALING_FREQ, lcore_id) < 0) {
 			return 0;
 		}
 		f = fopen(fullpath, "r");
@@ -85,7 +85,7 @@  check_cur_freq(unsigned int lcore_id, uint32_t idx, bool turbo)
 		freq_conv = cur_freq;
 
 		env = rte_power_get_env();
-		if (env == PM_ENV_CPPC_CPUFREQ) {
+		if (env == PM_ENV_CPPC_CPUFREQ || env == PM_ENV_PSTATE_CPUFREQ) {
 			/* convert the frequency to nearest 100000 value
 			 * Ex: if cur_freq=1396789 then freq_conv=1400000
 			 * Ex: if cur_freq=800030 then freq_conv=800000