On Fri, Dec 13, 2024 at 03:19:20PM +0900, Hyeonggon Yoo wrote: > On 2024-12-11 06:54 AM, Joshua Hahn wrote: > > This patch introduces an auto-configuration for the interleave weights > > that aims to balance the two goals of setting node weights to be > > proportional to their bandwidths and keeping the weight values low. > > This balance is controlled by a value max_node_weight, which defines the > > maximum weight a single node can take. > > Hi Joshua, > > I am wondering how this is going to work for host memory + CXL memory > interleaving. I guess by "the ACPI table" you mean the ACPI HMAT or CXL > CDAT, both of which does not provide the bandwidth of host memory. Then your BIOS vendor needs to fix their ACPI table generation, because HMAT can absolutely contain that information. [078h 0120 2] Structure Type : 0001 [System Locality Latency and Bandwidth Information] [07Ah 0122 2] Reserved : 0000 [07Ch 0124 4] Length : 00000030 [080h 0128 1] Flags (decoded below) : 00 Memory Hierarchy : 0 Use Minimum Transfer Size : 0 Non-sequential Transfers : 0 [081h 0129 1] Data Type : 00 [082h 0130 1] Minimum Transfer Size : 00 [083h 0131 1] Reserved1 : 00 [084h 0132 4] Initiator Proximity Domains # : 00000001 [088h 0136 4] Target Proximity Domains # : 00000002 [08Ch 0140 4] Reserved2 : 00000000 [090h 0144 8] Entry Base Unit : 00000000000003E8 [098h 0152 4] Initiator Proximity Domain List : 00000000 [09Ch 0156 4] Target Proximity Domain List : 00000000 [0A0h 0160 4] Target Proximity Domain List : 00000001 [0A4h 0164 2] Entry : 006E [0A6h 0166 2] Entry : 01FE [0A8h 0168 2] Structure Type : 0001 [System Locality Latency and Bandwidth Information] [0AAh 0170 2] Reserved : 0000 [0ACh 0172 4] Length : 00000030 [0B0h 0176 1] Flags (decoded below) : 00 Memory Hierarchy : 0 Use Minimum Transfer Size : 0 Non-sequential Transfers : 0 [0B1h 0177 1] Data Type : 03 [0B2h 0178 1] Minimum Transfer Size : 00 [0B3h 0179 1] Reserved1 : 00 [0B4h 0180 4] Initiator Proximity Domains # : 00000001 [0B8h 0184 4] Target Proximity Domains # : 00000002 [0BCh 0188 4] Reserved2 : 00000000 [0C0h 0192 8] Entry Base Unit : 0000000000000064 [0C8h 0200 4] Initiator Proximity Domain List : 00000000 [0CCh 0204 4] Target Proximity Domain List : 00000000 [0D0h 0208 4] Target Proximity Domain List : 00000001 [0D4h 0212 2] Entry : 1200 [0D6h 0214 2] Entry : 0064 Obviously if information is missing, then manual is the only way forward. > > + The maximum interleave weight for a memory node. When it is > > + updated, any previous changes to interleave weights (i.e. via > > + the nodeN sysfs interfaces) are ignored, and new weights are > > + calculated using ACPI-reported bandwidths and scaled. > > + > > At first this paragraph sounded like "previously stored weights are > discarded after setting max_node_weight", but I think you mean > "User can override the default values, but defaults values are calculated > regardless of the values set by the user". Right? > Agree that these comments need clarification, we'll workshop it. ~Gregory