Lines Matching refs:stats
104 static void bfqg_stats_mark_##name(struct bfqg_stats *stats) \
106 stats->flags |= (1 << BFQG_stats_##name); \
108 static void bfqg_stats_clear_##name(struct bfqg_stats *stats) \
110 stats->flags &= ~(1 << BFQG_stats_##name); \
112 static int bfqg_stats_##name(struct bfqg_stats *stats) \
114 return (stats->flags & (1 << BFQG_stats_##name)) != 0; \
123 static void bfqg_stats_update_group_wait_time(struct bfqg_stats *stats) in BFQG_FLAG_FNS()
127 if (!bfqg_stats_waiting(stats)) in BFQG_FLAG_FNS()
131 if (now > stats->start_group_wait_time) in BFQG_FLAG_FNS()
132 bfq_stat_add(&stats->group_wait_time, in BFQG_FLAG_FNS()
133 now - stats->start_group_wait_time); in BFQG_FLAG_FNS()
134 bfqg_stats_clear_waiting(stats); in BFQG_FLAG_FNS()
141 struct bfqg_stats *stats = &bfqg->stats; in bfqg_stats_set_start_group_wait_time() local
143 if (bfqg_stats_waiting(stats)) in bfqg_stats_set_start_group_wait_time()
147 stats->start_group_wait_time = ktime_get_ns(); in bfqg_stats_set_start_group_wait_time()
148 bfqg_stats_mark_waiting(stats); in bfqg_stats_set_start_group_wait_time()
152 static void bfqg_stats_end_empty_time(struct bfqg_stats *stats) in bfqg_stats_end_empty_time() argument
156 if (!bfqg_stats_empty(stats)) in bfqg_stats_end_empty_time()
160 if (now > stats->start_empty_time) in bfqg_stats_end_empty_time()
161 bfq_stat_add(&stats->empty_time, in bfqg_stats_end_empty_time()
162 now - stats->start_empty_time); in bfqg_stats_end_empty_time()
163 bfqg_stats_clear_empty(stats); in bfqg_stats_end_empty_time()
168 bfq_stat_add(&bfqg->stats.dequeue, 1); in bfqg_stats_update_dequeue()
173 struct bfqg_stats *stats = &bfqg->stats; in bfqg_stats_set_start_empty_time() local
175 if (blkg_rwstat_total(&stats->queued)) in bfqg_stats_set_start_empty_time()
183 if (bfqg_stats_empty(stats)) in bfqg_stats_set_start_empty_time()
186 stats->start_empty_time = ktime_get_ns(); in bfqg_stats_set_start_empty_time()
187 bfqg_stats_mark_empty(stats); in bfqg_stats_set_start_empty_time()
192 struct bfqg_stats *stats = &bfqg->stats; in bfqg_stats_update_idle_time() local
194 if (bfqg_stats_idling(stats)) { in bfqg_stats_update_idle_time()
197 if (now > stats->start_idle_time) in bfqg_stats_update_idle_time()
198 bfq_stat_add(&stats->idle_time, in bfqg_stats_update_idle_time()
199 now - stats->start_idle_time); in bfqg_stats_update_idle_time()
200 bfqg_stats_clear_idling(stats); in bfqg_stats_update_idle_time()
206 struct bfqg_stats *stats = &bfqg->stats; in bfqg_stats_set_start_idle_time() local
208 stats->start_idle_time = ktime_get_ns(); in bfqg_stats_set_start_idle_time()
209 bfqg_stats_mark_idling(stats); in bfqg_stats_set_start_idle_time()
214 struct bfqg_stats *stats = &bfqg->stats; in bfqg_stats_update_avg_queue_size() local
216 bfq_stat_add(&stats->avg_queue_size_sum, in bfqg_stats_update_avg_queue_size()
217 blkg_rwstat_total(&stats->queued)); in bfqg_stats_update_avg_queue_size()
218 bfq_stat_add(&stats->avg_queue_size_samples, 1); in bfqg_stats_update_avg_queue_size()
219 bfqg_stats_update_group_wait_time(stats); in bfqg_stats_update_avg_queue_size()
225 blkg_rwstat_add(&bfqg->stats.queued, op, 1); in bfqg_stats_update_io_add()
226 bfqg_stats_end_empty_time(&bfqg->stats); in bfqg_stats_update_io_add()
233 blkg_rwstat_add(&bfqg->stats.queued, op, -1); in bfqg_stats_update_io_remove()
238 blkg_rwstat_add(&bfqg->stats.merged, op, 1); in bfqg_stats_update_io_merged()
244 struct bfqg_stats *stats = &bfqg->stats; in bfqg_stats_update_completion() local
248 blkg_rwstat_add(&stats->service_time, op, in bfqg_stats_update_completion()
251 blkg_rwstat_add(&stats->wait_time, op, in bfqg_stats_update_completion()
357 blkg_rwstat_add(&bfqg->stats.bytes, rq->cmd_flags, blk_rq_bytes(rq)); in bfqg_stats_update_legacy_io()
358 blkg_rwstat_add(&bfqg->stats.ios, rq->cmd_flags, 1); in bfqg_stats_update_legacy_io()
362 static void bfqg_stats_reset(struct bfqg_stats *stats) in bfqg_stats_reset() argument
366 blkg_rwstat_reset(&stats->merged); in bfqg_stats_reset()
367 blkg_rwstat_reset(&stats->service_time); in bfqg_stats_reset()
368 blkg_rwstat_reset(&stats->wait_time); in bfqg_stats_reset()
369 bfq_stat_reset(&stats->time); in bfqg_stats_reset()
370 bfq_stat_reset(&stats->avg_queue_size_sum); in bfqg_stats_reset()
371 bfq_stat_reset(&stats->avg_queue_size_samples); in bfqg_stats_reset()
372 bfq_stat_reset(&stats->dequeue); in bfqg_stats_reset()
373 bfq_stat_reset(&stats->group_wait_time); in bfqg_stats_reset()
374 bfq_stat_reset(&stats->idle_time); in bfqg_stats_reset()
375 bfq_stat_reset(&stats->empty_time); in bfqg_stats_reset()
420 bfqg_stats_add_aux(&parent->stats, &bfqg->stats); in bfqg_stats_xfer_dead()
421 bfqg_stats_reset(&bfqg->stats); in bfqg_stats_xfer_dead()
443 static void bfqg_stats_exit(struct bfqg_stats *stats) in bfqg_stats_exit() argument
445 blkg_rwstat_exit(&stats->bytes); in bfqg_stats_exit()
446 blkg_rwstat_exit(&stats->ios); in bfqg_stats_exit()
448 blkg_rwstat_exit(&stats->merged); in bfqg_stats_exit()
449 blkg_rwstat_exit(&stats->service_time); in bfqg_stats_exit()
450 blkg_rwstat_exit(&stats->wait_time); in bfqg_stats_exit()
451 blkg_rwstat_exit(&stats->queued); in bfqg_stats_exit()
452 bfq_stat_exit(&stats->time); in bfqg_stats_exit()
453 bfq_stat_exit(&stats->avg_queue_size_sum); in bfqg_stats_exit()
454 bfq_stat_exit(&stats->avg_queue_size_samples); in bfqg_stats_exit()
455 bfq_stat_exit(&stats->dequeue); in bfqg_stats_exit()
456 bfq_stat_exit(&stats->group_wait_time); in bfqg_stats_exit()
457 bfq_stat_exit(&stats->idle_time); in bfqg_stats_exit()
458 bfq_stat_exit(&stats->empty_time); in bfqg_stats_exit()
462 static int bfqg_stats_init(struct bfqg_stats *stats, gfp_t gfp) in bfqg_stats_init() argument
464 if (blkg_rwstat_init(&stats->bytes, gfp) || in bfqg_stats_init()
465 blkg_rwstat_init(&stats->ios, gfp)) in bfqg_stats_init()
469 if (blkg_rwstat_init(&stats->merged, gfp) || in bfqg_stats_init()
470 blkg_rwstat_init(&stats->service_time, gfp) || in bfqg_stats_init()
471 blkg_rwstat_init(&stats->wait_time, gfp) || in bfqg_stats_init()
472 blkg_rwstat_init(&stats->queued, gfp) || in bfqg_stats_init()
473 bfq_stat_init(&stats->time, gfp) || in bfqg_stats_init()
474 bfq_stat_init(&stats->avg_queue_size_sum, gfp) || in bfqg_stats_init()
475 bfq_stat_init(&stats->avg_queue_size_samples, gfp) || in bfqg_stats_init()
476 bfq_stat_init(&stats->dequeue, gfp) || in bfqg_stats_init()
477 bfq_stat_init(&stats->group_wait_time, gfp) || in bfqg_stats_init()
478 bfq_stat_init(&stats->idle_time, gfp) || in bfqg_stats_init()
479 bfq_stat_init(&stats->empty_time, gfp)) in bfqg_stats_init()
486 bfqg_stats_exit(stats); in bfqg_stats_init()
532 if (bfqg_stats_init(&bfqg->stats, gfp)) { in bfq_pd_alloc()
568 bfqg_stats_exit(&bfqg->stats); in bfq_pd_free()
576 bfqg_stats_reset(&bfqg->stats); in bfq_pd_reset_stats()
1215 u64 sum = blkg_rwstat_total(&bfqg->stats.bytes); in bfqg_prfill_sectors()
1233 offsetof(struct bfq_group, stats.bytes), &tmp); in bfqg_prfill_sectors_recursive()
1251 u64 samples = bfq_stat_read(&bfqg->stats.avg_queue_size_samples); in bfqg_prfill_avg_queue_size()
1255 v = bfq_stat_read(&bfqg->stats.avg_queue_size_sum); in bfqg_prfill_avg_queue_size()
1316 .private = offsetof(struct bfq_group, stats.bytes),
1321 .private = offsetof(struct bfq_group, stats.ios),
1327 .private = offsetof(struct bfq_group, stats.time),
1336 .private = offsetof(struct bfq_group, stats.service_time),
1341 .private = offsetof(struct bfq_group, stats.wait_time),
1346 .private = offsetof(struct bfq_group, stats.merged),
1351 .private = offsetof(struct bfq_group, stats.queued),
1359 .private = offsetof(struct bfq_group, stats.bytes),
1364 .private = offsetof(struct bfq_group, stats.ios),
1370 .private = offsetof(struct bfq_group, stats.time),
1379 .private = offsetof(struct bfq_group, stats.service_time),
1384 .private = offsetof(struct bfq_group, stats.wait_time),
1389 .private = offsetof(struct bfq_group, stats.merged),
1394 .private = offsetof(struct bfq_group, stats.queued),
1403 .private = offsetof(struct bfq_group, stats.group_wait_time),
1408 .private = offsetof(struct bfq_group, stats.idle_time),
1413 .private = offsetof(struct bfq_group, stats.empty_time),
1418 .private = offsetof(struct bfq_group, stats.dequeue),