Browse Source

sched: fix update_stats_enqueue() reniced codepath

the key has to be rescaled to /weight even if it has a positive value.

(this change only affects the scheduling of reniced tasks)

Signed-off-by: Ingo Molnar <mingo@elte.hu>
Ingo Molnar 18 năm trước cách đây
mục cha
commit
a69edb5560
1 tập tin đã thay đổi với 2 bổ sung1 xóa
  1. 2 1
      kernel/sched_fair.c

+ 2 - 1
kernel/sched_fair.c

@@ -405,7 +405,8 @@ static void update_stats_enqueue(struct cfs_rq *cfs_rq, struct sched_entity *se)
 					(WMULT_SHIFT - NICE_0_SHIFT);
 					(WMULT_SHIFT - NICE_0_SHIFT);
 		} else {
 		} else {
 			tmp = se->wait_runtime;
 			tmp = se->wait_runtime;
-			key -= (tmp * se->load.weight) >> NICE_0_SHIFT;
+			key -= (tmp * se->load.inv_weight) >>
+					(WMULT_SHIFT - NICE_0_SHIFT);
 		}
 		}
 	}
 	}