lkml.org 
[lkml]   [2019]   [Dec]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH AUTOSEL 5.4 244/350] cgroup: freezer: don't change task and cgroups status unnecessarily
    Date
    From: Honglei Wang <honglei.wang@oracle.com>

    [ Upstream commit 742e8cd3e1ba6f19cad6d912f8d469df5557d0fd ]

    It's not necessary to adjust the task state and revisit the state
    of source and destination cgroups if the cgroups are not in freeze
    state and the task itself is not frozen.

    And in this scenario, it wakes up the task who's not supposed to be
    ready to run.

    Don't do the unnecessary task state adjustment can help stop waking
    up the task without a reason.

    Signed-off-by: Honglei Wang <honglei.wang@oracle.com>
    Acked-by: Roman Gushchin <guro@fb.com>
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    kernel/cgroup/freezer.c | 9 +++++++++
    1 file changed, 9 insertions(+)

    diff --git a/kernel/cgroup/freezer.c b/kernel/cgroup/freezer.c
    index 8cf0106806789..3984dd6b8ddbc 100644
    --- a/kernel/cgroup/freezer.c
    +++ b/kernel/cgroup/freezer.c
    @@ -230,6 +230,15 @@ void cgroup_freezer_migrate_task(struct task_struct *task,
    if (task->flags & PF_KTHREAD)
    return;

    + /*
    + * It's not necessary to do changes if both of the src and dst cgroups
    + * are not freezing and task is not frozen.
    + */
    + if (!test_bit(CGRP_FREEZE, &src->flags) &&
    + !test_bit(CGRP_FREEZE, &dst->flags) &&
    + !task->frozen)
    + return;
    +
    /*
    * Adjust counters of freezing and frozen tasks.
    * Note, that if the task is frozen, but the destination cgroup is not
    --
    2.20.1
    \
     
     \ /
      Last update: 2019-12-10 22:12    [W:4.521 / U:0.008 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site