[-mm] Disable the memory controller by default (v2) - Kernel

This is a discussion on [-mm] Disable the memory controller by default (v2) - Kernel ; Changelog v1 1. Split cgroup_disable into cgroup_disable and cgroup_enable 2. Remove cgroup_toggle Due to the overhead of the memory controller. The memory controller is now disabled by default. This patch adds cgroup_enable. If everyone agrees on this approach and likes ...

+ Reply to Thread
Results 1 to 5 of 5

Thread: [-mm] Disable the memory controller by default (v2)

  1. [-mm] Disable the memory controller by default (v2)



    Changelog v1

    1. Split cgroup_disable into cgroup_disable and cgroup_enable
    2. Remove cgroup_toggle

    Due to the overhead of the memory controller. The
    memory controller is now disabled by default. This patch adds cgroup_enable.

    If everyone agrees on this approach and likes it, should we push this
    into 2.6.25?

    Signed-off-by: Balbir Singh
    ---

    Documentation/kernel-parameters.txt | 3 +++
    kernel/cgroup.c | 28 ++++++++++++++++++++++++++--
    mm/memcontrol.c | 1 +
    3 files changed, 30 insertions(+), 2 deletions(-)

    diff -puN kernel/cgroup.c~memory-controller-default-option-off kernel/cgroup.c
    --- linux-2.6.25-rc8/kernel/cgroup.c~memory-controller-default-option-off 2008-04-07 16:24:28.000000000 +0530
    +++ linux-2.6.25-rc8-balbir/kernel/cgroup.c 2008-04-07 18:30:31.000000000 +0530
    @@ -3077,8 +3077,8 @@ static int __init cgroup_disable(char *s

    if (!strcmp(token, ss->name)) {
    ss->disabled = 1;
    - printk(KERN_INFO "Disabling %s control group"
    - " subsystem\n", ss->name);
    + printk(KERN_INFO "%s control group "
    + "is disabled\n", ss->name);
    break;
    }
    }
    @@ -3086,3 +3086,27 @@ static int __init cgroup_disable(char *s
    return 1;
    }
    __setup("cgroup_disable=", cgroup_disable);
    +
    +static int __init cgroup_enable(char *str)
    +{
    + int i;
    + char *token;
    +
    + while ((token = strsep(&str, ",")) != NULL) {
    + if (!*token)
    + continue;
    +
    + for (i = 0; i < CGROUP_SUBSYS_COUNT; i++) {
    + struct cgroup_subsys *ss = subsys[i];
    +
    + if (!strcmp(token, ss->name)) {
    + ss->disabled = 0;
    + printk(KERN_INFO "%s control group "
    + "is enabled\n", ss->name);
    + break;
    + }
    + }
    + }
    + return 1;
    +}
    +__setup("cgroup_enable=", cgroup_enable);
    diff -puN mm/memcontrol.c~memory-controller-default-option-off mm/memcontrol.c
    --- linux-2.6.25-rc8/mm/memcontrol.c~memory-controller-default-option-off 2008-04-07 16:24:28.000000000 +0530
    +++ linux-2.6.25-rc8-balbir/mm/memcontrol.c 2008-04-07 16:40:22.000000000 +0530
    @@ -1104,4 +1104,5 @@ struct cgroup_subsys mem_cgroup_subsys =
    .populate = mem_cgroup_populate,
    .attach = mem_cgroup_move_task,
    .early_init = 0,
    + .disabled = 1,
    };
    diff -puN Documentation/kernel-parameters.txt~memory-controller-default-option-off Documentation/kernel-parameters.txt
    --- linux-2.6.25-rc8/Documentation/kernel-parameters.txt~memory-controller-default-option-off 2008-04-07 16:38:25.000000000 +0530
    +++ linux-2.6.25-rc8-balbir/Documentation/kernel-parameters.txt 2008-04-07 17:53:28.000000000 +0530
    @@ -382,8 +382,11 @@ and is between 256 and 4096 characters.
    See Documentation/s390/CommonIO for details.

    cgroup_disable= [KNL] Disable a particular controller
    + cgroup_enable= [KNL] Enable a particular controller
    + For both cgroup_enable and cgroup_enable
    Format: {name of the controller(s) to disable}
    {Currently supported controllers - "memory"}
    + {Memory controller is disabled by default}

    checkreqprot [SELINUX] Set initial checkreqprot flag value.
    Format: { "0" | "1" }
    _

    --
    Warm Regards,
    Balbir Singh
    Linux Technology Center
    IBM, ISTL
    --
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

  2. Re: [-mm] Disable the memory controller by default (v2)

    > Changelog v1
    >
    > 1. Split cgroup_disable into cgroup_disable and cgroup_enable
    > 2. Remove cgroup_toggle
    >
    > Due to the overhead of the memory controller. The
    > memory controller is now disabled by default. This patch adds cgroup_enable.
    >
    > If everyone agrees on this approach and likes it, should we push this
    > into 2.6.25?


    Acked-by: KOSAKI Motohiro
    --
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

  3. Re: [-mm] Disable the memory controller by default (v2)

    On Mon, Apr 7, 2008 at 6:02 AM, Balbir Singh wrote:
    > return 1;
    > }
    > __setup("cgroup_disable=", cgroup_disable);
    > +
    > +static int __init cgroup_enable(char *str)
    > +{
    > + int i;
    > + char *token;
    > +
    > + while ((token = strsep(&str, ",")) != NULL) {
    > + if (!*token)
    > + continue;
    > +
    > + for (i = 0; i < CGROUP_SUBSYS_COUNT; i++) {
    > + struct cgroup_subsys *ss = subsys[i];
    > +
    > + if (!strcmp(token, ss->name)) {
    > + ss->disabled = 0;
    > + printk(KERN_INFO "%s control group "
    > + "is enabled\n", ss->name);
    > + break;
    > + }
    > + }
    > + }
    > + return 1;
    > +}
    > +__setup("cgroup_enable=", cgroup_enable);


    Good idea - but you could just use the same handler function for both
    of these (with a one-line wrapper for each to pass disabled=1 or
    disabled=0)

    Paul
    --
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

  4. Re: [-mm] Disable the memory controller by default (v2)

    On Mon, 07 Apr 2008 18:32:15 +0530
    Balbir Singh wrote:

    >
    >
    > Changelog v1
    >
    > 1. Split cgroup_disable into cgroup_disable and cgroup_enable
    > 2. Remove cgroup_toggle
    >
    > Due to the overhead of the memory controller. The
    > memory controller is now disabled by default. This patch adds cgroup_enable.
    >
    > If everyone agrees on this approach and likes it, should we push this
    > into 2.6.25?
    >
    > Signed-off-by: Balbir Singh
    > ---

    BTW, how the user can know which controllers are on/off at default ?
    All controllers are off ?

    Thanks,
    -Kame

    --
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

  5. Re: [-mm] Disable the memory controller by default (v2)

    KAMEZAWA Hiroyuki wrote:
    > On Mon, 07 Apr 2008 18:32:15 +0530
    > Balbir Singh wrote:
    >
    >>
    >> Changelog v1
    >>
    >> 1. Split cgroup_disable into cgroup_disable and cgroup_enable
    >> 2. Remove cgroup_toggle
    >>
    >> Due to the overhead of the memory controller. The
    >> memory controller is now disabled by default. This patch adds cgroup_enable.
    >>
    >> If everyone agrees on this approach and likes it, should we push this
    >> into 2.6.25?
    >>
    >> Signed-off-by: Balbir Singh
    >> ---

    > BTW, how the user can know which controllers are on/off at default ?
    > All controllers are off ?
    >


    /proc/cgroups has an enabled field (fourth one). That should show what is
    enabled/disabled. I've also documented it in
    Documentation/kernel-parameters.txt. I intend to enable the memory controller
    again, once we bring down the overhead.

    --
    Warm Regards,
    Balbir Singh
    Linux Technology Center
    IBM, ISTL
    --
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

+ Reply to Thread