mirror of
				https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux
				synced 2025-11-05 01:03:37 +10:00 
			
		
		
		
	[PATCH] sched: activate SCHED BATCH expired
To increase the strength of SCHED_BATCH as a scheduling hint we can activate batch tasks on the expired array since by definition they are latency insensitive tasks. Signed-off-by: Con Kolivas <kernel@kolivas.org> Acked-by: Ingo Molnar <mingo@elte.hu> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
		
							parent
							
								
									7c4bb1f9b3
								
							
						
					
					
						commit
						d425b274ba
					
				@ -484,6 +484,7 @@ struct signal_struct {
 | 
			
		||||
#define MAX_PRIO		(MAX_RT_PRIO + 40)
 | 
			
		||||
 | 
			
		||||
#define rt_task(p)		(unlikely((p)->prio < MAX_RT_PRIO))
 | 
			
		||||
#define batch_task(p)		(unlikely((p)->policy == SCHED_BATCH))
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Some day this will be a full-fledged user tracking system..
 | 
			
		||||
 | 
			
		||||
@ -667,9 +667,13 @@ static int effective_prio(task_t *p)
 | 
			
		||||
/*
 | 
			
		||||
 * __activate_task - move a task to the runqueue.
 | 
			
		||||
 */
 | 
			
		||||
static inline void __activate_task(task_t *p, runqueue_t *rq)
 | 
			
		||||
static void __activate_task(task_t *p, runqueue_t *rq)
 | 
			
		||||
{
 | 
			
		||||
	enqueue_task(p, rq->active);
 | 
			
		||||
	prio_array_t *target = rq->active;
 | 
			
		||||
 | 
			
		||||
	if (batch_task(p))
 | 
			
		||||
		target = rq->expired;
 | 
			
		||||
	enqueue_task(p, target);
 | 
			
		||||
	rq->nr_running++;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -688,7 +692,7 @@ static int recalc_task_prio(task_t *p, unsigned long long now)
 | 
			
		||||
	unsigned long long __sleep_time = now - p->timestamp;
 | 
			
		||||
	unsigned long sleep_time;
 | 
			
		||||
 | 
			
		||||
	if (unlikely(p->policy == SCHED_BATCH))
 | 
			
		||||
	if (batch_task(p))
 | 
			
		||||
		sleep_time = 0;
 | 
			
		||||
	else {
 | 
			
		||||
		if (__sleep_time > NS_MAX_SLEEP_AVG)
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user