svn commit: r200618 - stable/8/sys/kern
Ivan Voras
ivoras at FreeBSD.org
Wed Dec 16 21:48:27 UTC 2009
Author: ivoras
Date: Wed Dec 16 21:48:27 2009
New Revision: 200618
URL: http://svn.freebsd.org/changeset/base/200618
Log:
MFC r199764: Make ULE process usage (%CPU) accounting usable again
Approved by: gnn (mentor) (implicitly)
Modified:
stable/8/sys/kern/sched_ule.c
Directory Properties:
stable/8/sys/ (props changed)
stable/8/sys/amd64/include/xen/ (props changed)
stable/8/sys/cddl/contrib/opensolaris/ (props changed)
stable/8/sys/contrib/dev/acpica/ (props changed)
stable/8/sys/contrib/pf/ (props changed)
stable/8/sys/dev/xen/xenpci/ (props changed)
Modified: stable/8/sys/kern/sched_ule.c
==============================================================================
--- stable/8/sys/kern/sched_ule.c Wed Dec 16 20:03:43 2009 (r200617)
+++ stable/8/sys/kern/sched_ule.c Wed Dec 16 21:48:27 2009 (r200618)
@@ -103,6 +103,7 @@ struct td_sched {
u_int ts_slptime; /* Number of ticks we vol. slept */
u_int ts_runtime; /* Number of ticks we were running */
int ts_ltick; /* Last tick that we were running on */
+ int ts_incrtick; /* Last tick that we incremented on */
int ts_ftick; /* First tick that we were running on */
int ts_ticks; /* Tick count */
#ifdef KTR
@@ -1991,6 +1992,7 @@ sched_fork_thread(struct thread *td, str
*/
ts2->ts_ticks = ts->ts_ticks;
ts2->ts_ltick = ts->ts_ltick;
+ ts2->ts_incrtick = ts->ts_incrtick;
ts2->ts_ftick = ts->ts_ftick;
child->td_user_pri = td->td_user_pri;
child->td_base_user_pri = td->td_base_user_pri;
@@ -2182,11 +2184,12 @@ sched_tick(void)
* Ticks is updated asynchronously on a single cpu. Check here to
* avoid incrementing ts_ticks multiple times in a single tick.
*/
- if (ts->ts_ltick == ticks)
+ if (ts->ts_incrtick == ticks)
return;
/* Adjust ticks for pctcpu */
ts->ts_ticks += 1 << SCHED_TICK_SHIFT;
ts->ts_ltick = ticks;
+ ts->ts_incrtick = ticks;
/*
* Update if we've exceeded our desired tick threshhold by over one
* second.
More information about the svn-src-stable
mailing list