Re: [PATCH 6/7] printk: Avoid scheduling printing threads on the same CPU

From: Sergey Senozhatsky
Date: Thu Dec 10 2015 - 10:20:44 EST


>+static void distribute_printing_kthreads(void)
>+{
>+ int i;
>+ unsigned int cpus_per_thread;
>+ unsigned int cpu, seen_cpu;
>+
>+ for (i = 0; i < PRINTING_TASKS; i++)
>+ cpumask_clear(printing_kthread_mask[i]);
>+
>+ cpus_per_thread = DIV_ROUND_UP(num_online_cpus(), PRINTING_TASKS);
>+ seen_cpu = 0;
>+ for_each_online_cpu(cpu) {
>+ cpumask_set_cpu(cpu,
>+ printing_kthread_mask[seen_cpu / cpus_per_thread]);
>+ seen_cpu++;
>+ }
>+
>+ for (i = 0; i < PRINTING_TASKS; i++)
>+ if (!cpumask_empty(printing_kthread_mask[i]))
>+ set_cpus_allowed_ptr(printing_kthread[i],
>+ printing_kthread_mask[i]);
>+}


I certainly understand what are you trying to do here, but I'm a bit concerned.
This may result in 'bad' affinities on big.LITTLE platforms, for example. So I
think that printk is not quite good place for that type of decisions. Just my 5
cents.

-ss
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/