All of lore.kernel.org
 help / color / mirror / Atom feed
From: tip-bot for Mike Galbraith <tipbot-YMNOUZJC4hwAvxtiuMwx3w@public.gmane.org>
To: linux-tip-commits-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Cc: efault-Mmb7MZpHnFY@public.gmane.org,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	peterz-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org,
	mtk.manpages-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org,
	umgwanakikbuti-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org,
	torvalds-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org,
	tglx-hfZtesqFncYOwBW4kG4KsQ@public.gmane.org,
	a.p.zijlstra-/NLkJaSkS4VmR6Xm/wNWPw@public.gmane.org,
	hpa-YMNOUZJC4hwAvxtiuMwx3w@public.gmane.org,
	linux-man-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	mingo-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org
Subject: [tip:sched/urgent] sched/autogroup: Fix 64-bit kernel nice level adjustment
Date: Wed, 23 Nov 2016 22:24:48 -0800	[thread overview]
Message-ID: <tip-83929cce95251cc77e5659bf493bd424ae0e7a67@git.kernel.org> (raw)
In-Reply-To: <1479897217.4306.6.camel-Mmb7MZpHnFY@public.gmane.org>

Commit-ID:  83929cce95251cc77e5659bf493bd424ae0e7a67
Gitweb:     http://git.kernel.org/tip/83929cce95251cc77e5659bf493bd424ae0e7a67
Author:     Mike Galbraith <efault-Mmb7MZpHnFY@public.gmane.org>
AuthorDate: Wed, 23 Nov 2016 11:33:37 +0100
Committer:  Ingo Molnar <mingo-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
CommitDate: Thu, 24 Nov 2016 05:45:02 +0100

sched/autogroup: Fix 64-bit kernel nice level adjustment

Michael Kerrisk reported:

> Regarding the previous paragraph...  My tests indicate
> that writing *any* value to the autogroup [nice priority level]
> file causes the task group to get a lower priority.

Because autogroup didn't call the then meaningless scale_load()...

Autogroup nice level adjustment has been broken ever since load
resolution was increased for 64-bit kernels.  Use scale_load() to
scale group weight.

Michael Kerrisk tested this patch to fix the problem:

> Applied and tested against 4.9-rc6 on an Intel u7 (4 cores).
> Test setup:
>
> Terminal window 1: running 40 CPU burner jobs
> Terminal window 2: running 40 CPU burner jobs
> Terminal window 1: running  1 CPU burner job
>
> Demonstrated that:
> * Writing "0" to the autogroup file for TW1 now causes no change
>   to the rate at which the process on the terminal consume CPU.
> * Writing -20 to the autogroup file for TW1 caused those processes
>   to get the lion's share of CPU while TW2 TW3 get a tiny amount.
> * Writing -20 to the autogroup files for TW1 and TW3 allowed the
>   process on TW3 to get as much CPU as it was getting as when
>   the autogroup nice values for both terminals were 0.

Reported-by: Michael Kerrisk <mtk.manpages-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
Tested-by: Michael Kerrisk <mtk.manpages-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
Signed-off-by: Mike Galbraith <umgwanakikbuti-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
Cc: Linus Torvalds <torvalds-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org>
Cc: Peter Zijlstra <a.p.zijlstra-/NLkJaSkS4VmR6Xm/wNWPw@public.gmane.org>
Cc: Peter Zijlstra <peterz-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>
Cc: Thomas Gleixner <tglx-hfZtesqFncYOwBW4kG4KsQ@public.gmane.org>
Cc: linux-man <linux-man-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>
Cc: stable-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Link: http://lkml.kernel.org/r/1479897217.4306.6.camel-Mmb7MZpHnFY@public.gmane.org
Signed-off-by: Ingo Molnar <mingo-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
---
 kernel/sched/auto_group.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/kernel/sched/auto_group.c b/kernel/sched/auto_group.c
