lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite for Android: free password hash cracker in your pocket
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:   Wed, 22 Mar 2017 17:55:35 +0100
From:   Vincent Guittot <vincent.guittot@...aro.org>
To:     Dietmar Eggemann <dietmar.eggemann@....com>
Cc:     Peter Zijlstra <peterz@...radead.org>,
        Ingo Molnar <mingo@...nel.org>,
        linux-kernel <linux-kernel@...r.kernel.org>,
        "Huang, Ying" <ying.huang@...el.com>
Subject: Re: [PATCH] sched/fair: Fix ftq noise bench regression

On 22 March 2017 at 17:22, Dietmar Eggemann <dietmar.eggemann@....com> wrote:
> On 22/03/17 09:22, Vincent Guittot wrote:
>> On 21 March 2017 at 18:46, Dietmar Eggemann <dietmar.eggemann@....com> wrote:
>>> Hi Vincent,
>>>
>>> On 17/03/17 13:47, Vincent Guittot wrote:
>>>
>>> [...]
>>>
>>>> Reported-by: ying.huang@...ux.intel.com
>>>> Signed-off-by: Vincent Guittot <vincent.guittot@...aro.org>
>>>> Fixes: 4e5160766fcc ("sched/fair: Propagate asynchrous detach")
>
> [...]
>
>>> Why not turn skip_blocked_update(se) into blocked_update_needed(cpu, cfs_rq)?
>>> Saves a couple of patch lines:
>>
>> Are you sure that we are saving some patch lines ?
>
> Sorry, it's actually the same :-)
>
>>
>> I tend to agree on the name and but not on parameters.
>> IMO, it's easier to understand the purpose of
>> blocked_update_needed(se) compared to blocked_update_needed(cpu,
>> cfs_rq)
>
> OK, so:
>
> -               /* Propagate pending load changes to the parent */
> -               if (cfs_rq->tg->se[cpu])
> +               /* Propagate pending load changes to the parent if any */
> +               if (blocked_update_needed(cfs_rq->tg->se[cpu]))
>
> and
>
> +static inline bool blocked_update_needed(struct sched_entity *se)
> +{
> +       struct cfs_rq *gcfs_rq = group_cfs_rq(se);

gcfs_rq can't be set before testing that se is not null

> +
> +       /* cfs_rq of a root task_group has no sched_entity counterpart */
> +       if (!se)
> +               return false;
> +
> +       /*
> +        * If sched_entity still have not null load or utilization, we
> have to
> +        * decay it.
> +        */
> ....
>
> Would make sense to me ...

Powered by blists - more mailing lists