Re: [PATCH v3] Weighted interleave auto-tuning

From: Honggyu Kim
Date: Wed Feb 05 2025 - 00:34:25 EST


Hi Ying,

On 1/22/2025 10:24 AM, Huang, Ying wrote:

[snip]

diff --git a/Documentation/ABI/testing/sysfs-kernel-mm-mempolicy-weighted-interleave b/Documentation/ABI/testing/sysfs-kernel-mm-mempolicy-weighted-interleave
index 0b7972de04e9..d30dc29c53ff 100644
--- a/Documentation/ABI/testing/sysfs-kernel-mm-mempolicy-weighted-interleave
+++ b/Documentation/ABI/testing/sysfs-kernel-mm-mempolicy-weighted-interleave
@@ -20,6 +20,30 @@ Description: Weight configuration interface for nodeN
Minimum weight: 1
Maximum weight: 255
- Writing an empty string or `0` will reset the weight
to the
- system default. The system default may be set by the kernel
- or drivers at boot or during hotplug events.
+ Writing invalid values (i.e. any values not in [1,255],
+ empty string, ...) will return -EINVAL.
+
+What: /sys/kernel/mm/mempolicy/weighted_interleave/mode
+Date: January 2025
+Contact: Linux memory management mailing list <linux-mm@xxxxxxxxx>
+Description: Auto-weighting configuration interface
+
+ Configuration modes for weighted interleave. Can take one of
+ two options: "manual" and "auto". Default is "auto".
+
+ In auto mode, all node weights are re-calculated and overwritten
+ (visible via the nodeN interfaces) whenever new bandwidth data
+ is made available either during boot or hotplug events.
+
+ In manual mode, node weights can only be updated by the user.
+ If a node is hotplugged while the user is in manual mode,
+ the node will have a default weight of 1.
+
+ Modes can be changed by writing either "auto" or "manual" to the
+ interface. All other strings will be ignored, and -EINVAL will
+ be returned. If "auto" is written to the interface but the
+ recalculation / updates fail at any point (-ENOMEM or -ENODEV)
+ then the mode will remain in manual mode.
+
+ Writing a new weight to a node directly via the nodeN interface
+ will also automatically update the system to manual mode.
IMHO, this interface is somewhat hard to be used. Users need to
know
which value is legal. So, this will become something like,
$ cat mode
auto [manual]
$ echo auto > mode
$ cat mode
[auto] manual

This is exactly I internally proposed to Hyeonggon, but couldn't share
the idea directly here.

Unless it's possible we will add more modes in the future, this is
kind
of overkill for me. How about something simpler as below?
$ cat auto
true
$ echo 0 > auto
$ cat auto
false

That also makes sense, but I feel like somewhat vague what "auto" false
means. The "auto" might be better to be "use_hmat" instead and this
makes "use_hmat" false more meaningful. "use_hmat_weight" or
"use_hmat_info" might be another candidates.

As Gregory pointed out in another email. hmat isn't good because it's
platform dependent. We may use something else to get default weights on
another platform.

Sorry for the late reply. I prefered "mode" contains auto/manual and
"hmat" names were my second thought, which may not be proper here as you
mentioned.


I'm open to other platform independent naming. For example, use_default.

I'm also fine to your another proposal "auto" with Y/N, which is used in
v4.


[snip]

---
Best Regards,
Huang, Ying

Thanks,
Honggyu