sched, delay accounting: fix incorrect delay time when constantly waiting on runqueue
authorBharath Ravi <bharathravi1@gmail.com>
Mon, 16 Jun 2008 09:41:01 +0000 (14:41 +0530)
committerIngo Molnar <mingo@elte.hu>
Thu, 19 Jun 2008 12:15:28 +0000 (14:15 +0200)
commitd4abc238c9f4df8b3216f3e883f5d0a07b7ac75a
tree38b571d9a787a62ee88de8f1a2d1c39b3a9d83b8
parentd819c49da624e3ee09b2844603d58265039eecdd
sched, delay accounting: fix incorrect delay time when constantly waiting on runqueue

This patch corrects the incorrect value of per process run-queue wait
time reported by delay statistics. The anomaly was due to the following
reason. When a process leaves the CPU and immediately starts waiting for
CPU on the runqueue (which means it remains in the TASK_RUNNABLE state),
the time of re-entry into the run-queue is never recorded. Due to this,
the waiting time on the runqueue from this point of re-entry upto the
next time it hits the CPU is not accounted for. This is solved by
recording the time of re-entry of a process leaving the CPU in the
sched_info_depart() function IF the process will go back to waiting on
the run-queue. This IF condition is verified by checking whether the
process is still in the TASK_RUNNABLE state.

The patch was tested on 2.6.26-rc6 using two simple CPU hog programs.
The values noted prior to the fix did not account for the time spent on
the runqueue waiting. After the fix, the correct values were reported
back to user space.

Signed-off-by: Bharath Ravi <bharathravi1@gmail.com>
Signed-off-by: Madhava K R <madhavakr@gmail.com>
Cc: dhaval@linux.vnet.ibm.com
Cc: vatsa@in.ibm.com
Cc: balbir@in.ibm.com
Acked-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
kernel/sched_stats.h