All of lore.kernel.org
 help / color / mirror / Atom feed
From: Chengming Zhou <zhouchengming@bytedance.com>
To: kernel test robot <lkp@intel.com>,
	mingo@redhat.com, peterz@infradead.org, juri.lelli@redhat.com,
	vincent.guittot@linaro.org, dietmar.eggemann@arm.com,
	rostedt@goodmis.org, bsegall@google.com, mgorman@suse.de,
	bristot@redhat.com, vschneid@redhat.com, odin@uged.al
Cc: kbuild-all@lists.01.org, linux-kernel@vger.kernel.org,
	duanxiongchun@bytedance.com, songmuchun@bytedance.com
Subject: Re: [External] Re: [PATCH v2 2/2] sched/fair: optimize and simplify rq leaf_cfs_rq_list
Date: Thu, 26 May 2022 18:25:03 +0800	[thread overview]
Message-ID: <843a2292-b62d-a2cf-e87c-e01d920721ef@bytedance.com> (raw)
In-Reply-To: <202205261617.YUT1ixQ8-lkp@intel.com>

On 2022/5/26 16:53, kernel test robot wrote:
> Hi Chengming,
> 
> Thank you for the patch! Yet something to improve:
> 
> [auto build test ERROR on tip/sched/core]
> [also build test ERROR on tip/master linus/master v5.18 next-20220525]
> [If your patch is applied to the wrong git tree, kindly drop us a note.
> And when submitting patch, we suggest to use '--base' as documented in
> https://git-scm.com/docs/git-format-patch]
> 
> url:    https://github.com/intel-lab-lkp/linux/commits/Chengming-Zhou/sched-fair-optimize-and-simplify-rq-leaf_cfs_rq_list/20220526-151850
> base:   https://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git 991d8d8142cad94f9c5c05db25e67fa83d6f772a
> config: powerpc-allnoconfig (https://download.01.org/0day-ci/archive/20220526/202205261617.YUT1ixQ8-lkp@intel.com/config)
> compiler: powerpc-linux-gcc (GCC) 11.3.0
> reproduce (this is a W=1 build):
>         wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
>         chmod +x ~/bin/make.cross
>         # https://github.com/intel-lab-lkp/linux/commit/cb2b1810aeb3f8f290a932f3e625ab9df1110054
>         git remote add linux-review https://github.com/intel-lab-lkp/linux
>         git fetch --no-tags linux-review Chengming-Zhou/sched-fair-optimize-and-simplify-rq-leaf_cfs_rq_list/20220526-151850
>         git checkout cb2b1810aeb3f8f290a932f3e625ab9df1110054
>         # save the config file
>         mkdir build_dir && cp config build_dir/.config
>         COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.3.0 make.cross W=1 O=build_dir ARCH=powerpc SHELL=/bin/bash kernel/sched/
> 
> If you fix the issue, kindly add following tag where applicable
> Reported-by: kernel test robot <lkp@intel.com>

Thanks, will fix !CONFIG_FAIR_GROUP_SCHED build next version.

> 
> All errors (new ones prefixed by >>):
> 
>    kernel/sched/fair.c:645:5: warning: no previous prototype for 'sched_update_scaling' [-Wmissing-prototypes]
>      645 | int sched_update_scaling(void)
>          |     ^~~~~~~~~~~~~~~~~~~~
>    kernel/sched/fair.c: In function 'enqueue_entity':
>>> kernel/sched/fair.c:4343:22: error: implicit declaration of function 'throttled_hierarchy' [-Werror=implicit-function-declaration]
>     4343 |                 if (!throttled_hierarchy(cfs_rq))
>          |                      ^~~~~~~~~~~~~~~~~~~
>    kernel/sched/fair.c: At top level:
>>> kernel/sched/fair.c:5484:19: error: static declaration of 'throttled_hierarchy' follows non-static declaration
>     5484 | static inline int throttled_hierarchy(struct cfs_rq *cfs_rq)
>          |                   ^~~~~~~~~~~~~~~~~~~
>    kernel/sched/fair.c:4343:22: note: previous implicit declaration of 'throttled_hierarchy' with type 'int()'
>     4343 |                 if (!throttled_hierarchy(cfs_rq))
>          |                      ^~~~~~~~~~~~~~~~~~~
>    kernel/sched/fair.c:5495:6: warning: no previous prototype for 'init_cfs_bandwidth' [-Wmissing-prototypes]
>     5495 | void init_cfs_bandwidth(struct cfs_bandwidth *cfs_b) {}
>          |      ^~~~~~~~~~~~~~~~~~
>    kernel/sched/fair.c:11654:6: warning: no previous prototype for 'free_fair_sched_group' [-Wmissing-prototypes]
>    11654 | void free_fair_sched_group(struct task_group *tg) { }
>          |      ^~~~~~~~~~~~~~~~~~~~~
>    kernel/sched/fair.c:11656:5: warning: no previous prototype for 'alloc_fair_sched_group' [-Wmissing-prototypes]
>    11656 | int alloc_fair_sched_group(struct task_group *tg, struct task_group *parent)
>          |     ^~~~~~~~~~~~~~~~~~~~~~
>    kernel/sched/fair.c:11661:6: warning: no previous prototype for 'online_fair_sched_group' [-Wmissing-prototypes]
>    11661 | void online_fair_sched_group(struct task_group *tg) { }
>          |      ^~~~~~~~~~~~~~~~~~~~~~~
>    kernel/sched/fair.c:11663:6: warning: no previous prototype for 'unregister_fair_sched_group' [-Wmissing-prototypes]
>    11663 | void unregister_fair_sched_group(struct task_group *tg) { }
>          |      ^~~~~~~~~~~~~~~~~~~~~~~~~~~
>    cc1: some warnings being treated as errors
> 
> 
> vim +/throttled_hierarchy +4343 kernel/sched/fair.c
> 
>   4263	
>   4264	/*
>   4265	 * MIGRATION
>   4266	 *
>   4267	 *	dequeue
>   4268	 *	  update_curr()
>   4269	 *	    update_min_vruntime()
>   4270	 *	  vruntime -= min_vruntime
>   4271	 *
>   4272	 *	enqueue
>   4273	 *	  update_curr()
>   4274	 *	    update_min_vruntime()
>   4275	 *	  vruntime += min_vruntime
>   4276	 *
>   4277	 * this way the vruntime transition between RQs is done when both
>   4278	 * min_vruntime are up-to-date.
>   4279	 *
>   4280	 * WAKEUP (remote)
>   4281	 *
>   4282	 *	->migrate_task_rq_fair() (p->state == TASK_WAKING)
>   4283	 *	  vruntime -= min_vruntime
>   4284	 *
>   4285	 *	enqueue
>   4286	 *	  update_curr()
>   4287	 *	    update_min_vruntime()
>   4288	 *	  vruntime += min_vruntime
>   4289	 *
>   4290	 * this way we don't have the most up-to-date min_vruntime on the originating
>   4291	 * CPU and an up-to-date min_vruntime on the destination CPU.
>   4292	 */
>   4293	
>   4294	static void
>   4295	enqueue_entity(struct cfs_rq *cfs_rq, struct sched_entity *se, int flags)
>   4296	{
>   4297		bool renorm = !(flags & ENQUEUE_WAKEUP) || (flags & ENQUEUE_MIGRATED);
>   4298		bool curr = cfs_rq->curr == se;
>   4299	
>   4300		/*
>   4301		 * If we're the current task, we must renormalise before calling
>   4302		 * update_curr().
>   4303		 */
>   4304		if (renorm && curr)
>   4305			se->vruntime += cfs_rq->min_vruntime;
>   4306	
>   4307		update_curr(cfs_rq);
>   4308	
>   4309		/*
>   4310		 * Otherwise, renormalise after, such that we're placed at the current
>   4311		 * moment in time, instead of some random moment in the past. Being
>   4312		 * placed in the past could significantly boost this task to the
>   4313		 * fairness detriment of existing tasks.
>   4314		 */
>   4315		if (renorm && !curr)
>   4316			se->vruntime += cfs_rq->min_vruntime;
>   4317	
>   4318		/*
>   4319		 * When enqueuing a sched_entity, we must:
>   4320		 *   - Update loads to have both entity and cfs_rq synced with now.
>   4321		 *   - Add its load to cfs_rq->runnable_avg
>   4322		 *   - For group_entity, update its weight to reflect the new share of
>   4323		 *     its group cfs_rq
>   4324		 *   - Add its new weight to cfs_rq->load.weight
>   4325		 */
>   4326		update_load_avg(cfs_rq, se, UPDATE_TG | DO_ATTACH);
>   4327		se_update_runnable(se);
>   4328		update_cfs_group(se);
>   4329		account_entity_enqueue(cfs_rq, se);
>   4330	
>   4331		if (flags & ENQUEUE_WAKEUP)
>   4332			place_entity(cfs_rq, se, 0);
>   4333	
>   4334		check_schedstat_required();
>   4335		update_stats_enqueue_fair(cfs_rq, se, flags);
>   4336		check_spread(cfs_rq, se);
>   4337		if (!curr)
>   4338			__enqueue_entity(cfs_rq, se);
>   4339		se->on_rq = 1;
>   4340	
>   4341		if (cfs_rq->nr_running == 1) {
>   4342			check_enqueue_throttle(cfs_rq);
>> 4343			if (!throttled_hierarchy(cfs_rq))
>   4344				list_add_leaf_cfs_rq(cfs_rq);
>   4345		}
>   4346	}
>   4347	
> 

WARNING: multiple messages have this Message-ID (diff)
From: Chengming Zhou <zhouchengming@bytedance.com>
To: kbuild-all@lists.01.org
Subject: Re: [External] Re: [PATCH v2 2/2] sched/fair: optimize and simplify rq leaf_cfs_rq_list
Date: Thu, 26 May 2022 18:25:03 +0800	[thread overview]
Message-ID: <843a2292-b62d-a2cf-e87c-e01d920721ef@bytedance.com> (raw)
In-Reply-To: <202205261617.YUT1ixQ8-lkp@intel.com>

[-- Attachment #1: Type: text/plain, Size: 7215 bytes --]

On 2022/5/26 16:53, kernel test robot wrote:
> Hi Chengming,
> 
> Thank you for the patch! Yet something to improve:
> 
> [auto build test ERROR on tip/sched/core]
> [also build test ERROR on tip/master linus/master v5.18 next-20220525]
> [If your patch is applied to the wrong git tree, kindly drop us a note.
> And when submitting patch, we suggest to use '--base' as documented in
> https://git-scm.com/docs/git-format-patch]
> 
> url:    https://github.com/intel-lab-lkp/linux/commits/Chengming-Zhou/sched-fair-optimize-and-simplify-rq-leaf_cfs_rq_list/20220526-151850
> base:   https://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git 991d8d8142cad94f9c5c05db25e67fa83d6f772a
> config: powerpc-allnoconfig (https://download.01.org/0day-ci/archive/20220526/202205261617.YUT1ixQ8-lkp(a)intel.com/config)
> compiler: powerpc-linux-gcc (GCC) 11.3.0
> reproduce (this is a W=1 build):
>         wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
>         chmod +x ~/bin/make.cross
>         # https://github.com/intel-lab-lkp/linux/commit/cb2b1810aeb3f8f290a932f3e625ab9df1110054
>         git remote add linux-review https://github.com/intel-lab-lkp/linux
>         git fetch --no-tags linux-review Chengming-Zhou/sched-fair-optimize-and-simplify-rq-leaf_cfs_rq_list/20220526-151850
>         git checkout cb2b1810aeb3f8f290a932f3e625ab9df1110054
>         # save the config file
>         mkdir build_dir && cp config build_dir/.config
>         COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.3.0 make.cross W=1 O=build_dir ARCH=powerpc SHELL=/bin/bash kernel/sched/
> 
> If you fix the issue, kindly add following tag where applicable
> Reported-by: kernel test robot <lkp@intel.com>

Thanks, will fix !CONFIG_FAIR_GROUP_SCHED build next version.

> 
> All errors (new ones prefixed by >>):
> 
>    kernel/sched/fair.c:645:5: warning: no previous prototype for 'sched_update_scaling' [-Wmissing-prototypes]
>      645 | int sched_update_scaling(void)
>          |     ^~~~~~~~~~~~~~~~~~~~
>    kernel/sched/fair.c: In function 'enqueue_entity':
>>> kernel/sched/fair.c:4343:22: error: implicit declaration of function 'throttled_hierarchy' [-Werror=implicit-function-declaration]
>     4343 |                 if (!throttled_hierarchy(cfs_rq))
>          |                      ^~~~~~~~~~~~~~~~~~~
>    kernel/sched/fair.c: At top level:
>>> kernel/sched/fair.c:5484:19: error: static declaration of 'throttled_hierarchy' follows non-static declaration
>     5484 | static inline int throttled_hierarchy(struct cfs_rq *cfs_rq)
>          |                   ^~~~~~~~~~~~~~~~~~~
>    kernel/sched/fair.c:4343:22: note: previous implicit declaration of 'throttled_hierarchy' with type 'int()'
>     4343 |                 if (!throttled_hierarchy(cfs_rq))
>          |                      ^~~~~~~~~~~~~~~~~~~
>    kernel/sched/fair.c:5495:6: warning: no previous prototype for 'init_cfs_bandwidth' [-Wmissing-prototypes]
>     5495 | void init_cfs_bandwidth(struct cfs_bandwidth *cfs_b) {}
>          |      ^~~~~~~~~~~~~~~~~~
>    kernel/sched/fair.c:11654:6: warning: no previous prototype for 'free_fair_sched_group' [-Wmissing-prototypes]
>    11654 | void free_fair_sched_group(struct task_group *tg) { }
>          |      ^~~~~~~~~~~~~~~~~~~~~
>    kernel/sched/fair.c:11656:5: warning: no previous prototype for 'alloc_fair_sched_group' [-Wmissing-prototypes]
>    11656 | int alloc_fair_sched_group(struct task_group *tg, struct task_group *parent)
>          |     ^~~~~~~~~~~~~~~~~~~~~~
>    kernel/sched/fair.c:11661:6: warning: no previous prototype for 'online_fair_sched_group' [-Wmissing-prototypes]
>    11661 | void online_fair_sched_group(struct task_group *tg) { }
>          |      ^~~~~~~~~~~~~~~~~~~~~~~
>    kernel/sched/fair.c:11663:6: warning: no previous prototype for 'unregister_fair_sched_group' [-Wmissing-prototypes]
>    11663 | void unregister_fair_sched_group(struct task_group *tg) { }
>          |      ^~~~~~~~~~~~~~~~~~~~~~~~~~~
>    cc1: some warnings being treated as errors
> 
> 
> vim +/throttled_hierarchy +4343 kernel/sched/fair.c
> 
>   4263	
>   4264	/*
>   4265	 * MIGRATION
>   4266	 *
>   4267	 *	dequeue
>   4268	 *	  update_curr()
>   4269	 *	    update_min_vruntime()
>   4270	 *	  vruntime -= min_vruntime
>   4271	 *
>   4272	 *	enqueue
>   4273	 *	  update_curr()
>   4274	 *	    update_min_vruntime()
>   4275	 *	  vruntime += min_vruntime
>   4276	 *
>   4277	 * this way the vruntime transition between RQs is done when both
>   4278	 * min_vruntime are up-to-date.
>   4279	 *
>   4280	 * WAKEUP (remote)
>   4281	 *
>   4282	 *	->migrate_task_rq_fair() (p->state == TASK_WAKING)
>   4283	 *	  vruntime -= min_vruntime
>   4284	 *
>   4285	 *	enqueue
>   4286	 *	  update_curr()
>   4287	 *	    update_min_vruntime()
>   4288	 *	  vruntime += min_vruntime
>   4289	 *
>   4290	 * this way we don't have the most up-to-date min_vruntime on the originating
>   4291	 * CPU and an up-to-date min_vruntime on the destination CPU.
>   4292	 */
>   4293	
>   4294	static void
>   4295	enqueue_entity(struct cfs_rq *cfs_rq, struct sched_entity *se, int flags)
>   4296	{
>   4297		bool renorm = !(flags & ENQUEUE_WAKEUP) || (flags & ENQUEUE_MIGRATED);
>   4298		bool curr = cfs_rq->curr == se;
>   4299	
>   4300		/*
>   4301		 * If we're the current task, we must renormalise before calling
>   4302		 * update_curr().
>   4303		 */
>   4304		if (renorm && curr)
>   4305			se->vruntime += cfs_rq->min_vruntime;
>   4306	
>   4307		update_curr(cfs_rq);
>   4308	
>   4309		/*
>   4310		 * Otherwise, renormalise after, such that we're placed at the current
>   4311		 * moment in time, instead of some random moment in the past. Being
>   4312		 * placed in the past could significantly boost this task to the
>   4313		 * fairness detriment of existing tasks.
>   4314		 */
>   4315		if (renorm && !curr)
>   4316			se->vruntime += cfs_rq->min_vruntime;
>   4317	
>   4318		/*
>   4319		 * When enqueuing a sched_entity, we must:
>   4320		 *   - Update loads to have both entity and cfs_rq synced with now.
>   4321		 *   - Add its load to cfs_rq->runnable_avg
>   4322		 *   - For group_entity, update its weight to reflect the new share of
>   4323		 *     its group cfs_rq
>   4324		 *   - Add its new weight to cfs_rq->load.weight
>   4325		 */
>   4326		update_load_avg(cfs_rq, se, UPDATE_TG | DO_ATTACH);
>   4327		se_update_runnable(se);
>   4328		update_cfs_group(se);
>   4329		account_entity_enqueue(cfs_rq, se);
>   4330	
>   4331		if (flags & ENQUEUE_WAKEUP)
>   4332			place_entity(cfs_rq, se, 0);
>   4333	
>   4334		check_schedstat_required();
>   4335		update_stats_enqueue_fair(cfs_rq, se, flags);
>   4336		check_spread(cfs_rq, se);
>   4337		if (!curr)
>   4338			__enqueue_entity(cfs_rq, se);
>   4339		se->on_rq = 1;
>   4340	
>   4341		if (cfs_rq->nr_running == 1) {
>   4342			check_enqueue_throttle(cfs_rq);
>> 4343			if (!throttled_hierarchy(cfs_rq))
>   4344				list_add_leaf_cfs_rq(cfs_rq);
>   4345		}
>   4346	}
>   4347	
> 

  reply	other threads:[~2022-05-26 10:25 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-05-26  7:13 [PATCH v2 0/2] sched/fair: optimize and simplify rq leaf_cfs_rq_list Chengming Zhou
2022-05-26  7:13 ` [PATCH v2 1/2] sched/fair: fix propagate during synchronous attach/detach Chengming Zhou
2022-05-26  7:13 ` [PATCH v2 2/2] sched/fair: optimize and simplify rq leaf_cfs_rq_list Chengming Zhou
2022-05-26  8:53   ` kernel test robot
2022-05-26 10:25     ` Chengming Zhou [this message]
2022-05-26 10:25       ` [External] " Chengming Zhou
2022-05-26 10:46   ` kernel test robot

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=843a2292-b62d-a2cf-e87c-e01d920721ef@bytedance.com \
    --to=zhouchengming@bytedance.com \
    --cc=bristot@redhat.com \
    --cc=bsegall@google.com \
    --cc=dietmar.eggemann@arm.com \
    --cc=duanxiongchun@bytedance.com \
    --cc=juri.lelli@redhat.com \
    --cc=kbuild-all@lists.01.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=lkp@intel.com \
    --cc=mgorman@suse.de \
    --cc=mingo@redhat.com \
    --cc=odin@uged.al \
    --cc=peterz@infradead.org \
    --cc=rostedt@goodmis.org \
    --cc=songmuchun@bytedance.com \
    --cc=vincent.guittot@linaro.org \
    --cc=vschneid@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.