mirror of
				https://github.com/torvalds/linux.git
				synced 2025-10-31 16:48:26 +02:00 
			
		
		
		
	sched_ext: Skip per-CPU tasks in scx_bpf_reenqueue_local()
scx_bpf_reenqueue_local() can be invoked from ops.cpu_release() to give tasks that are queued to the local DSQ a chance to migrate to other CPUs, when a CPU is taken by a higher scheduling class. However, there is no point re-enqueuing tasks that can only run on that particular CPU, as they would simply be re-added to the same local DSQ without any benefit. Therefore, skip per-CPU tasks in scx_bpf_reenqueue_local(). Signed-off-by: Andrea Righi <arighi@nvidia.com> Signed-off-by: Tejun Heo <tj@kernel.org>
This commit is contained in:
		
							parent
							
								
									71d078803c
								
							
						
					
					
						commit
						97e13ecb02
					
				
					 1 changed files with 5 additions and 1 deletions
				
			
		|  | @ -6621,8 +6621,12 @@ __bpf_kfunc u32 scx_bpf_reenqueue_local(void) | |||
| 		 * CPUs disagree, they use %ENQUEUE_RESTORE which is bypassed to | ||||
| 		 * the current local DSQ for running tasks and thus are not | ||||
| 		 * visible to the BPF scheduler. | ||||
| 		 * | ||||
| 		 * Also skip re-enqueueing tasks that can only run on this | ||||
| 		 * CPU, as they would just be re-added to the same local | ||||
| 		 * DSQ without any benefit. | ||||
| 		 */ | ||||
| 		if (p->migration_pending) | ||||
| 		if (p->migration_pending || is_migration_disabled(p) || p->nr_cpus_allowed == 1) | ||||
| 			continue; | ||||
| 
 | ||||
| 		dispatch_dequeue(rq, p); | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue
	
	 Andrea Righi
						Andrea Righi