Message ID | 20211216124655.32247-3-zhengqi.arch@bytedance.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | add MemAvailable to per-node meminfo | expand |
On Thu, Dec 16, 2021 at 08:46:55PM +0800, Qi Zheng wrote:
> Reimplement si_mem_available() by reusing si_mem_available_node().
That says what you did, but not why. Why are you doing this?
And what does it have to do with patch 1/2?
thanks,
greg k-h
Hi Qi,
Thank you for the patch! Yet something to improve:
[auto build test ERROR on hnaz-mm/master]
[also build test ERROR on driver-core/driver-core-testing linux/master linus/master v5.16-rc5 next-20211215]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]
url: https://github.com/0day-ci/linux/commits/Qi-Zheng/add-MemAvailable-to-per-node-meminfo/20211216-204828
base: https://github.com/hnaz/linux-mm master
config: um-i386_defconfig (https://download.01.org/0day-ci/archive/20211216/202112162327.HwWtuYUQ-lkp@intel.com/config)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0
reproduce (this is a W=1 build):
# https://github.com/0day-ci/linux/commit/7980664f23d619d15a3931fe1ab7d1dbafad7c88
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Qi-Zheng/add-MemAvailable-to-per-node-meminfo/20211216-204828
git checkout 7980664f23d619d15a3931fe1ab7d1dbafad7c88
# save the config file to linux build tree
mkdir build_dir
make W=1 O=build_dir ARCH=um SUBARCH=i386 SHELL=/bin/bash
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
All errors (new ones prefixed by >>):
/usr/bin/ld: mm/page_alloc.o: in function `si_mem_available':
>> page_alloc.c:(.text+0x3083): undefined reference to `si_meminfo_node'
collect2: error: ld returned 1 exit status
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
On 12/16/21 9:17 PM, Greg KH wrote: > On Thu, Dec 16, 2021 at 08:46:55PM +0800, Qi Zheng wrote: >> Reimplement si_mem_available() by reusing si_mem_available_node(). > > That says what you did, but not why. Why are you doing this? Oh, sorry, I will add that. > > And what does it have to do with patch 1/2? With [PATCH 1/2], we can simply sum the MemAvailable of each node to get the gobal MemAvailable. Essentially this is a cleanup, no functional changes. Thanks, Qi > > thanks, > > greg k-h >
Hi Qi, Thank you for the patch! Yet something to improve: [auto build test ERROR on hnaz-mm/master] [also build test ERROR on driver-core/driver-core-testing linux/master linus/master v5.16-rc5 next-20211215] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch] url: https://github.com/0day-ci/linux/commits/Qi-Zheng/add-MemAvailable-to-per-node-meminfo/20211216-204828 base: https://github.com/hnaz/linux-mm master config: hexagon-randconfig-r045-20211216 (https://download.01.org/0day-ci/archive/20211217/202112170216.SkyvfZzv-lkp@intel.com/config) compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project dd245bab9fbb364faa1581e4f92ba3119a872fba) reproduce (this is a W=1 build): wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # https://github.com/0day-ci/linux/commit/7980664f23d619d15a3931fe1ab7d1dbafad7c88 git remote add linux-review https://github.com/0day-ci/linux git fetch --no-tags linux-review Qi-Zheng/add-MemAvailable-to-per-node-meminfo/20211216-204828 git checkout 7980664f23d619d15a3931fe1ab7d1dbafad7c88 # save the config file to linux build tree mkdir build_dir COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=hexagon SHELL=/bin/bash If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <lkp@intel.com> All errors (new ones prefixed by >>): >> ld.lld: error: undefined symbol: si_meminfo_node >>> referenced by page_alloc.c >>> page_alloc.o:(si_mem_available) in archive mm/built-in.a >>> referenced by page_alloc.c >>> page_alloc.o:(si_mem_available) in archive mm/built-in.a --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
Hi Qi, Thank you for the patch! Yet something to improve: [auto build test ERROR on hnaz-mm/master] [also build test ERROR on driver-core/driver-core-testing linux/master linus/master v5.16-rc5 next-20211215] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch] url: https://github.com/0day-ci/linux/commits/Qi-Zheng/add-MemAvailable-to-per-node-meminfo/20211216-204828 base: https://github.com/hnaz/linux-mm master config: arc-randconfig-r043-20211216 (https://download.01.org/0day-ci/archive/20211217/202112170401.UyUM1wQ5-lkp@intel.com/config) compiler: arc-elf-gcc (GCC) 11.2.0 reproduce (this is a W=1 build): wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # https://github.com/0day-ci/linux/commit/7980664f23d619d15a3931fe1ab7d1dbafad7c88 git remote add linux-review https://github.com/0day-ci/linux git fetch --no-tags linux-review Qi-Zheng/add-MemAvailable-to-per-node-meminfo/20211216-204828 git checkout 7980664f23d619d15a3931fe1ab7d1dbafad7c88 # save the config file to linux build tree mkdir build_dir COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.2.0 make.cross O=build_dir ARCH=arc SHELL=/bin/bash If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <lkp@intel.com> All errors (new ones prefixed by >>): arc-elf-ld: mm/page_alloc.o: in function `si_mem_available': >> (.text+0x8248): undefined reference to `si_meminfo_node' >> arc-elf-ld: (.text+0x8248): undefined reference to `si_meminfo_node' --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
diff --git a/mm/page_alloc.c b/mm/page_alloc.c index 31f5e3e335cf..0982372c8e49 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -5782,46 +5782,15 @@ long si_mem_available_node(struct sysinfo *val, int nid) long si_mem_available(void) { - long available; - unsigned long pagecache; - unsigned long wmark_low = 0; - unsigned long pages[NR_LRU_LISTS]; - unsigned long reclaimable; - struct zone *zone; - int lru; - - for (lru = LRU_BASE; lru < NR_LRU_LISTS; lru++) - pages[lru] = global_node_page_state(NR_LRU_BASE + lru); - - for_each_zone(zone) - wmark_low += low_wmark_pages(zone); - - /* - * Estimate the amount of memory available for userspace allocations, - * without causing swapping. - */ - available = global_zone_page_state(NR_FREE_PAGES) - totalreserve_pages; - - /* - * Not all the page cache can be freed, otherwise the system will - * start swapping. Assume at least half of the page cache, or the - * low watermark worth of cache, needs to stay. - */ - pagecache = pages[LRU_ACTIVE_FILE] + pages[LRU_INACTIVE_FILE]; - pagecache -= min(pagecache / 2, wmark_low); - available += pagecache; + long available = 0; + struct sysinfo i; + int nid; - /* - * Part of the reclaimable slab and other kernel memory consists of - * items that are in use, and cannot be freed. Cap this estimate at the - * low watermark. - */ - reclaimable = global_node_page_state_pages(NR_SLAB_RECLAIMABLE_B) + - global_node_page_state(NR_KERNEL_MISC_RECLAIMABLE); - available += reclaimable - min(reclaimable / 2, wmark_low); + for_each_online_node(nid) { + si_meminfo_node(&i, nid); + available += si_mem_available_node(&i, nid); + } - if (available < 0) - available = 0; return available; } EXPORT_SYMBOL_GPL(si_mem_available);
Reimplement si_mem_available() by reusing si_mem_available_node(). Signed-off-by: Qi Zheng <zhengqi.arch@bytedance.com> --- mm/page_alloc.c | 45 +++++++-------------------------------------- 1 file changed, 7 insertions(+), 38 deletions(-)