Re: [PATCH 1/4 v4] sched/pelt: Move pelt related code in a dedicated file

From: Dietmar Eggemann
Date: Sun Apr 15 2018 - 09:29:48 EST


On 04/15/2018 02:16 PM, Vincent Guittot wrote:
On 15 April 2018 at 13:58, Dietmar Eggemann <dietmar.eggemann@xxxxxxx> wrote:
On 03/16/2018 12:25 PM, Vincent Guittot wrote:

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.


This would mean that we introduce function calls into the cfs scheduler
fast-path, something we avoided so far (e.g. the cpu and frequency
invariance hooks). Are we OK with that?

Quentin mentioned this already during v3 review back in December.

Yes and I hadn't seen any differences in the code size with the patch
which should have been the case if inline function where replaced by
function call

I see a diff (e.g. for arm64 defconfig):

6d626e0aaf91 - (HEAD -> tip/sched/core_rt_rq_util_tracking) sched/nohz: monitor rt utilization (2018-04-15 Vincent Guittot)
3111c6206f0c - cpufreq/schedutil: add rt utilization tracking (2018-04-15 Vincent Guittot)
62e103d266ed - sched/rt: add rt_rq utilization tracking (2018-04-15 Vincent Guittot)
8f78fef6b1a2 - sched/pelt: Move pelt related code in a dedicated file (2018-04-15 Vincent Guittot)
31e77c93e432 - (tip/sched/core_rt_rq_util_tracking_base) sched/fair: Update blocked load when newly idle (2018-03-09 Vincent Guittot)

deggeman-mac:/opt/git/kernel_org:tip/sched/core_rt_rq_util_tracking$ size vmlinux
text data bss dec hex filename
11286856 6154896 410296 17852048 1106690 vmlinux

versus:

31e77c93e432 - (HEAD -> tip/sched/core_rt_rq_util_tracking_base) sched/fair: Update blocked load when ne$
ly idle (2018-03-09 Vincent Guittot)

deggeman-mac:/opt/git/kernel_org:tip/sched/core_rt_rq_util_tracking_base$ size vmlinux
text data bss dec hex filename
11295048 6154896 410296 17860240 1108690 vmlinux

So I assume that in kernel/sched/fair.o:

U __update_load_avg_blocked_se
U __update_load_avg_cfs_rq
U __update_load_avg_se

are function calls now.