mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 02:30:34 +02:00 
			
		
		
		
	[PATCH] sched: improve efficiency of sched_fork()
Problem: sched_fork() has always called scheduler_tick() in some (unlikely) circumstances in order to update the current task in light of those circumstances. It has always been the case that the work done by scheduler_tick() was more than was required to handle the problem in hand but no harm was done except for the waste of a few CPU cycles. However, the splitting of scheduler_tick() into two procedures in 2.6.20-rc1 enables the wasted cycles to be saved as the new procedure task_running_tick() does all the work that is required to rectify the problem being handled. Solution: Replace the call to scheduler_tick() in sched_fork() with a call to task_running_tick(). Signed-off-by: Peter Williams <pwil3058@bigpond.com.au> Acked-by: Ingo Molnar <mingo@elte.hu> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
		
							parent
							
								
									136f1e7a8c
								
							
						
					
					
						commit
						bc947631d1
					
				
					 1 changed files with 2 additions and 1 deletions
				
			
		| 
						 | 
				
			
			@ -1567,6 +1567,7 @@ int fastcall wake_up_state(struct task_struct *p, unsigned int state)
 | 
			
		|||
	return try_to_wake_up(p, state, 0);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void task_running_tick(struct rq *rq, struct task_struct *p);
 | 
			
		||||
/*
 | 
			
		||||
 * Perform scheduler related setup for a newly forked process p.
 | 
			
		||||
 * p is forked by current.
 | 
			
		||||
| 
						 | 
				
			
			@ -1627,7 +1628,7 @@ void fastcall sched_fork(struct task_struct *p, int clone_flags)
 | 
			
		|||
		 * runqueue lock is not a problem.
 | 
			
		||||
		 */
 | 
			
		||||
		current->time_slice = 1;
 | 
			
		||||
		scheduler_tick();
 | 
			
		||||
		task_running_tick(cpu_rq(cpu), current);
 | 
			
		||||
	}
 | 
			
		||||
	local_irq_enable();
 | 
			
		||||
	put_cpu();
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue