<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="/source/rss.xsl.xml"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
    <title>Changes in sysfs-kernel-mm-mempolicy</title>
    <description></description>
    <language>en</language>
    <copyright>Copyright 2015</copyright>
    <generator>Java</generator><item>
        <title>a23e1966932464e1c5226cb9ac4ce1d5fc10ba22 - Merge branch &apos;next&apos; into for-linus</title>
        <link>http://kernelsources.org:8080/source/history/linux/Documentation/ABI/testing/sysfs-kernel-mm-mempolicy#a23e1966932464e1c5226cb9ac4ce1d5fc10ba22</link>
        <description>Merge branch &apos;next&apos; into for-linusPrepare input updates for 6.11 merge window.

            List of files:
            /linux/Documentation/ABI/testing/sysfs-kernel-mm-mempolicy</description>
        <pubDate>Mon, 15 Jul 2024 23:03:44 +0200</pubDate>
        <dc:creator>Dmitry Torokhov &lt;dmitry.torokhov@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>6f47c7ae8c7afaf9ad291d39f0d3974f191a7946 - Merge tag &apos;v6.9&apos; into next</title>
        <link>http://kernelsources.org:8080/source/history/linux/Documentation/ABI/testing/sysfs-kernel-mm-mempolicy#6f47c7ae8c7afaf9ad291d39f0d3974f191a7946</link>
        <description>Merge tag &apos;v6.9&apos; into nextSync up with the mainline to bring in the new cleanup API.

            List of files:
            /linux/Documentation/ABI/testing/sysfs-kernel-mm-mempolicy</description>
        <pubDate>Tue, 28 May 2024 06:37:18 +0200</pubDate>
        <dc:creator>Dmitry Torokhov &lt;dmitry.torokhov@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>60a2f25de7b8b785baee2932db932ae9a5b8c86d - Merge drm/drm-next into drm-intel-gt-next</title>
        <link>http://kernelsources.org:8080/source/history/linux/Documentation/ABI/testing/sysfs-kernel-mm-mempolicy#60a2f25de7b8b785baee2932db932ae9a5b8c86d</link>
        <description>Merge drm/drm-next into drm-intel-gt-nextSome display refactoring patches are needed in order to allow conflict-less merging.Signed-off-by: Tvrtko Ursulin &lt;tursulin@ursulin.net&gt;

            List of files:
            /linux/Documentation/ABI/testing/sysfs-kernel-mm-mempolicy</description>
        <pubDate>Thu, 16 May 2024 09:33:01 +0200</pubDate>
        <dc:creator>Tvrtko Ursulin &lt;tursulin@ursulin.net&gt;</dc:creator>
    </item>
<item>
        <title>594ce0b8a998aa4d05827cd7c0d0dcec9a1e3ae2 - Merge topic branches &apos;clkdev&apos; and &apos;fixes&apos; into for-linus</title>
        <link>http://kernelsources.org:8080/source/history/linux/Documentation/ABI/testing/sysfs-kernel-mm-mempolicy#594ce0b8a998aa4d05827cd7c0d0dcec9a1e3ae2</link>
        <description>Merge topic branches &apos;clkdev&apos; and &apos;fixes&apos; into for-linus

            List of files:
            /linux/Documentation/ABI/testing/sysfs-kernel-mm-mempolicy</description>
        <pubDate>Mon, 10 Jun 2024 13:03:21 +0200</pubDate>
        <dc:creator>Russell King (Oracle) &lt;rmk+kernel@armlinux.org.uk&gt;</dc:creator>
    </item>
<item>
        <title>79790b6818e96c58fe2bffee1b418c16e64e7b80 - Merge drm/drm-next into drm-xe-next</title>
        <link>http://kernelsources.org:8080/source/history/linux/Documentation/ABI/testing/sysfs-kernel-mm-mempolicy#79790b6818e96c58fe2bffee1b418c16e64e7b80</link>
        <description>Merge drm/drm-next into drm-xe-nextBackmerging drm-next in order to get up-to-date and in particularto access commit 9ca5facd0400f610f3f7f71aeb7fc0b949a48c67.Signed-off-by: Thomas Hellstr&#246;m &lt;thomas.hellstrom@linux.intel.com&gt;

            List of files:
            /linux/Documentation/ABI/testing/sysfs-kernel-mm-mempolicy</description>
        <pubDate>Fri, 12 Apr 2024 15:14:25 +0200</pubDate>
        <dc:creator>Thomas Hellstr&#246;m &lt;thomas.hellstrom@linux.intel.com&gt;</dc:creator>
    </item>
<item>
        <title>3e5a516f3bf1a33f2bf219f570e9b5c031616f6a - Merge tag &apos;phy_dp_modes_6.10&apos; into msm-next-lumag</title>
        <link>http://kernelsources.org:8080/source/history/linux/Documentation/ABI/testing/sysfs-kernel-mm-mempolicy#3e5a516f3bf1a33f2bf219f570e9b5c031616f6a</link>
        <description>Merge tag &apos;phy_dp_modes_6.10&apos; into msm-next-lumagMerge DisplayPort subnode API in order to allow DisplayPort driver toconfigure the PHYs either to the DP or eDP mode, depending on hardwareconfiguration.Signed-off-by: Dmitry Baryshkov &lt;dmitry.baryshkov@linaro.org&gt;

            List of files:
            /linux/Documentation/ABI/testing/sysfs-kernel-mm-mempolicy</description>
        <pubDate>Mon, 08 Apr 2024 17:35:51 +0200</pubDate>
        <dc:creator>Dmitry Baryshkov &lt;dmitry.baryshkov@linaro.org&gt;</dc:creator>
    </item>
<item>
        <title>5add703f6acad1c63f8a532b6de56e50d548e904 - Merge drm/drm-next into drm-intel-next</title>
        <link>http://kernelsources.org:8080/source/history/linux/Documentation/ABI/testing/sysfs-kernel-mm-mempolicy#5add703f6acad1c63f8a532b6de56e50d548e904</link>
        <description>Merge drm/drm-next into drm-intel-nextCatching up on 6.9-rc2Signed-off-by: Rodrigo Vivi &lt;rodrigo.vivi@intel.com&gt;

            List of files:
            /linux/Documentation/ABI/testing/sysfs-kernel-mm-mempolicy</description>
        <pubDate>Tue, 02 Apr 2024 14:17:13 +0200</pubDate>
        <dc:creator>Rodrigo Vivi &lt;rodrigo.vivi@intel.com&gt;</dc:creator>
    </item>
<item>
        <title>0d21364c6e8dc1f62c34bbc49d49935c8b01844c - Merge drm/drm-next into drm-misc-next</title>
        <link>http://kernelsources.org:8080/source/history/linux/Documentation/ABI/testing/sysfs-kernel-mm-mempolicy#0d21364c6e8dc1f62c34bbc49d49935c8b01844c</link>
        <description>Merge drm/drm-next into drm-misc-nextBackmerging to get v6.9-rc2 changes into drm-misc-next.Signed-off-by: Thomas Zimmermann &lt;tzimmermann@suse.de&gt;

            List of files:
            /linux/Documentation/ABI/testing/sysfs-kernel-mm-mempolicy</description>
        <pubDate>Tue, 02 Apr 2024 09:51:30 +0200</pubDate>
        <dc:creator>Thomas Zimmermann &lt;tzimmermann@suse.de&gt;</dc:creator>
    </item>
<item>
        <title>b7e1e969c887c897947fdc3754fe9b0c24acb155 - Merge branch &apos;topic/sound-devel-6.10&apos; into for-next</title>
        <link>http://kernelsources.org:8080/source/history/linux/Documentation/ABI/testing/sysfs-kernel-mm-mempolicy#b7e1e969c887c897947fdc3754fe9b0c24acb155</link>
        <description>Merge branch &apos;topic/sound-devel-6.10&apos; into for-next

            List of files:
            /linux/Documentation/ABI/testing/sysfs-kernel-mm-mempolicy</description>
        <pubDate>Tue, 26 Mar 2024 12:19:11 +0100</pubDate>
        <dc:creator>Takashi Iwai &lt;tiwai@suse.de&gt;</dc:creator>
    </item>
<item>
        <title>537c2e91d3549e5d6020bb0576cf9b54a845255f - Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net</title>
        <link>http://kernelsources.org:8080/source/history/linux/Documentation/ABI/testing/sysfs-kernel-mm-mempolicy#537c2e91d3549e5d6020bb0576cf9b54a845255f</link>
        <description>Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/netCross-merge networking fixes after downstream PR.Signed-off-by: Jakub Kicinski &lt;kuba@kernel.org&gt;

            List of files:
            /linux/Documentation/ABI/testing/sysfs-kernel-mm-mempolicy</description>
        <pubDate>Fri, 22 Mar 2024 00:14:13 +0100</pubDate>
        <dc:creator>Jakub Kicinski &lt;kuba@kernel.org&gt;</dc:creator>
    </item>
<item>
        <title>f4566a1e73957800df75a3dd2dccee8a4697f327 - Merge tag &apos;v6.9-rc1&apos; into sched/core, to pick up fixes and to refresh the branch</title>
        <link>http://kernelsources.org:8080/source/history/linux/Documentation/ABI/testing/sysfs-kernel-mm-mempolicy#f4566a1e73957800df75a3dd2dccee8a4697f327</link>
        <description>Merge tag &apos;v6.9-rc1&apos; into sched/core, to pick up fixes and to refresh the branchSigned-off-by: Ingo Molnar &lt;mingo@kernel.org&gt;

            List of files:
            /linux/Documentation/ABI/testing/sysfs-kernel-mm-mempolicy</description>
        <pubDate>Mon, 25 Mar 2024 11:32:29 +0100</pubDate>
        <dc:creator>Ingo Molnar &lt;mingo@kernel.org&gt;</dc:creator>
    </item>
<item>
        <title>100c85421b52e41269ada88f7d71a6b8a06c7a11 - Merge tag &apos;asoc-fix-v6.9-rc2&apos; of https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound into for-linus</title>
        <link>http://kernelsources.org:8080/source/history/linux/Documentation/ABI/testing/sysfs-kernel-mm-mempolicy#100c85421b52e41269ada88f7d71a6b8a06c7a11</link>
        <description>Merge tag &apos;asoc-fix-v6.9-rc2&apos; of https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound into for-linusASoC: Fixes for v6.9A relatively large set of fixes here, the biggest piece of it is aseries correcting some problems with the delay reporting for Intel SOFcards but there&apos;s a bunch of other things.  Everything here is driverspecific except for a fix in the core for an issue with sign extensionhandling volume controls.

            List of files:
            /linux/Documentation/ABI/testing/sysfs-kernel-mm-mempolicy</description>
        <pubDate>Fri, 05 Apr 2024 08:48:12 +0200</pubDate>
        <dc:creator>Takashi Iwai &lt;tiwai@suse.de&gt;</dc:creator>
    </item>
<item>
        <title>36a1818f5a1e50b805317ba13f827067d50f6970 - Merge drm/drm-fixes into drm-misc-fixes</title>
        <link>http://kernelsources.org:8080/source/history/linux/Documentation/ABI/testing/sysfs-kernel-mm-mempolicy#36a1818f5a1e50b805317ba13f827067d50f6970</link>
        <description>Merge drm/drm-fixes into drm-misc-fixesBackmerging to get drm-misc-fixes to the state of v6.9-rc1.Signed-off-by: Thomas Zimmermann &lt;tzimmermann@suse.de&gt;

            List of files:
            /linux/Documentation/ABI/testing/sysfs-kernel-mm-mempolicy</description>
        <pubDate>Mon, 25 Mar 2024 21:11:58 +0100</pubDate>
        <dc:creator>Thomas Zimmermann &lt;tzimmermann@suse.de&gt;</dc:creator>
    </item>
