]> granicus.if.org Git - zfs/commitdiff
Remove default taskq thread to CPU bindings
authorBrian Behlendorf <behlendorf1@llnl.gov>
Tue, 7 Jan 2014 00:31:49 +0000 (16:31 -0800)
committerBrian Behlendorf <behlendorf1@llnl.gov>
Tue, 7 Jan 2014 18:46:24 +0000 (10:46 -0800)
When this code was written it appears to have been assumed that
every taskq would have a large number of threads.  In this case
it would make sense to attempt to evenly bind the threads over
all available CPUs.  However, it failed to consider that creating
taskqs with a small number of threads will cause the CPUs with
lower ids become over-subscribed.

For this reason the kthread_bind() call is being removed and
we're leaving the kernel to schedule these threads as it sees fit.

Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Closes #325

module/spl/spl-taskq.c

index bcdc98f97be865d4bcb6d6e0c9e3057e5c8ab904..3605a0f3b8ddd14647906836328100adc4b385ea 100644 (file)
@@ -843,7 +843,6 @@ taskq_create(const char *name, int nthreads, pri_t pri,
                    "%s/%d", name, i);
                if (tqt->tqt_thread) {
                        list_add(&tqt->tqt_thread_list, &tq->tq_thread_list);
-                       kthread_bind(tqt->tqt_thread, i % num_online_cpus());
                        set_user_nice(tqt->tqt_thread, PRIO_TO_NICE(pri));
                        wake_up_process(tqt->tqt_thread);
                        j++;