Skip to content

Commit 9c16b1e

Browse files
committed
REVIEW ONLY: zio: add counters for total zio and bp allocations
Just a rough eyeball comparison to get a feel for what we're saving.
1 parent 80a99b8 commit 9c16b1e

File tree

1 file changed

+19
-0
lines changed

1 file changed

+19
-0
lines changed

module/zfs/zio.c

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -152,20 +152,26 @@ typedef struct zio_stats {
152152
kstat_named_t ziostat_alloc_class_fallbacks;
153153
kstat_named_t ziostat_gang_writes;
154154
kstat_named_t ziostat_gang_multilevel;
155+
kstat_named_t ziostat_zio_total;
156+
kstat_named_t ziostat_zio_bp_total;
155157
} zio_stats_t;
156158

157159
static zio_stats_t zio_stats = {
158160
{ "total_allocations", KSTAT_DATA_UINT64 },
159161
{ "alloc_class_fallbacks", KSTAT_DATA_UINT64 },
160162
{ "gang_writes", KSTAT_DATA_UINT64 },
161163
{ "gang_multilevel", KSTAT_DATA_UINT64 },
164+
{ "zio_total", KSTAT_DATA_UINT64 },
165+
{ "zio_bp_total", KSTAT_DATA_UINT64 },
162166
};
163167

164168
struct {
165169
wmsum_t ziostat_total_allocations;
166170
wmsum_t ziostat_alloc_class_fallbacks;
167171
wmsum_t ziostat_gang_writes;
168172
wmsum_t ziostat_gang_multilevel;
173+
wmsum_t ziostat_zio_total;
174+
wmsum_t ziostat_zio_bp_total;
169175
} ziostat_sums;
170176

171177
#define ZIOSTAT_BUMP(stat) wmsum_add(&ziostat_sums.stat, 1);
@@ -191,6 +197,10 @@ zio_kstats_update(kstat_t *ksp, int rw)
191197
wmsum_value(&ziostat_sums.ziostat_gang_writes);
192198
zs->ziostat_gang_multilevel.value.ui64 =
193199
wmsum_value(&ziostat_sums.ziostat_gang_multilevel);
200+
zs->ziostat_zio_total.value.ui64 =
201+
wmsum_value(&ziostat_sums.ziostat_zio_total);
202+
zs->ziostat_zio_bp_total.value.ui64 =
203+
wmsum_value(&ziostat_sums.ziostat_zio_bp_total);
194204
return (0);
195205
}
196206

@@ -210,6 +220,8 @@ zio_init(void)
210220
wmsum_init(&ziostat_sums.ziostat_alloc_class_fallbacks, 0);
211221
wmsum_init(&ziostat_sums.ziostat_gang_writes, 0);
212222
wmsum_init(&ziostat_sums.ziostat_gang_multilevel, 0);
223+
wmsum_init(&ziostat_sums.ziostat_zio_total, 0);
224+
wmsum_init(&ziostat_sums.ziostat_zio_bp_total, 0);
213225
zio_ksp = kstat_create("zfs", 0, "zio_stats",
214226
"misc", KSTAT_TYPE_NAMED, sizeof (zio_stats) /
215227
sizeof (kstat_named_t), KSTAT_FLAG_VIRTUAL);
@@ -355,6 +367,8 @@ zio_fini(void)
355367
wmsum_fini(&ziostat_sums.ziostat_alloc_class_fallbacks);
356368
wmsum_fini(&ziostat_sums.ziostat_gang_writes);
357369
wmsum_fini(&ziostat_sums.ziostat_gang_multilevel);
370+
wmsum_fini(&ziostat_sums.ziostat_zio_total);
371+
wmsum_fini(&ziostat_sums.ziostat_zio_bp_total);
358372

359373
kmem_cache_destroy(zio_bp_cache);
360374
kmem_cache_destroy(zio_link_cache);
@@ -969,6 +983,7 @@ zio_create(zio_t *pio, spa_t *spa, uint64_t txg, const blkptr_t *bp,
969983
IMPLY(lsize != psize, (flags & ZIO_FLAG_RAW_COMPRESS) != 0);
970984

971985
zio = kmem_cache_alloc(zio_cache, KM_SLEEP);
986+
ZIOSTAT_BUMP(ziostat_zio_total);
972987
memset(zio, 0, sizeof (zio_t));
973988

974989
mutex_init(&zio->io_lock, NULL, MUTEX_NOLOCKDEP, NULL);
@@ -994,6 +1009,7 @@ zio_create(zio_t *pio, spa_t *spa, uint64_t txg, const blkptr_t *bp,
9941009
zio->io_child_type == ZIO_CHILD_DDT) {
9951010
zio->io_bp_copy =
9961011
kmem_cache_alloc(zio_bp_cache, KM_SLEEP);
1012+
ZIOSTAT_BUMP(ziostat_zio_bp_total);
9971013
*zio->io_bp_copy = *bp;
9981014
zio->io_bp = zio->io_bp_copy; /* so caller can free */
9991015
} else {
@@ -1003,6 +1019,7 @@ zio_create(zio_t *pio, spa_t *spa, uint64_t txg, const blkptr_t *bp,
10031019
zio->io_child_type != ZIO_CHILD_VDEV) {
10041020
zio->io_bp_orig =
10051021
kmem_cache_alloc(zio_bp_cache, KM_SLEEP);
1022+
ZIOSTAT_BUMP(ziostat_zio_bp_total);
10061023
*zio->io_bp_orig = *bp;
10071024
}
10081025
if (zio->io_child_type == ZIO_CHILD_LOGICAL)
@@ -1083,6 +1100,7 @@ zio_force_bp(zio_t *zio, const blkptr_t *bp)
10831100
ASSERT3U(zio->io_stage, ==, ZIO_STAGE_DONE);
10841101
ASSERT0P(zio->io_bp_copy);
10851102
zio->io_bp_copy = kmem_cache_alloc(zio_bp_cache, KM_SLEEP);
1103+
ZIOSTAT_BUMP(ziostat_zio_bp_total);
10861104
*zio->io_bp_copy = *bp;
10871105
zio->io_bp = zio->io_bp_copy;
10881106
}
@@ -5343,6 +5361,7 @@ zio_ready(zio_t *zio)
53435361
zio->io_bp_copy =
53445362
kmem_cache_alloc(zio_bp_cache, KM_SLEEP);
53455363
*zio->io_bp_copy = *bp;
5364+
/* Not bumping ziostat_zio_bp_total for debug. */
53465365
}
53475366
#endif
53485367

0 commit comments

Comments
 (0)