<item>
        <title>902861e34c401696ed9ad17a54c8790e7e8e3069 - Merge tag &apos;mm-stable-2024-03-13-20-04&apos; of git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm</title>
        <link>http://kernelsources.org:8080/source/history/linux/Documentation/ABI/testing/sysfs-kernel-mm-mempolicy#902861e34c401696ed9ad17a54c8790e7e8e3069</link>
        <description>Merge tag &apos;mm-stable-2024-03-13-20-04&apos; of git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mmPull MM updates from Andrew Morton: - Sumanth Korikkar has taught s390 to allocate hotplug-time page frames   from hotplugged memory rather than only from main memory. Series   &quot;implement &quot;memmap on memory&quot; feature on s390&quot;. - More folio conversions from Matthew Wilcox in the series	&quot;Convert memcontrol charge moving to use folios&quot;	&quot;mm: convert mm counter to take a folio&quot; - Chengming Zhou has optimized zswap&apos;s rbtree locking, providing   significant reductions in system time and modest but measurable   reductions in overall runtimes. The series is &quot;mm/zswap: optimize the   scalability of zswap rb-tree&quot;. - Chengming Zhou has also provided the series &quot;mm/zswap: optimize zswap   lru list&quot; which provides measurable runtime benefits in some   swap-intensive situations. - And Chengming Zhou further optimizes zswap in the series &quot;mm/zswap:   optimize for dynamic zswap_pools&quot;. Measured improvements are modest. - zswap cleanups and simplifications from Yosry Ahmed in the series   &quot;mm: zswap: simplify zswap_swapoff()&quot;. - In the series &quot;Add DAX ABI for memmap_on_memory&quot;, Vishal Verma has   contributed several DAX cleanups as well as adding a sysfs tunable to   control the memmap_on_memory setting when the dax device is   hotplugged as system memory. - Johannes Weiner has added the large series &quot;mm: zswap: cleanups&quot;,   which does that. - More DAMON work from SeongJae Park in the series	&quot;mm/damon: make DAMON debugfs interface deprecation unignorable&quot;	&quot;selftests/damon: add more tests for core functionalities and corner cases&quot;	&quot;Docs/mm/damon: misc readability improvements&quot;	&quot;mm/damon: let DAMOS feeds and tame/auto-tune itself&quot; - In the series &quot;mm/mempolicy: weighted interleave mempolicy and sysfs   extension&quot; Rakie Kim has developed a new mempolicy interleaving   policy wherein we allocate memory across nodes in a weighted fashion   rather than uniformly. This is beneficial in heterogeneous memory   environments appearing with CXL. - Christophe Leroy has contributed some cleanup and consolidation work   against the ARM pagetable dumping code in the series &quot;mm: ptdump:   Refactor CONFIG_DEBUG_WX and check_wx_pages debugfs attribute&quot;. - Luis Chamberlain has added some additional xarray selftesting in the   series &quot;test_xarray: advanced API multi-index tests&quot;. - Muhammad Usama Anjum has reworked the selftest code to make its   human-readable output conform to the TAP (&quot;Test Anything Protocol&quot;)   format. Amongst other things, this opens up the use of third-party   tools to parse and process out selftesting results. - Ryan Roberts has added fork()-time PTE batching of THP ptes in the   series &quot;mm/memory: optimize fork() with PTE-mapped THP&quot;. Mainly   targeted at arm64, this significantly speeds up fork() when the   process has a large number of pte-mapped folios. - David Hildenbrand also gets in on the THP pte batching game in his   series &quot;mm/memory: optimize unmap/zap with PTE-mapped THP&quot;. It   implements batching during munmap() and other pte teardown   situations. The microbenchmark improvements are nice. - And in the series &quot;Transparent Contiguous PTEs for User Mappings&quot;   Ryan Roberts further utilizes arm&apos;s pte&apos;s contiguous bit (&quot;contpte   mappings&quot;). Kernel build times on arm64 improved nicely. Ryan&apos;s   series &quot;Address some contpte nits&quot; provides some followup work. - In the series &quot;mm/hugetlb: Restore the reservation&quot; Breno Leitao has   fixed an obscure hugetlb race which was causing unnecessary page   faults. He has also added a reproducer under the selftest code. - In the series &quot;selftests/mm: Output cleanups for the compaction   test&quot;, Mark Brown did what the title claims. - Kinsey Ho has added the series &quot;mm/mglru: code cleanup and   refactoring&quot;. - Even more zswap material from Nhat Pham. The series &quot;fix and extend   zswap kselftests&quot; does as claimed. - In the series &quot;Introduce cpu_dcache_is_aliasing() to fix DAX   regression&quot; Mathieu Desnoyers has cleaned up and fixed rather a mess   in our handling of DAX on archiecctures which have virtually aliasing   data caches. The arm architecture is the main beneficiary. - Lokesh Gidra&apos;s series &quot;per-vma locks in userfaultfd&quot; provides   dramatic improvements in worst-case mmap_lock hold times during   certain userfaultfd operations. - Some page_owner enhancements and maintenance work from Oscar Salvador   in his series	&quot;page_owner: print stacks and their outstanding allocations&quot;	&quot;page_owner: Fixup and cleanup&quot; - Uladzislau Rezki has contributed some vmalloc scalability   improvements in his series &quot;Mitigate a vmap lock contention&quot;. It   realizes a 12x improvement for a certain microbenchmark. - Some kexec/crash cleanup work from Baoquan He in the series &quot;Split   crash out from kexec and clean up related config items&quot;. - Some zsmalloc maintenance work from Chengming Zhou in the series	&quot;mm/zsmalloc: fix and optimize objects/page migration&quot;	&quot;mm/zsmalloc: some cleanup for get/set_zspage_mapping()&quot; - Zi Yan has taught the MM to perform compaction on folios larger than   order=0. This a step along the path to implementaton of the merging   of large anonymous folios. The series is named &quot;Enable &gt;0 order folio   memory compaction&quot;. - Christoph Hellwig has done quite a lot of cleanup work in the   pagecache writeback code in his series &quot;convert write_cache_pages()   to an iterator&quot;. - Some modest hugetlb cleanups and speedups in Vishal Moola&apos;s series   &quot;Handle hugetlb faults under the VMA lock&quot;. - Zi Yan has changed the page splitting code so we can split huge pages   into sizes other than order-0 to better utilize large folios. The   series is named &quot;Split a folio to any lower order folios&quot;. - David Hildenbrand has contributed the series &quot;mm: remove   total_mapcount()&quot;, a cleanup. - Matthew Wilcox has sought to improve the performance of bulk memory   freeing in his series &quot;Rearrange batched folio freeing&quot;. - Gang Li&apos;s series &quot;hugetlb: parallelize hugetlb page init on boot&quot;   provides large improvements in bootup times on large machines which   are configured to use large numbers of hugetlb pages. - Matthew Wilcox&apos;s series &quot;PageFlags cleanups&quot; does that. - Qi Zheng&apos;s series &quot;minor fixes and supplement for ptdesc&quot; does that   also. S390 is affected. - Cleanups to our pagemap utility functions from Peter Xu in his series   &quot;mm/treewide: Replace pXd_large() with pXd_leaf()&quot;. - Nico Pache has fixed a few things with our hugepage selftests in his   series &quot;selftests/mm: Improve Hugepage Test Handling in MM   Selftests&quot;. - Also, of course, many singleton patches to many things. Please see   the individual changelogs for details.* tag &apos;mm-stable-2024-03-13-20-04&apos; of git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm: (435 commits)  mm/zswap: remove the memcpy if acomp is not sleepable  crypto: introduce: acomp_is_async to expose if comp drivers might sleep  memtest: use {READ,WRITE}_ONCE in memory scanning  mm: prohibit the last subpage from reusing the entire large folio  mm: recover pud_leaf() definitions in nopmd case  selftests/mm: skip the hugetlb-madvise tests on unmet hugepage requirements  selftests/mm: skip uffd hugetlb tests with insufficient hugepages  selftests/mm: dont fail testsuite due to a lack of hugepages  mm/huge_memory: skip invalid debugfs new_order input for folio split  mm/huge_memory: check new folio order when split a folio  mm, vmscan: retry kswapd&apos;s priority loop with cache_trim_mode off on failure  mm: add an explicit smp_wmb() to UFFDIO_CONTINUE  mm: fix list corruption in put_pages_list  mm: remove folio from deferred split list before uncharging it  filemap: avoid unnecessary major faults in filemap_fault()  mm,page_owner: drop unnecessary check  mm,page_owner: check for null stack_record before bumping its refcount  mm: swap: fix race between free_swap_and_cache() and swapoff()  mm/treewide: align up pXd_leaf() retval across archs  mm/treewide: drop pXd_large()  ...

            List of files:
            /linux/Documentation/ABI/testing/sysfs-kernel-mm-mempolicy</description>
        <pubDate>Fri, 15 Mar 2024 01:43:30 +0100</pubDate>
        <dc:creator>Linus Torvalds &lt;torvalds@linux-foundation.org&gt;</dc:creator>
    </item>
