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.