Messages in this thread | | | Subject | Re: [PATCH] sched: Provide iowait counters | From | Peter Zijlstra <> | Date | Mon, 20 Jul 2009 21:16:09 +0200 |
| |
On Mon, 2009-07-20 at 11:31 -0700, Arjan van de Ven wrote: > From cb80fe74bab69449c828d7433fbbea807816eee8 Mon Sep 17 00:00:00 2001 > From: Arjan van de Ven <arjan@linux.intel.com> > Date: Mon, 20 Jul 2009 11:26:58 -0700 > Subject: [PATCH] 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>
Seems sane enough, I'll pick her up. Thanks!
> +++ b/kernel/sched_fair.c > @@ -633,6 +633,11 @@ static void enqueue_sleeper(struct cfs_rq *cfs_rq, struct sched_entity *se) > se->block_start = 0; > se->sum_sleep_runtime += delta; > > + if (tsk->in_iowait) { > + se->iowait_sum += delta; > + se->iowait_count++; > + } > + > /* > * Blocking time is in units of nanosecs, so shift by 20 to > * get a milliseconds-range estimation of the amount of
It might be nice to put a tracepoint there as well, now if there was a way to specify perf counter attributes in the TRACE_EVENT() magic so that we can feed stuff into perf_tpcounter_event().
TP_perf_addr() -- defaults to 0 when not specified TP_perf_count() -- defaults to 1 when not specified.
Steve, Frederic, is there any way to make that happen?
Failing that we could put an actual swcounter in there I suppose.
That way we could profile applications based on IO-wait, which would be cool.
| |