On Tue, Nov 12, 2013 at 11:44:15AM +0100, Vincent Guittot wrote:
On 12 November 2013 11:32, Peter Zijlstra peterz@infradead.org wrote:
On Fri, Oct 18, 2013 at 01:52:18PM +0200, Vincent Guittot wrote:
+int sched_proc_update_packing(struct ctl_table *table, int write,
void __user *buffer, size_t *lenp,
loff_t *ppos)
+{
int ret = proc_dointvec_minmax(table, write, buffer, lenp, ppos);
if (ret || !write)
return ret;
if (sysctl_sched_packing_level)
sd_pack_threshold = (100 * 1024) / sysctl_sched_packing_level;
return 0;
+}
+#ifdef CONFIG_SCHED_PACKING_TASKS +static int min_sched_packing_level; +static int max_sched_packing_level = 100; +#endif /* CONFIG_SMP */
+#ifdef CONFIG_SCHED_PACKING_TASKS
{
.procname = "sched_packing_level",
.data = &sysctl_sched_packing_level,
.maxlen = sizeof(int),
.mode = 0644,
.proc_handler = sched_proc_update_packing,
.extra1 = &min_sched_packing_level,
.extra2 = &max_sched_packing_level,
},
+#endif
Shouldn't min_sched_packing_level be 1? Userspace can now write 0 and expect something; but then we don't update sd_pack_threshold so nothing really changed.
value 0 is used to disable to packing feature and the scheduler falls back to default behavior. This value is tested when setting which cpus will be used by the scheduler.
I suspected as much, but it wasn't clear from the Changelog, the patch or any comments. Plz as to fix.