diff options
Diffstat (limited to 'kernel/sched.c')
| -rw-r--r-- | kernel/sched.c | 47 | 
1 files changed, 35 insertions, 12 deletions
| diff --git a/kernel/sched.c b/kernel/sched.c index 01f55ada3598..1b59e265273b 100644 --- a/kernel/sched.c +++ b/kernel/sched.c @@ -493,6 +493,7 @@ struct rt_rq {  #endif  #ifdef CONFIG_SMP  	unsigned long rt_nr_migratory; +	unsigned long rt_nr_total;  	int overloaded;  	struct plist_head pushable_tasks;  #endif @@ -2571,15 +2572,37 @@ static void __sched_fork(struct task_struct *p)  	p->se.avg_wakeup		= sysctl_sched_wakeup_granularity;  #ifdef CONFIG_SCHEDSTATS -	p->se.wait_start		= 0; -	p->se.sum_sleep_runtime		= 0; -	p->se.sleep_start		= 0; -	p->se.block_start		= 0; -	p->se.sleep_max			= 0; -	p->se.block_max			= 0; -	p->se.exec_max			= 0; -	p->se.slice_max			= 0; -	p->se.wait_max			= 0; +	p->se.wait_start			= 0; +	p->se.wait_max				= 0; +	p->se.wait_count			= 0; +	p->se.wait_sum				= 0; + +	p->se.sleep_start			= 0; +	p->se.sleep_max				= 0; +	p->se.sum_sleep_runtime			= 0; + +	p->se.block_start			= 0; +	p->se.block_max				= 0; +	p->se.exec_max				= 0; +	p->se.slice_max				= 0; + +	p->se.nr_migrations_cold		= 0; +	p->se.nr_failed_migrations_affine	= 0; +	p->se.nr_failed_migrations_running	= 0; +	p->se.nr_failed_migrations_hot		= 0; +	p->se.nr_forced_migrations		= 0; +	p->se.nr_forced2_migrations		= 0; + +	p->se.nr_wakeups			= 0; +	p->se.nr_wakeups_sync			= 0; +	p->se.nr_wakeups_migrate		= 0; +	p->se.nr_wakeups_local			= 0; +	p->se.nr_wakeups_remote			= 0; +	p->se.nr_wakeups_affine			= 0; +	p->se.nr_wakeups_affine_attempts	= 0; +	p->se.nr_wakeups_passive		= 0; +	p->se.nr_wakeups_idle			= 0; +  #endif  	INIT_LIST_HEAD(&p->rt.run_list); @@ -7266,6 +7289,7 @@ static void migrate_dead_tasks(unsigned int dead_cpu)  static void calc_global_load_remove(struct rq *rq)  {  	atomic_long_sub(rq->calc_load_active, &calc_load_tasks); +	rq->calc_load_active = 0;  }  #endif /* CONFIG_HOTPLUG_CPU */ @@ -7492,6 +7516,7 @@ migration_call(struct notifier_block *nfb, unsigned long action, void *hcpu)  		task_rq_unlock(rq, &flags);  		get_task_struct(p);  		cpu_rq(cpu)->migration_thread = p; +		rq->calc_load_update = calc_load_update;  		break;  	case CPU_ONLINE: @@ -7502,8 +7527,6 @@ migration_call(struct notifier_block *nfb, unsigned long action, void *hcpu)  		/* Update our root-domain */  		rq = cpu_rq(cpu);  		spin_lock_irqsave(&rq->lock, flags); -		rq->calc_load_update = calc_load_update; -		rq->calc_load_active = 0;  		if (rq->rd) {  			BUG_ON(!cpumask_test_cpu(cpu, rq->rd->span)); @@ -9074,7 +9097,7 @@ static void init_rt_rq(struct rt_rq *rt_rq, struct rq *rq)  #ifdef CONFIG_SMP  	rt_rq->rt_nr_migratory = 0;  	rt_rq->overloaded = 0; -	plist_head_init(&rq->rt.pushable_tasks, &rq->lock); +	plist_head_init(&rt_rq->pushable_tasks, &rq->lock);  #endif  	rt_rq->rt_time = 0; | 
