diff options
| author | Balbir Singh <balbir@linux.vnet.ibm.com> | 2007-07-09 18:52:00 +0200 | 
|---|---|---|
| committer | Ingo Molnar <mingo@elte.hu> | 2007-07-09 18:52:00 +0200 | 
| commit | 172ba844a8851c3edd13c0a979cdf46bd5e3cc1a (patch) | |
| tree | 5e1bfd820c8e68fc28450688f166f4136351e1e1 /kernel | |
| parent | b27f03d4bdc145a09fb7b0c0e004b29f1ee555fa (diff) | |
| download | olio-linux-3.10-172ba844a8851c3edd13c0a979cdf46bd5e3cc1a.tar.xz olio-linux-3.10-172ba844a8851c3edd13c0a979cdf46bd5e3cc1a.zip  | |
sched: update delay-accounting to use CFS's precise stats
update delay-accounting to use CFS's precise stats.
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'kernel')
| -rw-r--r-- | kernel/delayacct.c | 10 | ||||
| -rw-r--r-- | kernel/exit.c | 2 | ||||
| -rw-r--r-- | kernel/fork.c | 4 | ||||
| -rw-r--r-- | kernel/sched_stats.h | 2 | 
4 files changed, 9 insertions, 9 deletions
diff --git a/kernel/delayacct.c b/kernel/delayacct.c index c0148ae992c..81e69782963 100644 --- a/kernel/delayacct.c +++ b/kernel/delayacct.c @@ -99,9 +99,10 @@ void __delayacct_blkio_end(void)  int __delayacct_add_tsk(struct taskstats *d, struct task_struct *tsk)  {  	s64 tmp; -	struct timespec ts; -	unsigned long t1,t2,t3; +	unsigned long t1; +	unsigned long long t2, t3;  	unsigned long flags; +	struct timespec ts;  	/* Though tsk->delays accessed later, early exit avoids  	 * unnecessary returning of other data @@ -124,11 +125,10 @@ int __delayacct_add_tsk(struct taskstats *d, struct task_struct *tsk)  	d->cpu_count += t1; -	jiffies_to_timespec(t2, &ts); -	tmp = (s64)d->cpu_delay_total + timespec_to_ns(&ts); +	tmp = (s64)d->cpu_delay_total + t2;  	d->cpu_delay_total = (tmp < (s64)d->cpu_delay_total) ? 0 : tmp; -	tmp = (s64)d->cpu_run_virtual_total + (s64)jiffies_to_usecs(t3) * 1000; +	tmp = (s64)d->cpu_run_virtual_total + t3;  	d->cpu_run_virtual_total =  		(tmp < (s64)d->cpu_run_virtual_total) ?	0 : tmp; diff --git a/kernel/exit.c b/kernel/exit.c index 8fd7acd7bbd..ca6a11b7302 100644 --- a/kernel/exit.c +++ b/kernel/exit.c @@ -122,9 +122,9 @@ static void __exit_signal(struct task_struct *tsk)  		sig->maj_flt += tsk->maj_flt;  		sig->nvcsw += tsk->nvcsw;  		sig->nivcsw += tsk->nivcsw; -		sig->sched_time += tsk->sched_time;  		sig->inblock += task_io_get_inblock(tsk);  		sig->oublock += task_io_get_oublock(tsk); +		sig->sum_sched_runtime += tsk->se.sum_exec_runtime;  		sig = NULL; /* Marker for below. */  	} diff --git a/kernel/fork.c b/kernel/fork.c index 73ad5cda1bc..da3a155bba0 100644 --- a/kernel/fork.c +++ b/kernel/fork.c @@ -877,7 +877,7 @@ static inline int copy_signal(unsigned long clone_flags, struct task_struct * ts  	sig->nvcsw = sig->nivcsw = sig->cnvcsw = sig->cnivcsw = 0;  	sig->min_flt = sig->maj_flt = sig->cmin_flt = sig->cmaj_flt = 0;  	sig->inblock = sig->oublock = sig->cinblock = sig->coublock = 0; -	sig->sched_time = 0; +	sig->sum_sched_runtime = 0;  	INIT_LIST_HEAD(&sig->cpu_timers[0]);  	INIT_LIST_HEAD(&sig->cpu_timers[1]);  	INIT_LIST_HEAD(&sig->cpu_timers[2]); @@ -1040,7 +1040,7 @@ static struct task_struct *copy_process(unsigned long clone_flags,  	p->utime = cputime_zero;  	p->stime = cputime_zero; - 	p->sched_time = 0; +  #ifdef CONFIG_TASK_XACCT  	p->rchar = 0;		/* I/O counter: bytes read */  	p->wchar = 0;		/* I/O counter: bytes written */ diff --git a/kernel/sched_stats.h b/kernel/sched_stats.h index cd82c607890..c63c38f6fa6 100644 --- a/kernel/sched_stats.h +++ b/kernel/sched_stats.h @@ -21,7 +21,7 @@ static int show_schedstat(struct seq_file *seq, void *v)  		/* runqueue-specific stats */  		seq_printf(seq, -		    "cpu%d %lu %lu %lu %lu %lu %lu %lu %lu %lu %lu %lu %lu", +		    "cpu%d %lu %lu %lu %lu %lu %lu %lu %lu %lu %llu %llu %lu",  		    cpu, rq->yld_both_empty,  		    rq->yld_act_empty, rq->yld_exp_empty, rq->yld_cnt,  		    rq->sched_switch, rq->sched_cnt, rq->sched_goidle,  |