Message ID | 20221121171202.22080-8-vbabka@suse.cz (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | Introduce CONFIG_SLUB_TINY and deprecate SLOB | expand |
On Mon, Nov 21, 2022 at 06:11:57PM +0100, Vlastimil Babka wrote: > SLAB_RECLAIM_ACCOUNT caches allocate their slab pages with > __GFP_RECLAIMABLE and can help against fragmentation by grouping pages > by mobility, but on tiny systems mobility grouping is likely disabled > anyway and ignoring SLAB_RECLAIM_ACCOUNT might instead lead to merging > of caches that are made incompatible just by the flag. > > Thus with CONFIG_SLUB_TINY, make SLAB_RECLAIM_ACCOUNT ineffective. Hm, do you see disabling all kernel memory accounting functionality with COFNIG_SLUB_TINY? I'd say yes. But in this case need to be consistent and disable it alltogether. Thanks!
On 11/24/22 02:20, Roman Gushchin wrote: > On Mon, Nov 21, 2022 at 06:11:57PM +0100, Vlastimil Babka wrote: >> SLAB_RECLAIM_ACCOUNT caches allocate their slab pages with >> __GFP_RECLAIMABLE and can help against fragmentation by grouping pages >> by mobility, but on tiny systems mobility grouping is likely disabled >> anyway and ignoring SLAB_RECLAIM_ACCOUNT might instead lead to merging >> of caches that are made incompatible just by the flag. >> >> Thus with CONFIG_SLUB_TINY, make SLAB_RECLAIM_ACCOUNT ineffective. > > Hm, do you see disabling all kernel memory accounting functionality > with COFNIG_SLUB_TINY? I'd say yes. But in this case need to be consistent > and disable it alltogether. SLAB_RECLAIM_ACCOUNT is kinda misnomer these days, as the only thing it does is to add __GFP_RECLAIMABLE to cache's gfp flags for the page allocator's mobility grouping. I guess the "ACCOUNT" part comes from being counted towards SReclaimable (vs SUnreclaim) in /proc/meminfo. So currently SLUB_TINY has no effect on MEMCG_KMEM (which you probably meant). Using those two together has little sense and had I stumbled while making this series upon a code that would become complicated, I would have made SLUB_TINY disable MEMCG_KMEM, but that didn't happen so I left as is for now. > Thanks!
On Thu, 24 Nov 2022, Vlastimil Babka wrote: > SLAB_RECLAIM_ACCOUNT is kinda misnomer these days, as the only thing it does > is to add __GFP_RECLAIMABLE to cache's gfp flags for the page allocator's > mobility grouping. I guess the "ACCOUNT" part comes from being counted > towards SReclaimable (vs SUnreclaim) in /proc/meminfo. Well these Sreclaimable etc counters visible in /proc/meminfo are used in the reclaim logic and are quite important there.
On 11/21/22 18:11, Vlastimil Babka wrote: > SLAB_RECLAIM_ACCOUNT caches allocate their slab pages with > __GFP_RECLAIMABLE and can help against fragmentation by grouping pages > by mobility, but on tiny systems mobility grouping is likely disabled > anyway and ignoring SLAB_RECLAIM_ACCOUNT might instead lead to merging > of caches that are made incompatible just by the flag. > > Thus with CONFIG_SLUB_TINY, make SLAB_RECLAIM_ACCOUNT ineffective. > > Signed-off-by: Vlastimil Babka <vbabka@suse.cz> > --- > include/linux/slab.h | 4 ++++ > 1 file changed, 4 insertions(+) > > diff --git a/include/linux/slab.h b/include/linux/slab.h > index 3ce9474c90ab..1cbbda03ad06 100644 > --- a/include/linux/slab.h > +++ b/include/linux/slab.h > @@ -129,7 +129,11 @@ > > /* The following flags affect the page allocator grouping pages by mobility */ > /* Objects are reclaimable */ > +#ifndef CONFIG_SLUB_TINY > #define SLAB_RECLAIM_ACCOUNT ((slab_flags_t __force)0x00020000U) > +#else > +#define SLAB_RECLAIM_ACCOUNT 0 Updating the last line above to: #define SLAB_RECLAIM_ACCOUNT ((slab_flags_t __force)0) In response to: https://lore.kernel.org/all/202211280441.yCEecX9z-lkp@intel.com/ Yeah it probably means that the other pre-existing flag variants that #define to 0 should be also adjusted to avoid these issues, but not as part of this series. > +#endif > #define SLAB_TEMPORARY SLAB_RECLAIM_ACCOUNT /* Objects are short-lived */ > > /*
diff --git a/include/linux/slab.h b/include/linux/slab.h index 3ce9474c90ab..1cbbda03ad06 100644 --- a/include/linux/slab.h +++ b/include/linux/slab.h @@ -129,7 +129,11 @@ /* The following flags affect the page allocator grouping pages by mobility */ /* Objects are reclaimable */ +#ifndef CONFIG_SLUB_TINY #define SLAB_RECLAIM_ACCOUNT ((slab_flags_t __force)0x00020000U) +#else +#define SLAB_RECLAIM_ACCOUNT 0 +#endif #define SLAB_TEMPORARY SLAB_RECLAIM_ACCOUNT /* Objects are short-lived */ /*
SLAB_RECLAIM_ACCOUNT caches allocate their slab pages with __GFP_RECLAIMABLE and can help against fragmentation by grouping pages by mobility, but on tiny systems mobility grouping is likely disabled anyway and ignoring SLAB_RECLAIM_ACCOUNT might instead lead to merging of caches that are made incompatible just by the flag. Thus with CONFIG_SLUB_TINY, make SLAB_RECLAIM_ACCOUNT ineffective. Signed-off-by: Vlastimil Babka <vbabka@suse.cz> --- include/linux/slab.h | 4 ++++ 1 file changed, 4 insertions(+)