Commit 975e155e authored by Shile Zhang's avatar Shile Zhang Committed by Ingo Molnar
Browse files

sched/rt: Show the 'sched_rr_timeslice' SCHED_RR timeslice tuning knob in milliseconds

We added the 'sched_rr_timeslice_ms' SCHED_RR tuning knob in this commit:

  ce0dbbbb

 ("sched/rt: Add a tuning knob to allow changing SCHED_RR timeslice")

... which name suggests to users that it's in milliseconds, while in reality
it's being set in milliseconds but the result is shown in jiffies.

This is obviously confusing when HZ is not 1000, it makes it appear like the
value set failed, such as HZ=100:

  root# echo 100 > /proc/sys/kernel/sched_rr_timeslice_ms
  root# cat /proc/sys/kernel/sched_rr_timeslice_ms
  10

Fix this to be milliseconds all around.
Signed-off-by: default avatarShile Zhang <shile.zhang@nokia.com>
Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Link: http://lkml.kernel.org/r/1485612049-20923-1-git-send-email-shile.zhang@nokia.com

Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
parent 733ce725
...@@ -59,6 +59,7 @@ extern unsigned int sysctl_sched_cfs_bandwidth_slice; ...@@ -59,6 +59,7 @@ extern unsigned int sysctl_sched_cfs_bandwidth_slice;
extern unsigned int sysctl_sched_autogroup_enabled; extern unsigned int sysctl_sched_autogroup_enabled;
#endif #endif
extern int sysctl_sched_rr_timeslice;
extern int sched_rr_timeslice; extern int sched_rr_timeslice;
extern int sched_rr_handler(struct ctl_table *table, int write, extern int sched_rr_handler(struct ctl_table *table, int write,
......
...@@ -8471,8 +8471,9 @@ int sched_rr_handler(struct ctl_table *table, int write, ...@@ -8471,8 +8471,9 @@ int sched_rr_handler(struct ctl_table *table, int write,
/* make sure that internally we keep jiffies */ /* make sure that internally we keep jiffies */
/* also, writing zero resets timeslice to default */ /* also, writing zero resets timeslice to default */
if (!ret && write) { if (!ret && write) {
sched_rr_timeslice = sched_rr_timeslice <= 0 ? sched_rr_timeslice =
RR_TIMESLICE : msecs_to_jiffies(sched_rr_timeslice); sysctl_sched_rr_timeslice <= 0 ? RR_TIMESLICE :
msecs_to_jiffies(sysctl_sched_rr_timeslice);
} }
mutex_unlock(&mutex); mutex_unlock(&mutex);
return ret; return ret;
......
...@@ -9,6 +9,7 @@ ...@@ -9,6 +9,7 @@
#include <linux/irq_work.h> #include <linux/irq_work.h>
int sched_rr_timeslice = RR_TIMESLICE; int sched_rr_timeslice = RR_TIMESLICE;
int sysctl_sched_rr_timeslice = (MSEC_PER_SEC / HZ) * RR_TIMESLICE;
static int do_sched_rt_period_timer(struct rt_bandwidth *rt_b, int overrun); static int do_sched_rt_period_timer(struct rt_bandwidth *rt_b, int overrun);
......
...@@ -416,7 +416,7 @@ static struct ctl_table kern_table[] = { ...@@ -416,7 +416,7 @@ static struct ctl_table kern_table[] = {
}, },
{ {
.procname = "sched_rr_timeslice_ms", .procname = "sched_rr_timeslice_ms",
.data = &sched_rr_timeslice, .data = &sysctl_sched_rr_timeslice,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = sched_rr_handler, .proc_handler = sched_rr_handler,
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment