Hi, On Tue, 11 Sep 2007, Mike Galbraith wrote:Damn, I forgot that tasks which are reniced or migrate to another cpu need some more initialization, so the small incremental patch does that. Thanks again for testing. bye, Roman Index: linux-2.6/kernel/sched_norm.c =================================================================== --- linux-2.6.orig/kernel/sched_norm.c 2007-09-11 13:15:00.000000000 +0200 +++ linux-2.6/kernel/sched_norm.c 2007-09-11 13:13:43.000000000 +0200 @@ -326,11 +326,14 @@ static void update_curr(struct cfs_rq *c } static void -enqueue_entity(struct cfs_rq *cfs_rq, struct sched_entity *se) +enqueue_entity(struct cfs_rq *cfs_rq, struct sched_entity *se, int wakeup) { verify_queue(cfs_rq, cfs_rq->curr != se, se); cfs_rq->time_avg_min = kclock_max(cfs_rq->time_avg_min, get_time_avg(cfs_rq)); - se->time_norm = kclock_max(cfs_rq->time_avg_min - se->req_weight_inv, se->time_norm); + if (likely(wakeup)) + se->time_norm = kclock_max(cfs_rq->time_avg_min - se->req_weight_inv, se->time_norm); + else + se->time_norm = cfs_rq->time_avg_min; cfs_rq->nr_running++; cfs_rq->weight_sum += 1 << se->weight_shift; @@ -553,7 +556,7 @@ static void enqueue_task_fair(struct rq if (se->on_rq) break; cfs_rq = cfs_rq_of(se); - enqueue_entity(cfs_rq, se); + enqueue_entity(cfs_rq, se, wakeup); } } @@ -813,7 +816,7 @@ static void task_new_fair(struct rq *rq, rq->curr->se.time_norm -= time; se->time_norm = rq->curr->se.time_norm; - enqueue_entity(cfs_rq, se); + enqueue_entity(cfs_rq, se, 1); p->se.on_rq = 1; cfs_rq->next = se; -
| Amit K. Arora | [RFC] Heads up on sys_fallocate() |
| Greg KH | [GIT PATCH] driver core patches against 2.6.24 |
| Linus Torvalds | Linux 2.6.25-rc4 |
| Greg KH | Linux 2.6.25.10 |
git: | |
| Gerrit Renker | [PATCH 15/37] dccp: Set per-connection CCIDs via socket options |
| David Miller | Re: [PATCH] pkt_sched: Destroy gen estimators under rtnl_lock(). |
| David Miller | [GIT]: Networking |
| Ilpo Järvinen | Re: Strange Application bug, race in MSG_PEEK complaints (was: Bug#513695: fetchma... |
