sched: normalize sleeper's vruntime during group change
authorDima Zavin <dima@android.com>
Wed, 29 Sep 2010 00:24:51 +0000 (17:24 -0700)
committerColin Cross <ccross@android.com>
Mon, 4 Oct 2010 19:08:04 +0000 (12:08 -0700)
commitcbb658990449df002eb9775f0b5ad104a7114b5f
tree4030eccaa8635fe2043f9c15c584b8e140955a24
parent3cfc28bd7cdb071d4c6b27c7a6aa84023ac211b6
sched: normalize sleeper's vruntime during group change

If you switch the cgroup of a sleeping thread, its vruntime does
not get adjusted correctly for the difference between the
min_vruntime values of the two groups.

This patch adds a new callback, prep_move_task, to struct sched_class
to give sched_fair the opportunity to adjust the task's vruntime
just before setting its new group. This allows us to properly normalize
a sleeping task's vruntime when moving it between different cgroups.

More details about the problem:
  http://lkml.org/lkml/2010/9/28/24

Cc: Arve Hjønnevåg <arve@android.com>
Signed-off-by: Dima Zavin <dima@android.com>
include/linux/sched.h
kernel/sched.c
kernel/sched_fair.c