All of lore.kernel.org
 help / color / mirror / Atom feed
From: Peter Zijlstra <peterz@infradead.org>
To: Yasunori Goto <y-goto@jp.fujitsu.com>
Cc: Miao Xie <miaox@cn.fujitsu.com>,
	Linux-Kernel <linux-kernel@vger.kernel.org>,
	containers <containers@lists.linux-foundation.org>,
	Ingo Molnar <mingo@elte.hu>
Subject: Re: [BUG] cpu controller can't provide fair CPU time for each group
Date: Wed, 11 Nov 2009 11:07:28 +0100	[thread overview]
Message-ID: <1257934048.23203.76.camel@twins> (raw)
In-Reply-To: <20091111134910.5F42.E1E9C6FF@jp.fujitsu.com>

On Wed, 2009-11-11 at 15:21 +0900, Yasunori Goto wrote:
> > Someone needs to fix that if they really care.
> 
> To be honest, I don't have any good idea because I'm not familiar with
> schduler's code. 

You could possible try something like the below, its rather gross but
might maybe work,.. has other issues though.


---
 kernel/sched.c |    9 +++++++--
 1 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/kernel/sched.c b/kernel/sched.c
index 91642c1..65629a3 100644
--- a/kernel/sched.c
+++ b/kernel/sched.c
@@ -1614,7 +1614,7 @@ static void update_group_shares_cpu(struct task_group *tg, int cpu,
  */
 static int tg_shares_up(struct task_group *tg, void *data)
 {
-	unsigned long weight, rq_weight = 0, shares = 0;
+	unsigned long weight, rq_weight = 0, sum_weight = 0, shares = 0;
 	unsigned long *usd_rq_weight;
 	struct sched_domain *sd = data;
 	unsigned long flags;
@@ -1630,6 +1630,7 @@ static int tg_shares_up(struct task_group *tg, void *data)
 		weight = tg->cfs_rq[i]->load.weight;
 		usd_rq_weight[i] = weight;
 
+		rq_weight += weight;
 		/*
 		 * If there are currently no tasks on the cpu pretend there
 		 * is one of average load so that when a new task gets to
@@ -1638,10 +1639,14 @@ static int tg_shares_up(struct task_group *tg, void *data)
 		if (!weight)
 			weight = NICE_0_LOAD;
 
-		rq_weight += weight;
+		sum_weight += weight;
+
 		shares += tg->cfs_rq[i]->shares;
 	}
 
+	if (!rq_weight)
+		rq_weight = sum_weight;
+
 	if ((!shares && rq_weight) || shares > tg->shares)
 		shares = tg->shares;
 


  parent reply	other threads:[~2009-11-11 10:08 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-11-03  2:26 [BUG] cpu controller can't provide fair CPU time for each group Miao Xie
2009-11-05  2:56 ` Miao Xie
2009-11-10  0:22   ` Andrew Morton
     [not found]   ` <4AF23EC0.2070606-BthXqXjhjHXQFUHtdCDX3A@public.gmane.org>
2009-11-10  0:22     ` Andrew Morton
2009-11-10  9:48 ` Peter Zijlstra
2009-11-11  6:21   ` Yasunori Goto
2009-11-11  7:20     ` Peter Zijlstra
2009-11-11  9:59       ` Yasunori Goto
2009-11-11  9:59       ` Yasunori Goto
2009-11-11 20:39       ` Chris Friesen
     [not found]         ` <4AFB2109.8010708-ZIRUuHA3oDzQT0dZR+AlfA@public.gmane.org>
2009-11-11 20:51           ` Peter Zijlstra
2009-11-11 20:51         ` Peter Zijlstra
2009-11-11 20:39       ` Chris Friesen
2009-11-11 10:07     ` Peter Zijlstra [this message]
2009-11-12  1:12       ` Yasunori Goto
     [not found]         ` <20091112095947.7229.E1E9C6FF-+CUm20s59erQFUHtdCDX3A@public.gmane.org>
2009-11-19  7:09           ` Yasunori Goto
2009-11-19  7:09         ` Yasunori Goto
2009-11-12  1:12       ` Yasunori Goto
2009-12-09  9:55       ` [tip:sched/urgent] sched: cgroup: Implement different treatment for idle shares tip-bot for Peter Zijlstra
     [not found]     ` <20091111134910.5F42.E1E9C6FF-+CUm20s59erQFUHtdCDX3A@public.gmane.org>
2009-11-11  7:20       ` [BUG] cpu controller can't provide fair CPU time for each group Peter Zijlstra
2009-11-11 10:07       ` Peter Zijlstra
2009-11-11  6:21   ` Yasunori Goto
     [not found] ` <4AEF94E8.3030403-BthXqXjhjHXQFUHtdCDX3A@public.gmane.org>
2009-11-10  9:48   ` Peter Zijlstra

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1257934048.23203.76.camel@twins \
    --to=peterz@infradead.org \
    --cc=containers@lists.linux-foundation.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=miaox@cn.fujitsu.com \
    --cc=mingo@elte.hu \
    --cc=y-goto@jp.fujitsu.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.