Vincent Guittot 
							
						 
					 
					
						
						
						
						
							
						
						
							523e979d31 
							
						 
					 
					
						
						
							
							sched/core: Use PELT for scale_rt_capacity()  
						
						... 
						
						
						
						The utilization of the CPU by RT, DL and IRQs are now tracked with
PELT so we can use these metrics instead of rt_avg to evaluate the remaining
capacity available for CFS class.
scale_rt_capacity() behavior has been changed and now returns the remaining
capacity available for CFS instead of a scaling factor because RT, DL and
IRQ provide now absolute utilization value.
The same formula as schedutil is used:
  IRQ util_avg + (1 - IRQ util_avg / max capacity ) * /Sum rq util_avg
but the implementation is different because it doesn't return the same value
and doesn't benefit of the same optimization.
Signed-off-by: Vincent Guittot <vincent.guittot@linaro.org>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Morten.Rasmussen@arm.com 
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: claudio@evidence.eu.com 
Cc: daniel.lezcano@linaro.org 
Cc: dietmar.eggemann@arm.com 
Cc: joel@joelfernandes.org 
Cc: juri.lelli@redhat.com 
Cc: luca.abeni@santannapisa.it 
Cc: patrick.bellasi@arm.com 
Cc: quentin.perret@arm.com 
Cc: rjw@rjwysocki.net 
Cc: valentin.schneider@arm.com 
Cc: viresh.kumar@linaro.org 
Link: http://lkml.kernel.org/r/1530200714-4504-10-git-send-email-vincent.guittot@linaro.org 
Signed-off-by: Ingo Molnar <mingo@kernel.org> 
						
					 
					
						2018-07-16 00:16:25 +02:00 
						 
				 
			
				
					
						
							
							
								Vincent Guittot 
							
						 
					 
					
						
						
						
						
							
						
						
							91c27493e7 
							
						 
					 
					
						
						
							
							sched/irq: Add IRQ utilization tracking  
						
						... 
						
						
						
						interrupt and steal time are the only remaining activities tracked by
rt_avg. Like for sched classes, we can use PELT to track their average
utilization of the CPU. But unlike sched class, we don't track when
entering/leaving interrupt; Instead, we take into account the time spent
under interrupt context when we update rqs' clock (rq_clock_task).
This also means that we have to decay the normal context time and account
for interrupt time during the update.
That's also important to note that because:
  rq_clock == rq_clock_task + interrupt time
and rq_clock_task is used by a sched class to compute its utilization, the
util_avg of a sched class only reflects the utilization of the time spent
in normal context and not of the whole time of the CPU. The utilization of
interrupt gives an more accurate level of utilization of CPU.
The CPU utilization is:
  avg_irq + (1 - avg_irq / max capacity) * /Sum avg_rq
Most of the time, avg_irq is small and neglictible so the use of the
approximation CPU utilization = /Sum avg_rq was enough.
Signed-off-by: Vincent Guittot <vincent.guittot@linaro.org>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Morten.Rasmussen@arm.com 
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: claudio@evidence.eu.com 
Cc: daniel.lezcano@linaro.org 
Cc: dietmar.eggemann@arm.com 
Cc: joel@joelfernandes.org 
Cc: juri.lelli@redhat.com 
Cc: luca.abeni@santannapisa.it 
Cc: patrick.bellasi@arm.com 
Cc: quentin.perret@arm.com 
Cc: rjw@rjwysocki.net 
Cc: valentin.schneider@arm.com 
Cc: viresh.kumar@linaro.org 
Link: http://lkml.kernel.org/r/1530200714-4504-7-git-send-email-vincent.guittot@linaro.org 
Signed-off-by: Ingo Molnar <mingo@kernel.org> 
						
					 
					
						2018-07-15 23:51:21 +02:00 
						 
				 
			
				
					
						
							
							
								Vincent Guittot 
							
						 
					 
					
						
						
						
						
							
						
						
							3727e0e163 
							
						 
					 
					
						
						
							
							sched/dl: Add dl_rq utilization tracking  
						
						... 
						
						
						
						Similarly to what happens with RT tasks, CFS tasks can be preempted by DL
