ACK: [PATCH] cpufreq: the calibration is taking a long time, make it faster

Alex Hung alex.hung at canonical.com
Tue Oct 13 07:02:59 UTC 2015


On 10/07/2015 11:53 PM, Colin King wrote:
> From: Colin Ian King <colin.king at canonical.com>
> 
> I've reduced the CPU cycle consumer loop from 1 sec to 0.25 seconds,
> it speeds up the cpufreq test and I've not notice any detrimental
> results occur.  If one reduces the loop down to sub 0.1 seconds
> the results aren't that stable, so I think 0.25 seconds is a good
> compromise.
> 
> Signed-off-by: Colin Ian King <colin.king at canonical.com>
> ---
>  src/cpu/cpufreq/cpufreq.c | 9 +++++----
>  src/lib/src/fwts_cpu.c    | 2 +-
>  2 files changed, 6 insertions(+), 5 deletions(-)
> 
> diff --git a/src/cpu/cpufreq/cpufreq.c b/src/cpu/cpufreq/cpufreq.c
> index c96ed4d..c202797 100644
> --- a/src/cpu/cpufreq/cpufreq.c
> +++ b/src/cpu/cpufreq/cpufreq.c
> @@ -74,6 +74,7 @@ static bool cpufreq_settable = true;
>  
>  #define MAX_ABSOLUTE_ERROR	20.0		/* In Hz */
>  #define MAX_RELATIVE_ERROR	0.0025		/* as fraction */
> +#define MAX_REPEATS		(5)
>  
>  static inline void cpu_mkpath(
>  	char *const path,
> @@ -130,8 +131,8 @@ static int cpu_set_frequency(fwts_framework *fw, struct cpu *cpu,
>  
>  out:
>  	if (rc != FWTS_OK)
> -		fwts_warning(fw, "Cannot set CPU %d frequency to %s.",
> -				cpu->idx, buffer);
> +		fwts_warning(fw, "Cannot set CPU %d frequency to %s when setting %s.",
> +			cpu->idx, buffer, path);
>  	return rc;
>  }
>  
> @@ -446,14 +447,14 @@ static int cpufreq_test_sw_all(fwts_framework *fw)
>  	for (i = 0; i < num_cpus; i++)
>  		cpu_set_lowest_frequency(fw, &cpus[i]);
>  
> -	if (get_performance_repeat(fw, &cpus[0], 5, GET_PERFORMANCE_MIN, &lowperf) != FWTS_OK) {
> +	if (get_performance_repeat(fw, &cpus[0], MAX_REPEATS, GET_PERFORMANCE_MIN, &lowperf) != FWTS_OK) {
>  		fwts_failed(fw, LOG_LEVEL_MEDIUM, "CPUFreqSW_ALLGetPerf",
>  			"Failed to get CPU performance.");
>  		return FWTS_ERROR;
>  	}
>  
>  	cpu_set_highest_frequency(fw, &cpus[0]);
> -	if (get_performance_repeat(fw, &cpus[0], 5, GET_PERFORMANCE_MAX, &highperf) != FWTS_OK) {
> +	if (get_performance_repeat(fw, &cpus[0], MAX_REPEATS, GET_PERFORMANCE_MAX, &highperf) != FWTS_OK) {
>  		fwts_failed(fw, LOG_LEVEL_MEDIUM, "CPUFreqSW_ALLGetPerf",
>  			"Failed to get CPU performance.");
>  		return FWTS_ERROR;
> diff --git a/src/lib/src/fwts_cpu.c b/src/lib/src/fwts_cpu.c
> index a870ae8..307e81b 100644
> --- a/src/lib/src/fwts_cpu.c
> +++ b/src/lib/src/fwts_cpu.c
> @@ -433,7 +433,7 @@ int fwts_cpu_benchmark(
>  
>  		gettimeofday(&end, NULL);
>  		timersub(&end, &start, &duration);
> -		if (duration.tv_sec >= 1)
> +		if (duration.tv_usec >= 250000)
>  			break;
>  	}
>  
> 

Acked-by: Alex Hung <alex.hung at canonical.com>



More information about the fwts-devel mailing list