unsigned int needed_spare_capacity)
{
return (capacity_of(cpu) >
- (cpu_util(cpu) + (needed_spare_capacity / 2)));
+ (cpu_util(cpu) + needed_spare_capacity));
}
*/
#define MAX_PINNED_INTERVAL 512
+static inline bool check_cpu_lite_util(int cpu)
+{
+ /* Lite utilization is defined as less then ~6% */
+ return (capacity_of(cpu) >> 4 >= cpu_util(cpu));
+}
+
static inline int need_park_into_spare_capacity(struct lb_env *env)
{
bool fits_in = check_cpu_spare_capacity(env->dst_cpu,
env->src_rq->cfs.h_nr_running == 1 &&
cpu_overutilized(env->src_cpu) &&
!cpu_overutilized(env->dst_cpu) &&
- fits_in) {
+ (fits_in || check_cpu_lite_util(env->dst_cpu))) {
ret = 1;
} else {
ret = 0;