]> granicus.if.org Git - zfs/commitdiff
Remove suffix from zio taskq names
authorMatthew Ahrens <mahrens@delphix.com>
Wed, 20 Jun 2018 21:07:50 +0000 (14:07 -0700)
committerBrian Behlendorf <behlendorf1@llnl.gov>
Wed, 20 Jun 2018 21:07:50 +0000 (14:07 -0700)
For zio taskq's which have multiple instances (e.g. z_rd_int_0,
z_rd_int_1, etc), each one has a unique name (the _0, _1, _2 suffix).
This makes performance analysis more difficult, because by default,
`perf` includes the thread name (which is the same as the taskq name) in
the stack trace.  This means that we get 8 different stacks, all of
which are doing the same thing, but are executed from different taskq's.

We should remove the suffix of the taskq name, so that all the
read-interrupt threads are named z_rd_int.

Note that we already support multiple taskq's with the same name.  This
happens when there are multiple pools.  In this case the taskq has a
different tq_instance, which shows up in /proc/spl/taskq-all.

Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Reviewed by: Richard Elling <Richard.Elling@RichardElling.com>
Reviewed-by: Giuseppe Di Natale <guss80@gmail.com>
Reviewed-by: George Melikov <mail@gmelikov.ru>
Reviewed by: Pavel Zakharov <pavel.zakharov@delphix.com>
Signed-off-by: Matthew Ahrens <mahrens@delphix.com>
Closes #7646

module/zfs/spa.c

index 45cb6eb00021792e270012d2083fbf532279541c..cdc03e66cd779d688ee5bc2b4193a5277a889ac4 100644 (file)
@@ -923,7 +923,6 @@ spa_taskqs_init(spa_t *spa, zio_type_t t, zio_taskq_type_t q)
        uint_t value = ztip->zti_value;
        uint_t count = ztip->zti_count;
        spa_taskqs_t *tqs = &spa->spa_zio_taskq[t][q];
-       char name[32];
        uint_t flags = 0;
        boolean_t batch = B_FALSE;
 
@@ -960,14 +959,10 @@ spa_taskqs_init(spa_t *spa, zio_type_t t, zio_taskq_type_t q)
 
        for (uint_t i = 0; i < count; i++) {
                taskq_t *tq;
+               char name[32];
 
-               if (count > 1) {
-                       (void) snprintf(name, sizeof (name), "%s_%s_%u",
-                           zio_type_name[t], zio_taskq_types[q], i);
-               } else {
-                       (void) snprintf(name, sizeof (name), "%s_%s",
-                           zio_type_name[t], zio_taskq_types[q]);
-               }
+               (void) snprintf(name, sizeof (name), "%s_%s",
+                   zio_type_name[t], zio_taskq_types[q]);
 
                if (zio_taskq_sysdc && spa->spa_proc != &p0) {
                        if (batch)