Re: [PATCH v4] Weighted Interleave Auto-tuning
From: Joshua Hahn
Date: Sun Feb 02 2025 - 09:12:59 EST
Hi Honggyu,
On Sun, 2 Feb 2025 22:51:34 +0900 Honggyu Kim <honggyu.km@xxxxxxxxx> wrote:
> On 2/2/25 01:53, Gregory Price wrote:
> > On Sat, Feb 01, 2025 at 11:49:31AM -0500, Gregory Price wrote:
> >>> 1. the auto mode set the weights as 10:5:1 for node{0-2}.
> >>> 2. node2 is offlined, then recalculation makes it as 2:1 for node{0,1}.
> >
> > Point of clarification here: a hot-unplug event won't cause
> > recalculation.
> >
> > What actually causes re-weight is hot-plug reporting new capacity.
>
> So do you mean re-weight is done only when a new node is onlined while
> offline doesn't trigger re-weight?
>
> I see node_set_perf_attrs() does recalculation by calling
> mempolicy_set_node_perf(), then reduce_interleave_weights().
>
> But I'm not sure if the re-weight is done via node_set_perf_attrs() only
> when a new node is onlined.
>
> Could you please explain where I can find it?
Just chiming in to add some clarification:
Your analysis above is correct; reduce_interleave_weights() is only
called in 2 spots: once when the mode is switched from manual --> auto,
and the other when new bandwidth data is available, which calls
node_set_perf_attrs() and so on. In all other scenarios, iw_table is
preserved, and all values inside remain the same without manual changes.
A node offlining (or even onlining with no new bandwidth information)
will just mean that the node inherits whatever value is stored in
iw_table at that moment, whether that contains the default values
created on init or the last values that it had taken.
> > So in this scenario, the weight will remain the same for node2.
>
> If it's true, my scenario is wrong.
>
> Thanks,
> Honggyu
>
> >
> >>> 3. the auto sysfs interface is set to 0 to make it manual mode.
Please let me know if this makes sense. Thank you for your review
as always, and have a great day!
Joshua