Received: by 2002:a05:6a10:f3d0:0:0:0:0 with SMTP id a16csp5335305pxv; Wed, 7 Jul 2021 01:02:43 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwxHIS4sdKr5V8nWgjjBHC4gjzQ3LMfxARHzpP27U9vJAEZf9qlOU0ZzyCKma0sBRsESMKj X-Received: by 2002:a17:906:3919:: with SMTP id f25mr1685046eje.190.1625644963503; Wed, 07 Jul 2021 01:02:43 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1625644963; cv=none; d=google.com; s=arc-20160816; b=OW6sSZURw2v+wvu6iVXndAf3uh1Vnd3MEDTteuBKgoAvWoYuSvNGsiZX8qaz4G6xcd xSfiNk2SuOSe3EYuray9jm4S1WatZ+pnDu4mC3uvEOe9FqrcokQIzeXxFWzwdV5TPoCK EzT8v4CieJpQ/ZRYv5aHiw8wVZWegLmEIV/+TlV4p2GPfQ+q5qNwZsfU39FB4cQX4859 Men6agrt7/YLFzJxQUhEcmksAp3AfqIZFgikWuaubSC3ns4n9Hf77JKRiaAL+3fPRNLo GvRM8xjDSpP4gUOp25wyCLNm8fxaSwlFrqKQGiI72flpnQDF/SyV2QVYy1tpggPbjN9M viWw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:dkim-signature; bh=haGVx5xtTBF+VtzwL/lf0Kn8JJj/cDxNCUCB/6GBJpg=; b=OvmKdKwEvkzfFf6kdM6IoQjXUIy7ryQXP0RnOPJd+ve+cuyiRBJ40VvuM7ChzqFRyG POkbZ7YwSuiWMdAlK9ma6ToZxTY2CB/GrgPK/ExdU4ulw4D5RJpPqe8NwRDwlTpjiVRP C6HSFoalyGYzV1r0LqpXHhjzWoADP/t9CLZzgUZ/9xoJ2e3AcTzCHM67GYmWwjZtIPPt Jd6qShUnSUbQnJ5TXtRGEL4le18dBOIDwrIs+BoUCh7j/y4t/FY4SJi35br0s1ej15OO HQ0HnsAJ4H70RQT7SX/iOR1QMiJiL25SQ6OrWm7TVRmgU4FcGtsS4P7EoKGjvrw8KWYy XMJA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b="Pbd+/aMo"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id h9si17812126edb.389.2021.07.07.01.02.20; Wed, 07 Jul 2021 01:02:43 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b="Pbd+/aMo"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230398AbhGGIDJ (ORCPT + 99 others); Wed, 7 Jul 2021 04:03:09 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37770 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230408AbhGGIDG (ORCPT ); Wed, 7 Jul 2021 04:03:06 -0400 Received: from mail-lj1-x22a.google.com (mail-lj1-x22a.google.com [IPv6:2a00:1450:4864:20::22a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 5D51AC06175F for ; Wed, 7 Jul 2021 01:00:26 -0700 (PDT) Received: by mail-lj1-x22a.google.com with SMTP id k8so1573603lja.4 for ; Wed, 07 Jul 2021 01:00:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=haGVx5xtTBF+VtzwL/lf0Kn8JJj/cDxNCUCB/6GBJpg=; b=Pbd+/aMolsKOQG+lwZY8mgF04Ayl5UHoly0ldhMkisOAGIhNt5qwhhQ/P3EcyhLNas glu4XAf1X2q8XsK5AbHYivdZfc+gEy8MtYEFkyxi8qrLiCPabCblemNaQ70uBOzShmjk KLnt3PM5wrzFmPQgsV6bbHaFX+wAi7ZVMxcYBeaXMr3BcBL0E79YtKSjySrOkOLqEYBc h0LJNdg+RN50S9Hyt1l9vbkwQdHemPeiluOoSUIzegZdDnaa9EN/htD46iUErWF+G1vr 7qBvUrJG/qtKQ516HgeWpx5tNgEU5nrsgg4dIYNVLh3X9Lxa10eDTbjIadSUFUvlQLzR Mdzg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=haGVx5xtTBF+VtzwL/lf0Kn8JJj/cDxNCUCB/6GBJpg=; b=ZV8on9B/TA8DrXjQWibGvow1rSnMbcyxcSa8+R06wrmKVSuSDcWYlmK+MhUaUoAH+R FxPpvhIcth8+VCAPpDpBJXAbjH+ZxCrF10e7waygJ6WDsWi+BekdmrIwrgjuz4u3MGah s7XKb58rr8wCPvJ39JhG+Nqm4gKuXVOuQGhwxjUfYBWiumbXugUPEkzp9cVxwMauOFpr 41hicuFky79lzGA5p2kweezSlFTFYoKETtW/BACQI9CDXttVpAzB0IOSqwK1/1XZZFx1 c3nZtxxGwloCqkQAts18BA8nB8hdCLh9sSbME8xq/o94uRbUfTOkyo8nRwcibY2xTW4/ USAw== X-Gm-Message-State: AOAM530r+rmbFr1e7EgyuJx3Kf8TD9id7ErX5VnKXv3G/4349R4/N1RX Y2+gcOfUbEuFi/AfpxxdKQhD5D82jVkvfM/qJwyEtw== X-Received: by 2002:a2e:3a05:: with SMTP id h5mr6279612lja.209.1625644824533; Wed, 07 Jul 2021 01:00:24 -0700 (PDT) MIME-Version: 1.0 References: <20210625152603.25960-1-lukasz.luba@arm.com> <20210625152603.25960-2-lukasz.luba@arm.com> In-Reply-To: From: Vincent Guittot Date: Wed, 7 Jul 2021 10:00:13 +0200 Message-ID: Subject: Re: [PATCH 1/3] sched/fair: Prepare variables for increased precision of EAS estimated energy To: Lukasz Luba Cc: linux-kernel , Chris Redpath , Dietmar Eggemann , Morten Rasmussen , Quentin Perret , "open list:THERMAL" , Peter Zijlstra , "Rafael J. Wysocki" , Viresh Kumar , Ingo Molnar , Juri Lelli , Steven Rostedt , segall@google.com, Mel Gorman , Daniel Bristot de Oliveira , CCj.Yeh@mediatek.com Content-Type: text/plain; charset="UTF-8" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, 7 Jul 2021 at 09:49, Lukasz Luba wrote: > > > > On 7/7/21 8:07 AM, Vincent Guittot wrote: > > On Fri, 25 Jun 2021 at 17:26, Lukasz Luba wrote: > >> > >> The Energy Aware Scheduler (EAS) tries to find best CPU for a waking up > >> task. It probes many possibilities and compares the estimated energy values > >> for different scenarios. For calculating those energy values it relies on > >> Energy Model (EM) data and em_cpu_energy(). The precision which is used in > >> EM data is in milli-Watts (or abstract scale), which sometimes is not > >> sufficient. In some cases it might happen that two CPUs from different > >> Performance Domains (PDs) get the same calculated value for a given task > >> placement, but in more precised scale, they might differ. This rounding > >> error has to be addressed. This patch prepares EAS code for better > >> precision in the coming EM improvements. > > > > Could you explain why 32bits results are not enough and you need to > > move to 64bits ? > > > > Right now the result is in the range [0..2^32[ mW. If you need more > > precision and you want to return uW instead, you will have a result in > > the range [0..4kW[ which seems to be still enough > > > > Currently we have the max value limit for 'power' in EM which is > EM_MAX_POWER 0xffff (64k - 1). We allow to register such big power > values ~64k mW (~64Watts) for an OPP. Then based on 'power' we > pre-calculate 'cost' fields: > cost[i] = power[i] * freq_max / freq[i] > So, for max freq the cost == power. Let's use that in the example. > > Then the em_cpu_energy() calculates as follow: > cost * sum_util / scale_cpu > We are interested in the first part - the value of multiplication. But all these are internal computations of the energy model. At the end, the computed energy that is returned by compute_energy() and em_cpu_energy(), fits in a long > > The sum_util values that we can see for x CPUs which have scale_cap=1024 > can be close to 800, let's use it in the example: > cost * sum_util = 64k * (x * 800), where > x=4: ~200mln > x=8: ~400mln > x=16: ~800mln > x=64: ~3200mln (last one which would fit in u32) > > When we increase the precision by even 100, then the above values won't > fit in the u32. Even a max cost of e.g. 10k mW and 100 precision has > issues: > cost * sum_util = (10k *100) * (x * 800), where > x=4: ~3200mln > x=8: ~6400mln > > For *1000 precision even a power of 1Watt becomes an issue: > cost * sum_util = (1k *1000) * (x * 800), where > x=4: ~3200mln > x=8: ~6400mln > > That's why to make the code safe for bigger power values, I had to use > the u64 on 32bit machines.