<item>
        <title>dce41f5ae2539d1c20ae8de4e039630aec3c3f3c - mm/mempolicy: implement the sysfs-based weighted_interleave interface</title>
        <link>http://kernelsources.org:8080/source/history/linux/Documentation/ABI/testing/sysfs-kernel-mm-mempolicy#dce41f5ae2539d1c20ae8de4e039630aec3c3f3c</link>
        <description>mm/mempolicy: implement the sysfs-based weighted_interleave interfacePatch series &quot;mm/mempolicy: weighted interleave mempolicy and sysfsextension&quot;, v5.Weighted interleave is a new interleave policy intended to make use ofheterogeneous memory environments appearing with CXL.The existing interleave mechanism does an even round-robin distribution ofmemory across all nodes in a nodemask, while weighted interleavedistributes memory across nodes according to a provided weight.  (Weight =# of page allocations per round)Weighted interleave is intended to reduce average latency when bandwidthis pressured - therefore increasing total throughput.In other words: It allows greater use of the total available bandwidth ina heterogeneous hardware environment (different hardware providesdifferent bandwidth capacity).As bandwidth is pressured, latency increases - first linearly and thenexponentially.  By keeping bandwidth usage distributed according toavailable bandwidth, we therefore can reduce the average latency of acacheline fetch.A good explanation of the bandwidth vs latency response curve:https://mahmoudhatem.wordpress.com/2017/11/07/memory-bandwidth-vs-latency-response-curve/From the article:```Constant region:    The latency response is fairly constant for the first 40%    of the sustained bandwidth.Linear region:    In between 40% to 80% of the sustained bandwidth, the    latency response increases almost linearly with the bandwidth    demand of the system due to contention overhead by numerous    memory requests.Exponential region:    Between 80% to 100% of the sustained bandwidth, the memory    latency is dominated by the contention latency which can be    as much as twice the idle latency or more.Maximum sustained bandwidth :    Is 65% to 75% of the theoretical maximum bandwidth.```As a general rule of thumb:* If bandwidth usage is low, latency does not increase. It is  optimal to place data in the nearest (lowest latency) device.* If bandwidth usage is high, latency increases. It is optimal  to place data such that bandwidth use is optimized per-device.This is the top line goal: Provide a user a mechanism to target using the&quot;maximum sustained bandwidth&quot; of each hardware component in a heterogenousmemory system.For example, the stream benchmark demonstrates that 1:1 (default)interleave is actively harmful, while weighted interleave can bebeneficial.  Default interleave distributes data such that too muchpressure is placed on devices with lower available bandwidth.Stream Benchmark (vs DRAM, 1 Socket + 1 CXL Device)Default interleave : -78% (slower than DRAM)Global weighting   : -6% to +4% (workload dependant)Targeted weights   : +2.5% to +4% (consistently better than DRAM)Global means the task-policy was set (set_mempolicy), while targeted meansVMA policies were set (mbind2).  We see weighted interleave is not alwaysbeneficial when applied globally, but is always beneficial when applied tobandwidth-driving memory regions.There are 4 patches in this set:1) Implement system-global interleave weights as sysfs extension   in mm/mempolicy.c.  These weights are RCU protected, and a   default weight set is provided (all weights are 1 by default).   In future work, we intend to expose an interface for HMAT/CDAT   code to set reasonable default values based on the memory   configuration of the system discovered at boot/hotplug.2) A mild refactor of some interleave-logic for re-use in the   new weighted interleave logic.3) MPOL_WEIGHTED_INTERLEAVE extension for set_mempolicy/mbind4) Protect interleave logic (weighted and normal) with the   mems_allowed seq cookie.  If the nodemask changes while   accessing it during a rebind, just retry the access.Included below are some performance and LTP test information,and a sample numactl branch which can be used for testing.= Performance summary =(tests may have different configurations, see extended info below)1) MLC (W2) : +38% over DRAM. +264% over default interleave.   MLC (W5) : +40% over DRAM. +226% over default interleave.2) Stream   : -6% to +4% over DRAM, +430% over default interleave.3) XSBench  : +19% over DRAM. +47% over default interleave.= LTP Testing Summary =existing mempolicy &amp; mbind tests: passmempolicy &amp; mbind + weighted interleave (global weights): pass= version historyv5:- style fixes- mems_allowed cookie protection to detect rebind issues,  prevents spurious allocation failures and/or mis-allocations- sparse warning fixes related to __rcu on local variables=====================================================================Performance tests - MLCFrom - Ravi Jonnalagadda &lt;ravis.opensrc@micron.com&gt;Hardware: Single-socket, multiple CXL memory expanders.Workload:                               W2Data Signature:                         2:1 read:writeDRAM only bandwidth (GBps):             298.8DRAM + CXL (default interleave) (GBps): 113.04DRAM + CXL (weighted interleave)(GBps): 412.5Gain over DRAM only:                    1.38xGain over default interleave:           2.64xWorkload:                               W5Data Signature:                         1:1 read:writeDRAM only bandwidth (GBps):             273.2DRAM + CXL (default interleave) (GBps): 117.23DRAM + CXL (weighted interleave)(GBps): 382.7Gain over DRAM only:                    1.4xGain over default interleave:           2.26x=====================================================================Performance test - StreamFrom - Gregory Price &lt;gregory.price@memverge.com&gt;Hardware: Single socket, single CXL expandernumactl extension: https://github.com/gmprice/numactl/tree/weighted_interleave_masterSummary: 64 threads, ~18GB workload, 3GB per array, executed 100 timesDefault interleave : -78% (slower than DRAM)Global weighting   : -6% to +4% (workload dependant)mbind2 weights     : +2.5% to +4% (consistently better than DRAM)dram only:numactl --cpunodebind=1 --membind=1 ./stream_c.exe --ntimes 100 --array-size 400M --mallocFunction     Direction    BestRateMBs     AvgTime      MinTime      MaxTimeCopy:        0-&gt;0            200923.2     0.032662     0.031853     0.033301Scale:       0-&gt;0            202123.0     0.032526     0.031664     0.032970Add:         0-&gt;0            208873.2     0.047322     0.045961     0.047884Triad:       0-&gt;0            208523.8     0.047262     0.046038     0.048414CXL-only:numactl --cpunodebind=1 -w --membind=2 ./stream_c.exe --ntimes 100 --array-size 400M --mallocCopy:        0-&gt;0             22209.7     0.288661     0.288162     0.289342Scale:       0-&gt;0             22288.2     0.287549     0.287147     0.288291Add:         0-&gt;0             24419.1     0.393372     0.393135     0.393735Triad:       0-&gt;0             24484.6     0.392337     0.392083     0.394331Based on the above, the optimal weights are ~9:1echo 9 &gt; /sys/kernel/mm/mempolicy/weighted_interleave/node1echo 1 &gt; /sys/kernel/mm/mempolicy/weighted_interleave/node2default interleave:numactl --cpunodebind=1 --interleave=1,2 ./stream_c.exe --ntimes 100 --array-size 400M --mallocCopy:        0-&gt;0             44666.2     0.143671     0.143285     0.144174Scale:       0-&gt;0             44781.6     0.143256     0.142916     0.143713Add:         0-&gt;0             48600.7     0.197719     0.197528     0.197858Triad:       0-&gt;0             48727.5     0.197204     0.197014     0.197439global weighted interleave:numactl --cpunodebind=1 -w --interleave=1,2 ./stream_c.exe --ntimes 100 --array-size 400M --mallocCopy:        0-&gt;0            190085.9     0.034289     0.033669     0.034645Scale:       0-&gt;0            207677.4     0.031909     0.030817     0.033061Add:         0-&gt;0            202036.8     0.048737     0.047516     0.053409Triad:       0-&gt;0            217671.5     0.045819     0.044103     0.046755targted regions w/ global weights (modified stream to mbind2 malloc&apos;d regions))numactl --cpunodebind=1 --membind=1 ./stream_c.exe -b --ntimes 100 --array-size 400M --mallocCopy:        0-&gt;0            205827.0     0.031445     0.031094     0.031984Scale:       0-&gt;0            208171.8     0.031320     0.030744     0.032505Add:         0-&gt;0            217352.0     0.045087     0.044168     0.046515Triad:       0-&gt;0            216884.8     0.045062     0.044263     0.046982=====================================================================Performance tests - XSBenchFrom - Hyeongtak Ji &lt;hyeongtak.ji@sk.com&gt;Hardware: Single socket, Single CXL memory ExpanderNUMA node 0: 56 logical cores, 128 GB memoryNUMA node 2: 96 GB CXL memoryThreads:     56Lookups:     170,000,000Summary: +19% over DRAM. +47% over default interleave.Performance tests - XSBench1. dram only$ numactl -m 0 ./XSBench -s XL &#8211;p 5000000Runtime:     36.235 secondsLookups/s:   4,691,6182. default interleave$ numactl &#8211;i 0,2 ./XSBench &#8211;s XL &#8211;p 5000000Runtime:     55.243 secondsLookups/s:   3,077,2933. weighted interleavenumactl &#8211;w &#8211;i 0,2 ./XSBench &#8211;s XL &#8211;p 5000000Runtime:     29.262 secondsLookups/s:   5,809,513=====================================================================LTP Tests: https://github.com/gmprice/ltp/tree/mempolicy2= Existing testsset_mempolicy, get_mempolicy, mbindMPOL_WEIGHTED_INTERLEAVE added manually to test basic functionality butdid not adjust tests for weighting.  Basically the weights were set to 1,which is the default, and it should behave the same as MPOL_INTERLEAVE iflogic is correct.== set_mempolicy01 : passed   18, failed   0== set_mempolicy02 : passed   10, failed   0== set_mempolicy03 : passed   64, failed   0== set_mempolicy04 : passed   32, failed   0== set_mempolicy05 - n/a on non-x86== set_mempolicy06 : passed   10, failed   0   this is set_mempolicy02 + MPOL_WEIGHTED_INTERLEAVE== set_mempolicy07 : passed   32, failed   0   set_mempolicy04 + MPOL_WEIGHTED_INTERLEAVE== get_mempolicy01 : passed   12, failed   0   change: added MPOL_WEIGHTED_INTERLEAVE== get_mempolicy02 : passed   2, failed   0== mbind01 : passed   15, failed   0   added MPOL_WEIGHTED_INTERLEAVE== mbind02 : passed   4, failed   0   added MPOL_WEIGHTED_INTERLEAVE== mbind03 : passed   16, failed   0   added MPOL_WEIGHTED_INTERLEAVE== mbind04 : passed   48, failed   0   added MPOL_WEIGHTED_INTERLEAVE=====================================================================numactl (set_mempolicy) w/ global weighting testnumactl fork: https://github.com/gmprice/numactl/tree/weighted_interleave_mastercommand: numactl -w --interleave=0,1 ./eatmemresult (weights 1:1):0176a000 weighted interleave:0-1 heap anon=65793 dirty=65793 active=0 N0=32897 N1=32896 kernelpagesize_kB=47fceeb9ff000 weighted interleave:0-1 anon=65537 dirty=65537 active=0 N0=32768 N1=32769 kernelpagesize_kB=450% distribution is correctresult (weights 5:1):01b14000 weighted interleave:0-1 heap anon=65793 dirty=65793 active=0 N0=54828 N1=10965 kernelpagesize_kB=47f47a1dff000 weighted interleave:0-1 anon=65537 dirty=65537 active=0 N0=54614 N1=10923 kernelpagesize_kB=416.666% distribution is correctresult (weights 1:5):01f07000 weighted interleave:0-1 heap anon=65793 dirty=65793 active=0 N0=10966 N1=54827 kernelpagesize_kB=47f17b1dff000 weighted interleave:0-1 anon=65537 dirty=65537 active=0 N0=10923 N1=54614 kernelpagesize_kB=416.666% distribution is correct#include &lt;stdio.h&gt;#include &lt;stdlib.h&gt;#include &lt;string.h&gt;int main (void){        char* mem = malloc(1024*1024*256);        memset(mem, 1, 1024*1024*256);        for (int i = 0; i  &lt; ((1024*1024*256)/4096); i++)        {                mem = malloc(4096);                mem[0] = 1;        }        printf(&quot;done\n&quot;);        getchar();        return 0;}This patch (of 4):This patch provides a way to set interleave weight information under sysfsat /sys/kernel/mm/mempolicy/weighted_interleave/nodeNThe sysfs structure is designed as follows.  $ tree /sys/kernel/mm/mempolicy/  /sys/kernel/mm/mempolicy/ [1]  &#9492;&#9472;&#9472; weighted_interleave [2]      &#9500;&#9472;&#9472; node0 [3]      &#9492;&#9472;&#9472; node1Each file above can be explained as follows.[1] mm/mempolicy: configuration interface for mempolicy subsystem[2] weighted_interleave/: config interface for weighted interleave policy[3] weighted_interleave/nodeN: weight for nodeNIf a node value is set to `0`, the system-default value will be used.As of this patch, the system-default for all nodes is always 1.Link: https://lkml.kernel.org/r/20240202170238.90004-1-gregory.price@memverge.comLink: https://lkml.kernel.org/r/20240202170238.90004-2-gregory.price@memverge.comSuggested-by: &quot;Huang, Ying&quot; &lt;ying.huang@intel.com&gt;Signed-off-by: Rakie Kim &lt;rakie.kim@sk.com&gt;Signed-off-by: Honggyu Kim &lt;honggyu.kim@sk.com&gt;Co-developed-by: Gregory Price &lt;gregory.price@memverge.com&gt;Signed-off-by: Gregory Price &lt;gregory.price@memverge.com&gt;Co-developed-by: Hyeongtak Ji &lt;hyeongtak.ji@sk.com&gt;Signed-off-by: Hyeongtak Ji &lt;hyeongtak.ji@sk.com&gt;Reviewed-by: &quot;Huang, Ying&quot; &lt;ying.huang@intel.com&gt;Cc: Dan Williams &lt;dan.j.williams@intel.com&gt;Cc: Gregory Price &lt;gourry.memverge@gmail.com&gt;Cc: Hasan Al Maruf &lt;Hasan.Maruf@amd.com&gt;Cc: Johannes Weiner &lt;hannes@cmpxchg.org&gt;Cc: Jonathan Corbet &lt;corbet@lwn.net&gt;Cc: Michal Hocko &lt;mhocko@kernel.org&gt;Cc: Srinivasulu Thanneeru &lt;sthanneeru.opensrc@micron.com&gt;Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;

            List of files:
            /linux/Documentation/ABI/testing/sysfs-kernel-mm-mempolicy</description>
        <pubDate>Fri, 02 Feb 2024 18:02:35 +0100</pubDate>
        <dc:creator>Rakie Kim &lt;rakie.kim@sk.com&gt;</dc:creator>
    </item>
</channel>
</rss>
