Commit e9d95bf7 authored by venkatesh.pallipadi@intel.com's avatar venkatesh.pallipadi@intel.com Committed by Dave Jones

[CPUFREQ][4/6] cpufreq_ondemand: Parameterize down differential

Use a parameter for down differential, instead of hardcoded 10%. Follow-on
patch changes the down-differential dynamically, based on whether
we are using idle micro-accounting or not.
Signed-off-by: default avatarVenkatesh Pallipadi <venkatesh.pallipadi@intel.com>
Signed-off-by: default avatarDave Jones <davej@redhat.com>
parent 3430502d
...@@ -24,6 +24,7 @@ ...@@ -24,6 +24,7 @@
* It helps to keep variable names smaller, simpler * It helps to keep variable names smaller, simpler
*/ */
#define DEF_FREQUENCY_DOWN_DIFFERENTIAL (10)
#define DEF_FREQUENCY_UP_THRESHOLD (80) #define DEF_FREQUENCY_UP_THRESHOLD (80)
#define MIN_FREQUENCY_UP_THRESHOLD (11) #define MIN_FREQUENCY_UP_THRESHOLD (11)
#define MAX_FREQUENCY_UP_THRESHOLD (100) #define MAX_FREQUENCY_UP_THRESHOLD (100)
...@@ -86,10 +87,12 @@ static struct workqueue_struct *kondemand_wq; ...@@ -86,10 +87,12 @@ static struct workqueue_struct *kondemand_wq;
static struct dbs_tuners { static struct dbs_tuners {
unsigned int sampling_rate; unsigned int sampling_rate;
unsigned int up_threshold; unsigned int up_threshold;
unsigned int down_differential;
unsigned int ignore_nice; unsigned int ignore_nice;
unsigned int powersave_bias; unsigned int powersave_bias;
} dbs_tuners_ins = { } dbs_tuners_ins = {
.up_threshold = DEF_FREQUENCY_UP_THRESHOLD, .up_threshold = DEF_FREQUENCY_UP_THRESHOLD,
.down_differential = DEF_FREQUENCY_DOWN_DIFFERENTIAL,
.ignore_nice = 0, .ignore_nice = 0,
.powersave_bias = 0, .powersave_bias = 0,
}; };
...@@ -424,9 +427,13 @@ static void dbs_check_cpu(struct cpu_dbs_info_s *this_dbs_info) ...@@ -424,9 +427,13 @@ static void dbs_check_cpu(struct cpu_dbs_info_s *this_dbs_info)
* can support the current CPU usage without triggering the up * can support the current CPU usage without triggering the up
* policy. To be safe, we focus 10 points under the threshold. * policy. To be safe, we focus 10 points under the threshold.
*/ */
if (max_load_freq < (dbs_tuners_ins.up_threshold - 10) * policy->cur) { if (max_load_freq <
(dbs_tuners_ins.up_threshold - dbs_tuners_ins.down_differential) *
policy->cur) {
unsigned int freq_next; unsigned int freq_next;
freq_next = max_load_freq / (dbs_tuners_ins.up_threshold - 10); freq_next = max_load_freq /
(dbs_tuners_ins.up_threshold -
dbs_tuners_ins.down_differential);
if (!dbs_tuners_ins.powersave_bias) { if (!dbs_tuners_ins.powersave_bias) {
__cpufreq_driver_target(policy, freq_next, __cpufreq_driver_target(policy, freq_next,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment