From f9153ee6c71cb9ab38de3b8ed66b1c3fa27c3f7d Mon Sep 17 00:00:00 2001 From: Ingo Molnar Date: Mon, 16 Jul 2007 09:46:30 +0200 Subject: [PATCH] sched: improve weight-array comments improve the comments around the wmult array (which controls the weight of niced tasks). Clarify that to achieve a 10% difference in CPU utilization, a weight multiplier of 1.25 has to be used. Signed-off-by: Ingo Molnar --- kernel/sched.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'kernel') diff --git a/kernel/sched.c b/kernel/sched.c index 3332bbb5d5c..a7284bc79cd 100644 --- a/kernel/sched.c +++ b/kernel/sched.c @@ -736,7 +736,9 @@ static void update_curr_load(struct rq *rq, u64 now) * * The "10% effect" is relative and cumulative: from _any_ nice level, * if you go up 1 level, it's -10% CPU usage, if you go down 1 level - * it's +10% CPU usage. + * it's +10% CPU usage. (to achieve that we use a multiplier of 1.25. + * If a task goes up by ~10% and another task goes down by ~10% then + * the relative distance between them is ~25%.) */ static const int prio_to_weight[40] = { /* -20 */ 88818, 71054, 56843, 45475, 36380, 29104, 23283, 18626, 14901, 11921, -- cgit v1.2.3 From 5714d2de93fbb156c5e45fb101a2b4f0cae8fbb7 Mon Sep 17 00:00:00 2001 From: Ingo Molnar Date: Mon, 16 Jul 2007 09:46:31 +0200 Subject: [PATCH] sched: document prio_to_wmult[] document prio_to_wmult[]. Signed-off-by: Ingo Molnar --- kernel/sched.c | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'kernel') diff --git a/kernel/sched.c b/kernel/sched.c index a7284bc79cd..90d22b72cf8 100644 --- a/kernel/sched.c +++ b/kernel/sched.c @@ -748,6 +748,13 @@ static const int prio_to_weight[40] = { /* 10 */ 110, 87, 70, 56, 45, 36, 29, 23, 18, 15, }; +/* + * Inverse (2^32/x) values of the prio_to_weight[] array, precalculated. + * + * In cases where the weight does not change often, we can use the + * precalculated inverse to speed up arithmetics by turning divisions + * into multiplications: + */ static const u32 prio_to_wmult[40] = { 48356, 60446, 75558, 94446, 118058, 147573, 184467, 230589, 288233, 360285, 450347, -- cgit v1.2.3 From e4af30be8fd0bed0e8f96e4e1ebd546a3dfa8f2b Mon Sep 17 00:00:00 2001 From: Ingo Molnar Date: Mon, 16 Jul 2007 09:46:31 +0200 Subject: [PATCH] sched: prettify prio_to_wmult[] prettify the prio_to_wmult[] array. (this could have saved us from the typos) Signed-off-by: Ingo Molnar --- kernel/sched.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) (limited to 'kernel') diff --git a/kernel/sched.c b/kernel/sched.c index 90d22b72cf8..1c8076676eb 100644 --- a/kernel/sched.c +++ b/kernel/sched.c @@ -756,14 +756,14 @@ static const int prio_to_weight[40] = { * into multiplications: */ static const u32 prio_to_wmult[40] = { - 48356, 60446, 75558, 94446, 118058, 147573, - 184467, 230589, 288233, 360285, 450347, - 562979, 703746, 879575, 1099582, 1374389, - 1717986, 2147483, 2684354, 3355443, 4194304, - 5244160, 6557201, 8196502, 10250518, 12782640, - 16025997, 19976592, 24970740, 31350126, 39045157, - 49367440, 61356675, 76695844, 95443717, 119304647, - 148102320, 186737708, 238609294, 286331153, +/* -20 */ 48356, 60446, 75558, 94446, 118058, +/* -15 */ 147573, 184467, 230589, 288233, 360285, +/* -10 */ 450347, 562979, 703746, 879575, 1099582, +/* -5 */ 1374389, 1717986, 2147483, 2684354, 3355443, +/* 0 */ 4194304, 5244160, 6557201, 8196502, 10250518, +/* 5 */ 12782640, 16025997, 19976592, 24970740, 31350126, +/* 10 */ 39045157, 49367440, 61356675, 76695844, 95443717, +/* 15 */ 119304647, 148102320, 186737708, 238609294, 286331153, }; static inline void -- cgit v1.2.3