diff options
author | Arjan van de Ven <arjan@linux.intel.com> | 2009-07-20 14:26:58 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2009-09-02 02:44:08 -0400 |
commit | 8f0dfc34e9b323a028c2ec41abb7e9de477b7a94 (patch) | |
tree | fa7e44d9ad3eb22517f0724e71f9812f71a16ae2 /kernel/sched.c | |
parent | f14eff1cc2f418a7c5e23aedc6a1bdca3343b871 (diff) |
sched: Provide iowait counters
For counting how long an application has been waiting for
(disk) IO, there currently is only the HZ sample driven
information available, while for all other counters in this
class, a high resolution version is available via
CONFIG_SCHEDSTATS.
In order to make an improved bootchart tool possible, we also
need a higher resolution version of the iowait time.
This patch below adds this scheduler statistic to the kernel.
Signed-off-by: Arjan van de Ven <arjan@linux.intel.com>
Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
LKML-Reference: <4A64B813.1080506@linux.intel.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'kernel/sched.c')
-rw-r--r-- | kernel/sched.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/kernel/sched.c b/kernel/sched.c index 6244d24cafc1..38d05a89e0f2 100644 --- a/kernel/sched.c +++ b/kernel/sched.c | |||
@@ -6754,7 +6754,9 @@ void __sched io_schedule(void) | |||
6754 | 6754 | ||
6755 | delayacct_blkio_start(); | 6755 | delayacct_blkio_start(); |
6756 | atomic_inc(&rq->nr_iowait); | 6756 | atomic_inc(&rq->nr_iowait); |
6757 | current->in_iowait = 1; | ||
6757 | schedule(); | 6758 | schedule(); |
6759 | current->in_iowait = 0; | ||
6758 | atomic_dec(&rq->nr_iowait); | 6760 | atomic_dec(&rq->nr_iowait); |
6759 | delayacct_blkio_end(); | 6761 | delayacct_blkio_end(); |
6760 | } | 6762 | } |
@@ -6767,7 +6769,9 @@ long __sched io_schedule_timeout(long timeout) | |||
6767 | 6769 | ||
6768 | delayacct_blkio_start(); | 6770 | delayacct_blkio_start(); |
6769 | atomic_inc(&rq->nr_iowait); | 6771 | atomic_inc(&rq->nr_iowait); |
6772 | current->in_iowait = 1; | ||
6770 | ret = schedule_timeout(timeout); | 6773 | ret = schedule_timeout(timeout); |
6774 | current->in_iowait = 0; | ||
6771 | atomic_dec(&rq->nr_iowait); | 6775 | atomic_dec(&rq->nr_iowait); |
6772 | delayacct_blkio_end(); | 6776 | delayacct_blkio_end(); |
6773 | return ret; | 6777 | return ret; |