On Wed, 2016-08-17 at 09:16 +0800, Wanpeng Li wrote: > > @@ -694,6 +699,12 @@ static cputime_t get_vtime_delta(struct > task_struct *tsk) > unsigned long now = READ_ONCE(jiffies); > cputime_t delta, other; > > + /* > + * The interval returned by account_other_time() is NOT > + * rounded down to the nearest jiffy, while the base > + * interval it is subtracted from is. So the max cputime > + * limit is required to avoid underflow. > + */ > delta = jiffies_to_cputime(now - tsk->vtime_snap); > other = account_other_time(delta); > WARN_ON_ONCE(tsk->vtime_snap_whence == VTIME_INACTIVE); That comment makes sense in the context of the discussion we have been having over the past few days, but could be somewhat cryptic to someone looking at it 3 years from now. How about something like the following? /* * Unlike tick based timing, vtime based timing never has lost * ticks, and no need for steal time accounting to make up for * lost ticks. Vtime accounts a rounded version of actual * elapsed time. Limit account_other_time to prevent rounding * errors from causing elapsed vtime to go negative. */ -- All Rights Reversed.
Attachment:
signature.asc
Description: This is a digitally signed message part