index f1c8fd5..da39489 100644
--- a/kernel/sched/auto_group.c
+++ b/kernel/sched/auto_group.c
@@ -212,6 +212,7 @@ int proc_sched_autogroup_set_nice(struct task_struct *p, int nice)
 {
 	static unsigned long next = INITIAL_JIFFIES;
 	struct autogroup *ag;
+	unsigned long shares;
 	int err;
 
 	if (nice < MIN_NICE || nice > MAX_NICE)
@@ -230,9 +231,10 @@ int proc_sched_autogroup_set_nice(struct task_struct *p, int nice)
 
 	next = HZ / 10 + jiffies;
 	ag = autogroup_task_get(p);
+	shares = scale_load(sched_prio_to_weight[nice + 20]);
 
 	down_write(&ag->lock);
-	err = sched_group_set_shares(ag->tg, sched_prio_to_weight[nice + 20]);
+	err = sched_group_set_shares(ag->tg, shares);
 	if (!err)
 		ag->nice = nice;
 	up_write(&ag->lock);
--
To unsubscribe from this list: send the line "unsubscribe linux-man" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

WARNING: multiple messages have this Message-ID (diff)
From: tip-bot for Mike Galbraith <tipbot@zytor.com>
To: linux-tip-commits@vger.kernel.org
Cc: efault@gmx.de, linux-kernel@vger.kernel.org,
	peterz@infradead.org, mtk.manpages@gmail.com,
	umgwanakikbuti@gmail.com, torvalds@linux-foundation.org,
	tglx@linutronix.de, a.p.zijlstra@chello.nl, hpa@zytor.com,
	linux-man@vger.kernel.org, mingo@kernel.org
Subject: [tip:sched/urgent] sched/autogroup: Fix 64-bit kernel nice level adjustment
Date: Wed, 23 Nov 2016 22:24:48 -0800	[thread overview]
Message-ID: <tip-83929cce95251cc77e5659bf493bd424ae0e7a67@git.kernel.org> (raw)
In-Reply-To: <1479897217.4306.6.camel@gmx.de>

Commit-ID:  83929cce95251cc77e5659bf493bd424ae0e7a67
Gitweb:     http://git.kernel.org/tip/83929cce95251cc77e5659bf493bd424ae0e7a67
Author:     Mike Galbraith <efault@gmx.de>
AuthorDate: Wed, 23 Nov 2016 11:33:37 +0100
Committer:  Ingo Molnar <mingo@kernel.org>
CommitDate: Thu, 24 Nov 2016 05:45:02 +0100

sched/autogroup: Fix 64-bit kernel nice level adjustment

Michael Kerrisk reported:

> Regarding the previous paragraph...  My tests indicate
> that writing *any* value to the autogroup [nice priority level]
> file causes the task group to get a lower priority.

Because autogroup didn't call the then meaningless scale_load()...

Autogroup nice level adjustment has been broken ever since load
resolution was increased for 64-bit kernels.  Use scale_load() to
scale group weight.

Michael Kerrisk tested this patch to fix the problem:

> Applied and tested against 4.9-rc6 on an Intel u7 (4 cores).
> Test setup:
>
> Terminal window 1: running 40 CPU burner jobs
> Terminal window 2: running 40 CPU burner jobs
> Terminal window 1: running  1 CPU burner job
>
> Demonstrated that:
> * Writing "0" to the autogroup file for TW1 now causes no change
>   to the rate at which the process on the terminal consume CPU.
> * Writing -20 to the autogroup file for TW1 caused those processes
>   to get the lion's share of CPU while TW2 TW3 get a tiny amount.
> * Writing -20 to the autogroup files for TW1 and TW3 allowed the
>   process on TW3 to get as much CPU as it was getting as when
>   the autogroup nice values for both terminals were 0.

Reported-by: Michael Kerrisk <mtk.manpages@gmail.com>
Tested-by: Michael Kerrisk <mtk.manpages@gmail.com>
Signed-off-by: Mike Galbraith <umgwanakikbuti@gmail.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: linux-man <linux-man@vger.kernel.org>
Cc: stable@vger.kernel.org
Link: http://lkml.kernel.org/r/1479897217.4306.6.camel@gmx.de
Signed-off-by: Ingo Molnar <mingo@kernel.org>
---
 kernel/sched/auto_group.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/kernel/sched/auto_group.c b/kernel/sched/auto_group.c
index f1c8fd5..da39489 100644
--- a/kernel/sched/auto_group.c
+++ b/kernel/sched/auto_group.c
@@ -212,6 +212,7 @@ int proc_sched_autogroup_set_nice(struct task_struct *p, int nice)
 {
 	static unsigned long next = INITIAL_JIFFIES;
 	struct autogroup *ag;
+	unsigned long shares;
 	int err;
 
 	if (nice < MIN_NICE || nice > MAX_NICE)
@@ -230,9 +231,10 @@ int proc_sched_autogroup_set_nice(struct task_struct *p, int nice)
 
 	next = HZ / 10 + jiffies;
 	ag = autogroup_task_get(p);
+	shares = scale_load(sched_prio_to_weight[nice + 20]);
 
 	down_write(&ag->lock);
-	err = sched_group_set_shares(ag->tg, sched_prio_to_weight[nice + 20]);
+	err = sched_group_set_shares(ag->tg, shares);
 	if (!err)
 		ag->nice = nice;
 	up_write(&ag->lock);

  parent reply	other threads:[~2016-11-24  6:24 UTC|newest]

Thread overview: 67+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-11-22 15:59 RFC: documentation of the autogroup feature Michael Kerrisk (man-pages)
2016-11-23 10:33 ` [patch] sched/autogroup: Fix 64bit kernel nice adjustment Mike Galbraith
     [not found]   ` <1479897217.4306.6.camel-Mmb7MZpHnFY@public.gmane.org>
2016-11-23 13:47     ` Michael Kerrisk (man-pages)
2016-11-23 13:47       ` Michael Kerrisk (man-pages)
     [not found]       ` <d21cf0b2-5c62-5a49-8758-58793c454cc2-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2016-11-23 14:12         ` Mike Galbraith
2016-11-23 14:12           ` Mike Galbraith
2016-11-23 14:20           ` Michael Kerrisk (man-pages)
     [not found]             ` <34cea28b-c8c7-31e3-e920-90f113d22abe-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2016-11-23 15:55               ` Mike Galbraith
2016-11-23 15:55                 ` Mike Galbraith
2016-11-24  6:24     ` tip-bot for Mike Galbraith [this message]
2016-11-24  6:24       ` [tip:sched/urgent] sched/autogroup: Fix 64-bit kernel nice level adjustment tip-bot for Mike Galbraith
2016-11-23 11:39 ` RFC: documentation of the autogroup feature Mike Galbraith
     [not found]   ` <1479901185.4306.38.camel-Mmb7MZpHnFY@public.gmane.org>
2016-11-23 13:54     ` Michael Kerrisk (man-pages)
2016-11-23 13:54       ` Michael Kerrisk (man-pages)
     [not found]       ` <327586fa-4672-d070-0ded-850654586273-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2016-11-23 15:33         ` Mike Galbraith
2016-11-23 15:33           ` Mike Galbraith
     [not found]           ` <1479915229.4306.106.camel-Mmb7MZpHnFY@public.gmane.org>
2016-11-23 16:04             ` Michael Kerrisk (man-pages)
2016-11-23 16:04               ` Michael Kerrisk (man-pages)
2016-11-23 17:11               ` Mike Galbraith
2016-11-24 21:41                 ` RFC: documentation of the autogroup feature [v2] Michael Kerrisk (man-pages)
2016-11-25 12:52                   ` Afzal Mohammed
2016-11-25 13:04                     ` Michael Kerrisk (man-pages)
2016-11-25 13:04                       ` Michael Kerrisk (man-pages)
     [not found]                   ` <c5a9acd3-6b60-192c-312e-2777f2d537c2-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2016-11-25 13:02                     ` Mike Galbraith
2016-11-25 13:02                       ` Mike Galbraith
2016-11-25 15:04                       ` Michael Kerrisk (man-pages)
     [not found]                         ` <ca16c155-22be-df06-4f2d-4337b72381de-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2016-11-25 15:48                           ` Michael Kerrisk (man-pages)
2016-11-25 15:48                             ` Michael Kerrisk (man-pages)
2016-11-25 16:04                           ` Peter Zijlstra
2016-11-25 16:04                             ` Peter Zijlstra
     [not found]                             ` <20161125160456.GP3092-ndre7Fmf5hadTX5a5knrm8zTDFooKrT+cvkQGrU6aU0@public.gmane.org>
2016-11-25 16:13                               ` Peter Zijlstra
2016-11-25 16:13                                 ` Peter Zijlstra
2016-11-25 16:33                               ` Michael Kerrisk (man-pages)
2016-11-25 16:33                                 ` Michael Kerrisk (man-pages)
     [not found]                                 ` <c0f61369-9601-0c90-8b85-61e75e4f4e82-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2016-11-25 22:48                                   ` Peter Zijlstra
2016-11-25 22:48                                     ` Peter Zijlstra
2016-11-25 15:51                         ` Mike Galbraith
     [not found]                           ` <1480089063.4075.80.camel-Mmb7MZpHnFY@public.gmane.org>
2016-11-25 16:08                             ` Michael Kerrisk (man-pages)
2016-11-25 16:08                               ` Michael Kerrisk (man-pages)
     [not found]                               ` <d3d491d3-0770-d017-4f3c-43d88346835c-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2016-11-25 16:18                                 ` Peter Zijlstra
2016-11-25 16:18                                   ` Peter Zijlstra
     [not found]                                   ` <20161125161810.GR3092-ndre7Fmf5hadTX5a5knrm8zTDFooKrT+cvkQGrU6aU0@public.gmane.org>
2016-11-25 16:34                                     ` Michael Kerrisk (man-pages)
2016-11-25 16:34                                       ` Michael Kerrisk (man-pages)
     [not found]                                       ` <2cc53b76-668b-edf1-6aa7-e6cb5a9801e1-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2016-11-25 20:54                                         ` Michael Kerrisk (man-pages)
2016-11-25 20:54                                           ` Michael Kerrisk (man-pages)
     [not found]                                           ` <af075c46-152a-0392-d33f-c7956d3c8a0b-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2016-11-25 21:49                                             ` Peter Zijlstra
2016-11-25 21:49                                               ` Peter Zijlstra
     [not found]                                               ` <20161125214936.GB3045-IIpfhp3q70z/8w/KjCw3T+5/BudmfyzbbVWyRVo5IupeoWH0uzbU5w@public.gmane.org>
2016-11-29  7:43                                                 ` Michael Kerrisk (man-pages)
2016-11-29  7:43                                                   ` Michael Kerrisk (man-pages)
     [not found]                                                   ` <755aba1b-9bf4-0277-0628-b27e725ee2f9-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2016-11-29 11:46                                                     ` Peter Zijlstra
2016-11-29 11:46                                                       ` Peter Zijlstra
     [not found]                                                       ` <20161129114629.GG3092-ndre7Fmf5hadTX5a5knrm8zTDFooKrT+cvkQGrU6aU0@public.gmane.org>
2016-11-29 13:44                                                         ` Michael Kerrisk (man-pages)
2016-11-29 13:44                                                           ` Michael Kerrisk (man-pages)
2016-11-23 16:05             ` RFC: documentation of the autogroup feature Michael Kerrisk (man-pages)
2016-11-23 16:05               ` Michael Kerrisk (man-pages)
     [not found]               ` <fc3ae5c6-5a50-e991-71fd-b544096bbe5c-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2016-11-23 17:19                 ` Mike Galbraith
2016-11-23 17:19                   ` Mike Galbraith
     [not found]                   ` <1479921544.4306.157.camel-Mmb7MZpHnFY@public.gmane.org>
2016-11-23 22:12                     ` Michael Kerrisk (man-pages)
2016-11-23 22:12                       ` Michael Kerrisk (man-pages)
2016-11-27 21:13             ` Michael Kerrisk (man-pages)
2016-11-27 21:13               ` Michael Kerrisk (man-pages)
     [not found]               ` <8614679c-b1d3-3b35-193d-2ab6eac45aff-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2016-11-28  1:46                 ` Mike Galbraith
2016-11-28  1:46                   ` Mike Galbraith
     [not found]                   ` <1127218a-dd9b-71a8-845d-3a83969632fc@gmail.com>
     [not found]                     ` <1127218a-dd9b-71a8-845d-3a83969632fc-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2016-11-29  9:10                       ` Michael Kerrisk (man-pages)
2016-11-29  9:10                         ` Michael Kerrisk (man-pages)
     [not found]                         ` <CAKgNAkiLafr7KJNAo+_kwKQB7ueO-oontNL_FQrGtqitmJpEDg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2016-11-29 13:46                           ` Mike Galbraith
2016-11-29 13:46                             ` Mike Galbraith

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=tip-83929cce95251cc77e5659bf493bd424ae0e7a67@git.kernel.org \
    --to=tipbot-ymnouzjc4hwavxtiumwx3w@public.gmane.org \
    --cc=a.p.zijlstra-/NLkJaSkS4VmR6Xm/wNWPw@public.gmane.org \
    --cc=efault-Mmb7MZpHnFY@public.gmane.org \
    --cc=hpa-YMNOUZJC4hwAvxtiuMwx3w@public.gmane.org \
    --cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=linux-man-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=linux-tip-commits-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=mingo-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org \
    --cc=mtk.manpages-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
    --cc=peterz-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org \
    --cc=tglx-hfZtesqFncYOwBW4kG4KsQ@public.gmane.org \
    --cc=torvalds-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org \
    --cc=umgwanakikbuti-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
    /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.