)]}'
{
  "commit": "b30aef17f71cf9e24b10c11cbb5e5f0ebe8a85ab",
  "tree": "0e5e0e0d1d93edf934f58b116ee0c4e81db01e72",
  "parents": [
    "b0432d8f162c7d5d9537b4cb749d44076b76a783"
  ],
  "author": {
    "name": "Ken Chen",
    "email": "kenchen@google.com",
    "time": "Fri Apr 08 12:20:16 2011 -0700"
  },
  "committer": {
    "name": "Ingo Molnar",
    "email": "mingo@elte.hu",
    "time": "Mon Apr 11 11:08:54 2011 +0200"
  },
  "message": "sched: Fix erroneous all_pinned logic\n\nThe scheduler load balancer has specific code to deal with cases of\nunbalanced system due to lots of unmovable tasks (for example because of\nhard CPU affinity). In those situation, it excludes the busiest CPU that\nhas pinned tasks for load balance consideration such that it can perform\nsecond 2nd load balance pass on the rest of the system.\n\nThis all works as designed if there is only one cgroup in the system.\n\nHowever, when we have multiple cgroups, this logic has false positives and\ntriggers multiple load balance passes despite there are actually no pinned\ntasks at all.\n\nThe reason it has false positives is that the all pinned logic is deep in\nthe lowest function of can_migrate_task() and is too low level:\n\nload_balance_fair() iterates each task group and calls balance_tasks() to\nmigrate target load. Along the way, balance_tasks() will also set a\nall_pinned variable. Given that task-groups are iterated, this all_pinned\nvariable is essentially the status of last group in the scanning process.\nTask group can have number of reasons that no load being migrated, none\ndue to cpu affinity. However, this status bit is being propagated back up\nto the higher level load_balance(), which incorrectly think that no tasks\nwere moved.  It kick off the all pinned logic and start multiple passes\nattempt to move load onto puller CPU.\n\nTo fix this, move the all_pinned aggregation up at the iterator level.\nThis ensures that the status is aggregated over all task-groups, not just\nlast one in the list.\n\nSigned-off-by: Ken Chen \u003ckenchen@google.com\u003e\nCc: stable@kernel.org\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nLink: http://lkml.kernel.org/r/BANLkTi\u003dernzNawaR5tJZEsV_QVnfxqXmsQ@mail.gmail.com\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "60f9d407c5ec09c39d55df51e7e363ba90118d19",
      "old_mode": 33188,
      "old_path": "kernel/sched_fair.c",
      "new_id": "6fa833ab2cb80ebac3e3f38007f0d7c47995769e",
      "new_mode": 33188,
      "new_path": "kernel/sched_fair.c"
    }
  ]
}
