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: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:   Mon, 22 Feb 2021 11:36:03 +0000
From:   Vincent Donnefort <vincent.donnefort@....com>
To:     Quentin Perret <qperret@...gle.com>
Cc:     peterz@...radead.org, mingo@...hat.com, vincent.guittot@...aro.org,
        dietmar.eggemann@....com, linux-kernel@...r.kernel.org,
        patrick.bellasi@...bug.net, valentin.schneider@....com
Subject: Re: [PATCH] sched/fair: Fix task utilization accountability in
 cpu_util_next()

Hi Quentin,

On Mon, Feb 22, 2021 at 10:11:03AM +0000, Quentin Perret wrote:
> Hey Vincent,
> 
> On Monday 22 Feb 2021 at 09:54:01 (+0000), vincent.donnefort@....com wrote:
> > From: Vincent Donnefort <vincent.donnefort@....com>
> > 
> > Currently, cpu_util_next() estimates the CPU utilization as follows:
> > 
> >   max(cpu_util + task_util,
> >       cpu_util_est + task_util_est)
> 
> s/task_util_est/_task_util_est
> 
> This is an important difference.
> 
> > 
> > This is an issue when making a comparison between CPUs, as the task
> > contribution can be either:
> > 
> >   (1) task_util_est, on a mostly idle CPU, where cpu_util is close to 0
> >       and task_util_est > cpu_util.
> >   (2) task_util, on a mostly busy CPU, where cpu_util > task_util_est.
> 
> I don't understand how this is an issue, this is by design with util-est
> no?
> 
> Note that cpu_util_next() tries to accurately predict what cpu_util(@cpu)
> will be once @p is enqueued on @dst_cpu. There should be no policy
> decision here, we just reproduce the enqueue aggreagation -- see
> util_est_enqueue() and cpu_util().
> 
> Could you please give an example where you think cpu_util_next()
> computes the wrong value?

Here's with real life numbers.

The task: util_avg=3 (1) util_est=11 (2)

pd0 (CPU-0, CPU-1, CPU-2)

 cpu_util_next(CPU-0, NULL): 7
 cpu_util_next(CPU-1, NULL): 3
 cpu_util_next(CPU-2, NULL): 0 <- Most capacity, try to place task here.

 cpu_util_next(CPU-2, task): 0 + 11 (2)


pd1 (CPU-3):

 cpu_util_next(CPU-3, NULL): 77

 cpu_util_next(CPU-3, task): 77 + 3 (1)


On pd0, the task contribution is 11. On pd1, it is 3. When computing the energy
deltas, pd0's is likely to be higher than pd1's, only because the task
contribution is higher for one comparison than the other.

-- 
Vincent

> 
> Thanks,
> Quentin

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