mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 02:30:34 +02:00 
			
		
		
		
	sched: Track group sched_entity usage contributions
Add usage contribution tracking for group entities. Unlike se->avg.load_avg_contrib, se->avg.utilization_avg_contrib for group entities is the sum of se->avg.utilization_avg_contrib for all entities on the group runqueue. It is _not_ influenced in any way by the task group h_load. Hence it is representing the actual cpu usage of the group, not its intended load contribution which may differ significantly from the utilization on lightly utilized systems. Signed-off-by: Morten Rasmussen <morten.rasmussen@arm.com> Signed-off-by: Vincent Guittot <vincent.guittot@linaro.org> Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org> Cc: Paul Turner <pjt@google.com> Cc: Ben Segall <bsegall@google.com> Cc: Ben Segall <bsegall@google.com> Cc: Morten.Rasmussen@arm.com Cc: Paul Turner <pjt@google.com> Cc: dietmar.eggemann@arm.com Cc: efault@gmx.de Cc: kamalesh@linux.vnet.ibm.com Cc: linaro-kernel@lists.linaro.org Cc: nicolas.pitre@linaro.org Cc: preeti@linux.vnet.ibm.com Cc: riel@redhat.com Link: http://lkml.kernel.org/r/1425052454-25797-3-git-send-email-vincent.guittot@linaro.org Signed-off-by: Ingo Molnar <mingo@kernel.org>
This commit is contained in:
		
							parent
							
								
									36ee28e45d
								
							
						
					
					
						commit
						21f4486630
					
				
					 2 changed files with 5 additions and 0 deletions
				
			
		| 
						 | 
					@ -94,8 +94,10 @@ static void print_cfs_group_stats(struct seq_file *m, int cpu, struct task_group
 | 
				
			||||||
	P(se->load.weight);
 | 
						P(se->load.weight);
 | 
				
			||||||
#ifdef CONFIG_SMP
 | 
					#ifdef CONFIG_SMP
 | 
				
			||||||
	P(se->avg.runnable_avg_sum);
 | 
						P(se->avg.runnable_avg_sum);
 | 
				
			||||||
 | 
						P(se->avg.running_avg_sum);
 | 
				
			||||||
	P(se->avg.avg_period);
 | 
						P(se->avg.avg_period);
 | 
				
			||||||
	P(se->avg.load_avg_contrib);
 | 
						P(se->avg.load_avg_contrib);
 | 
				
			||||||
 | 
						P(se->avg.utilization_avg_contrib);
 | 
				
			||||||
	P(se->avg.decay_count);
 | 
						P(se->avg.decay_count);
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
#undef PN
 | 
					#undef PN
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -2747,6 +2747,9 @@ static long __update_entity_utilization_avg_contrib(struct sched_entity *se)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (entity_is_task(se))
 | 
						if (entity_is_task(se))
 | 
				
			||||||
		__update_task_entity_utilization(se);
 | 
							__update_task_entity_utilization(se);
 | 
				
			||||||
 | 
						else
 | 
				
			||||||
 | 
							se->avg.utilization_avg_contrib =
 | 
				
			||||||
 | 
										group_cfs_rq(se)->utilization_load_avg;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return se->avg.utilization_avg_contrib - old_contrib;
 | 
						return se->avg.utilization_avg_contrib - old_contrib;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue