Re: [RFC 07/15] slub: Add defrag_used_ratio field and sysfs support

From: Tobin C. Harding
Date: Mon Mar 11 2019 - 02:04:47 EST


On Fri, Mar 08, 2019 at 09:01:51AM -0700, Tycho Andersen wrote:
> On Fri, Mar 08, 2019 at 03:14:18PM +1100, Tobin C. Harding wrote:
> > --- a/mm/slub.c
> > +++ b/mm/slub.c
> > @@ -3642,6 +3642,7 @@ static int kmem_cache_open(struct kmem_cache *s, slab_flags_t flags)
> >
> > set_cpu_partial(s);
> >
> > + s->defrag_used_ratio = 30;
> > #ifdef CONFIG_NUMA
> > s->remote_node_defrag_ratio = 1000;
> > #endif
> > @@ -5261,6 +5262,28 @@ static ssize_t destroy_by_rcu_show(struct kmem_cache *s, char *buf)
> > }
> > SLAB_ATTR_RO(destroy_by_rcu);
> >
> > +static ssize_t defrag_used_ratio_show(struct kmem_cache *s, char *buf)
> > +{
> > + return sprintf(buf, "%d\n", s->defrag_used_ratio);
> > +}
> > +
> > +static ssize_t defrag_used_ratio_store(struct kmem_cache *s,
> > + const char *buf, size_t length)
> > +{
> > + unsigned long ratio;
> > + int err;
> > +
> > + err = kstrtoul(buf, 10, &ratio);
> > + if (err)
> > + return err;
> > +
> > + if (ratio <= 100)
> > + s->defrag_used_ratio = ratio;
> else
> return -EINVAL;

Nice, thanks. I moulded your suggestion into

if (ratio > 100)
return -EINVAL;

s->defrag_used_ratio = ratio;
return length;


thanks,
Tobin.