Make ULE process usage (%CPU) accounting usable again by keeping track
of the last tick we incremented on. Submitted by: matthew.fleming/at/isilon.com, is/at/rambler-co.ru Reviewed by: jeff (who thinks there should be a better way in the future) Approved by: gnn (mentor) MFC after: 3 weeks
This commit is contained in:
parent
5eaf27d8ff
commit
cbc4ea28e2
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=199764
@ -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, struct thread *child)
|
||||
*/
|
||||
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.
|
||||
|
Loading…
Reference in New Issue
Block a user