tasks and the CFS's utilization might no longer describes the real
utilization level.
Current DL bandwidth reflects the requirements to meet deadline when tasks are
enqueued but not the current utilization of the DL sched class. We track
DL class utilization to estimate the system utilization.
Signed-off-by: Vincent Guittot <vincent.guittot@linaro.org>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Morten.Rasmussen@arm.com 
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: claudio@evidence.eu.com 
Cc: daniel.lezcano@linaro.org 
Cc: dietmar.eggemann@arm.com 
Cc: joel@joelfernandes.org 
Cc: juri.lelli@redhat.com 
Cc: luca.abeni@santannapisa.it 
Cc: patrick.bellasi@arm.com 
Cc: quentin.perret@arm.com 
Cc: rjw@rjwysocki.net 
Cc: valentin.schneider@arm.com 
Cc: viresh.kumar@linaro.org 
Link: http://lkml.kernel.org/r/1530200714-4504-5-git-send-email-vincent.guittot@linaro.org 
Signed-off-by: Ingo Molnar <mingo@kernel.org> 
						
					 
					
						2018-07-15 23:51:20 +02:00 
						 
				 
			
				
					
						
							
							
								Vincent Guittot 
							
						 
					 
					
						
						
						
						
							
						
						
							371bf42732 
							
						 
					 
					
						
						
							
							sched/rt: Add rt_rq utilization tracking  
						
						... 
						
						
						
						schedutil governor relies on cfs_rq's util_avg to choose the OPP when CFS
tasks are running. When the CPU is overloaded by CFS and RT tasks, CFS tasks
are preempted by RT tasks and in this case util_avg reflects the remaining
capacity but not what CFS want to use. In such case, schedutil can select a
lower OPP whereas the CPU is overloaded. In order to have a more accurate
view of the utilization of the CPU, we track the utilization of RT tasks.
Only util_avg is correctly tracked but not load_avg and runnable_load_avg
which are useless for rt_rq.
rt_rq uses rq_clock_task and cfs_rq uses cfs_rq_clock_task but they are
the same at the root group level, so the PELT windows of the util_sum are
aligned.
Signed-off-by: Vincent Guittot <vincent.guittot@linaro.org>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Morten.Rasmussen@arm.com 
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: claudio@evidence.eu.com 
Cc: daniel.lezcano@linaro.org 
Cc: dietmar.eggemann@arm.com 
Cc: joel@joelfernandes.org 
Cc: juri.lelli@redhat.com 
Cc: luca.abeni@santannapisa.it 
Cc: patrick.bellasi@arm.com 
Cc: quentin.perret@arm.com 
Cc: rjw@rjwysocki.net 
Cc: valentin.schneider@arm.com 
Cc: viresh.kumar@linaro.org 
Link: http://lkml.kernel.org/r/1530200714-4504-3-git-send-email-vincent.guittot@linaro.org 
Signed-off-by: Ingo Molnar <mingo@kernel.org> 
						
					 
					
						2018-07-15 23:51:20 +02:00 
						 
				 
			
				
					
						
							
							
								Vincent Guittot 
							
						 
					 
					
						
						
						
						
							
						
						
							c079629862 
							
						 
					 
					
						
						
							
							sched/pelt: Move PELT related code in a dedicated file  
						
						... 
						
						
						
						We want to track rt_rq's utilization as a part of the estimation of the
whole rq's utilization. This is necessary because rt tasks can steal
utilization to cfs tasks and make them lighter than they are.
As we want to use the same load tracking mecanism for both and prevent
useless dependency between cfs and rt code, PELT code is moved in a
dedicated file.
Signed-off-by: Vincent Guittot <vincent.guittot@linaro.org>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Morten.Rasmussen@arm.com 
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: claudio@evidence.eu.com 
Cc: daniel.lezcano@linaro.org 
Cc: dietmar.eggemann@arm.com 
Cc: joel@joelfernandes.org 
Cc: juri.lelli@redhat.com 
Cc: luca.abeni@santannapisa.it 
Cc: patrick.bellasi@arm.com 
Cc: quentin.perret@arm.com 
Cc: rjw@rjwysocki.net 
Cc: valentin.schneider@arm.com 
Cc: viresh.kumar@linaro.org 
Link: http://lkml.kernel.org/r/1530200714-4504-2-git-send-email-vincent.guittot@linaro.org 
Signed-off-by: Ingo Molnar <mingo@kernel.org> 
						
					 
					
						2018-07-15 23:51:20 +02:00