[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <YLCtKziUgPTvPh1j@hirez.programming.kicks-ass.net>
Date: Fri, 28 May 2021 10:43:23 +0200
From: Peter Zijlstra <peterz@...radead.org>
To: Srikar Dronamraju <srikar@...ux.vnet.ibm.com>
Cc: Valentin Schneider <valentin.schneider@....com>,
Ingo Molnar <mingo@...nel.org>,
LKML <linux-kernel@...r.kernel.org>,
Mel Gorman <mgorman@...hsingularity.net>,
Rik van Riel <riel@...riel.com>,
Thomas Gleixner <tglx@...utronix.de>,
Vincent Guittot <vincent.guittot@...aro.org>,
Dietmar Eggemann <dietmar.eggemann@....com>,
linuxppc-dev@...ts.ozlabs.org,
Nathan Lynch <nathanl@...ux.ibm.com>,
Michael Ellerman <mpe@...erman.id.au>,
Scott Cheloha <cheloha@...ux.ibm.com>,
Gautham R Shenoy <ego@...ux.vnet.ibm.com>,
Geetika Moolchandani <Geetika.Moolchandani1@....com>
Subject: Re: [PATCH 1/3] sched/topology: Allow archs to populate distance map
On Mon, May 24, 2021 at 09:48:29PM +0530, Srikar Dronamraju wrote:
> * Valentin Schneider <valentin.schneider@....com> [2021-05-24 15:16:09]:
> > I suppose one way to avoid the hook would be to write some "fake" distance
> > values into your distance_lookup_table[] for offline nodes using your
> > distance_ref_point_depth thing, i.e. ensure an iteration of
> > node_distance(a, b) covers all distance values [1]. You can then keep patch
> > 3 around, and that should roughly be it.
> >
>
> Yes, this would suffice but to me its not very clean.
> static int found[distance_ref_point_depth];
>
> for_each_node(node){
> int i, nd, distance = LOCAL_DISTANCE;
> goto out;
>
> nd = node_distance(node, first_online_node)
> for (i=0; i < distance_ref_point_depth; i++, distance *= 2) {
> if (node_online) {
> if (distance != nd)
> continue;
> found[i] ++;
> break;
> }
> if (found[i])
> continue;
> distance_lookup_table[node][i] = distance_lookup_table[first_online_node][i];
> found[i] ++;
> break;
> }
> }
>
> But do note: We are setting a precedent for node distance between two nodes
> to change.
Not really; or rather not more than already is the case AFAICT. Because
currently your distance table will have *something* in it
(LOCAL_DISTANCE afaict) for nodes that have never been online, which is
what triggered the whole problem to begin with.
Only after the node has come online for the first time, will it contain
the right value.
So both before and after this proposal the actual distance value changes
after the first time a node goes online.
Yes that's unfortunate, but I don't see a problem with pre-filling it
with something useful in order to avoid aditional arch hooks.
Powered by blists - more mailing lists