Messages in this thread | | | Date | Tue, 10 Dec 2013 16:14:28 +0100 | From | Peter Zijlstra <> | Subject | Re: [PATCH 2/2] sched: update runqueue clock before migrations away |
| |
On Tue, Dec 10, 2013 at 01:24:21PM +0000, Chris Redpath wrote: > What happens is that if you have a task which sleeps for a while and wakes > on a different CPU and the previous CPU hasn't had a tick for a while, then > that sleep time is lost.
/me more confused now.
Where does update_cfs_rq_blocked_load() account sleep time? Its only concerned with the blocked decay.
Or is it the decay_count <= 0 case in enqueue_entity_load_avg() that's screwing you over?
That's guestimating the last_runnable_update based on decay_count, and per the previous the decay count can get slightly out of sync.
If so, we should look to cure the issue enqueue_entity_load_avg() is trying to work around, namely the fact that we cannot assume synced clocks, nor can we read remote clocks atomically.
| |