Re: [PATCH 2/4] memcg: reduce memory for the lruvec and memcg stats

From: kernel test robot
Date: Tue Apr 23 2024 - 10:41:52 EST


Hi Shakeel,

kernel test robot noticed the following build errors:

[auto build test ERROR on next-20240422]
[cannot apply to akpm-mm/mm-everything linus/master v6.9-rc5 v6.9-rc4 v6.9-rc3 v6.9-rc5]
[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#_base_tree_information]

url: https://github.com/intel-lab-lkp/linux/commits/Shakeel-Butt/mm-rearrange-node_stat_item-to-put-memcg-stats-at-start/20240423-132451
base: next-20240422
patch link: https://lore.kernel.org/r/20240423051826.791934-3-shakeel.butt%40linux.dev
patch subject: [PATCH 2/4] memcg: reduce memory for the lruvec and memcg stats
config: x86_64-buildonly-randconfig-002-20240423 (https://download.01.org/0day-ci/archive/20240423/202404232230.94gQwAI2-lkp@xxxxxxxxx/config)
compiler: clang version 17.0.6 (https://github.com/llvm/llvm-project 6009708b4367171ccdbf4b5905cb6a803753fe18)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240423/202404232230.94gQwAI2-lkp@xxxxxxxxx/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@xxxxxxxxx>
| Closes: https://lore.kernel.org/oe-kbuild-all/202404232230.94gQwAI2-lkp@xxxxxxxxx/

All errors (new ones prefixed by >>):

>> mm/memcontrol.c:1651:2: error: call to '__compiletime_assert_963' declared with 'error' attribute: BUILD_BUG_ON failed: ARRAY_SIZE(memory_stats) != MEMCG_NR_STAT - 1
1651 | BUILD_BUG_ON(ARRAY_SIZE(memory_stats) != MEMCG_NR_STAT - 1);
| ^
include/linux/build_bug.h:50:2: note: expanded from macro 'BUILD_BUG_ON'
50 | BUILD_BUG_ON_MSG(condition, "BUILD_BUG_ON failed: " #condition)
| ^
include/linux/build_bug.h:39:37: note: expanded from macro 'BUILD_BUG_ON_MSG'
39 | #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
| ^
include/linux/compiler_types.h:460:2: note: expanded from macro 'compiletime_assert'
460 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
| ^
include/linux/compiler_types.h:448:2: note: expanded from macro '_compiletime_assert'
448 | __compiletime_assert(condition, msg, prefix, suffix)
| ^
include/linux/compiler_types.h:441:4: note: expanded from macro '__compiletime_assert'
441 | prefix ## suffix(); \
| ^
<scratch space>:40:1: note: expanded from here
40 | __compiletime_assert_963
| ^
1 error generated.


vim +1651 mm/memcontrol.c

1645
1646 static void memcg_stat_format(struct mem_cgroup *memcg, struct seq_buf *s)
1647 {
1648 int i;
1649
1650 /* Reduce by 1 for MEMCG_SWAP as that is not exposed in v2. */
> 1651 BUILD_BUG_ON(ARRAY_SIZE(memory_stats) != MEMCG_NR_STAT - 1);
1652
1653 /*
1654 * Provide statistics on the state of the memory subsystem as
1655 * well as cumulative event counters that show past behavior.
1656 *
1657 * This list is ordered following a combination of these gradients:
1658 * 1) generic big picture -> specifics and details
1659 * 2) reflecting userspace activity -> reflecting kernel heuristics
1660 *
1661 * Current memory state:
1662 */
1663 mem_cgroup_flush_stats(memcg);
1664
1665 for (i = 0; i < ARRAY_SIZE(memory_stats); i++) {
1666 u64 size;
1667
1668 size = memcg_page_state_output(memcg, memory_stats[i].idx);
1669 seq_buf_printf(s, "%s %llu\n", memory_stats[i].name, size);
1670
1671 if (unlikely(memory_stats[i].idx == NR_SLAB_UNRECLAIMABLE_B)) {
1672 size += memcg_page_state_output(memcg,
1673 NR_SLAB_RECLAIMABLE_B);
1674 seq_buf_printf(s, "slab %llu\n", size);
1675 }
1676 }
1677
1678 /* Accumulated memory events */
1679 seq_buf_printf(s, "pgscan %lu\n",
1680 memcg_events(memcg, PGSCAN_KSWAPD) +
1681 memcg_events(memcg, PGSCAN_DIRECT) +
1682 memcg_events(memcg, PGSCAN_KHUGEPAGED));
1683 seq_buf_printf(s, "pgsteal %lu\n",
1684 memcg_events(memcg, PGSTEAL_KSWAPD) +
1685 memcg_events(memcg, PGSTEAL_DIRECT) +
1686 memcg_events(memcg, PGSTEAL_KHUGEPAGED));
1687
1688 for (i = 0; i < ARRAY_SIZE(memcg_vm_event_stat); i++) {
1689 if (memcg_vm_event_stat[i] == PGPGIN ||
1690 memcg_vm_event_stat[i] == PGPGOUT)
1691 continue;
1692
1693 seq_buf_printf(s, "%s %lu\n",
1694 vm_event_name(memcg_vm_event_stat[i]),
1695 memcg_events(memcg, memcg_vm_event_stat[i]));
1696 }
1697
1698 /* The above should easily fit into one page */
1699 WARN_ON_ONCE(seq_buf_has_overflowed(s));
1700 }
1701

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki