[PATCH 3/4] sched/fair: Do not replace recent_used_cpu with the new target

Hillf Danton hdanton at sina.com
Fri Dec 11 01:25:42 EST 2020


On Tue,  8 Dec 2020 15:35:00 +0000 Mel Gorman wrote:
> @@ -6277,17 +6277,13 @@ static int select_idle_sibling(struct task_struct *p, int prev, int target)
>  
>  	/* Check a recently used CPU as a potential idle candidate: */
>  	recent_used_cpu = p->recent_used_cpu;
> +	p->recent_used_cpu = prev;
>  	if (recent_used_cpu != prev &&
>  	    recent_used_cpu != target &&
>  	    cpus_share_cache(recent_used_cpu, target) &&
>  	    (available_idle_cpu(recent_used_cpu) || sched_idle_cpu(recent_used_cpu)) &&
>  	    cpumask_test_cpu(p->recent_used_cpu, p->cpus_ptr) &&

Typo? Fix it in spin if so.

>  	    asym_fits_capacity(task_util, recent_used_cpu)) {
> -		/*
> -		 * Replace recent_used_cpu with prev as it is a potential
> -		 * candidate for the next wake:
> -		 */
> -		p->recent_used_cpu = prev;
>  		return recent_used_cpu;

I prefer to update the recent CPU after llc check.

>  	}
>  
> @@ -6768,9 +6764,6 @@ select_task_rq_fair(struct task_struct *p, int prev_cpu, int wake_flags)
>  	} else if (wake_flags & WF_TTWU) { /* XXX always ? */
>  		/* Fast path */
>  		new_cpu = select_idle_sibling(p, prev_cpu, new_cpu);
> -
> -		if (want_affine)
> -			current->recent_used_cpu = cpu;
>  	}
>  	rcu_read_unlock();
>  
> -- 
> 2.26.2



More information about the linux-arm-kernel mailing list