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