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()
351 static void bfqg_stats_reset(struct bfqg_stats *stats) in bfqg_stats_reset() argument
355 blkg_rwstat_reset(&stats->merged); in bfqg_stats_reset()
356 blkg_rwstat_reset(&stats->service_time); in bfqg_stats_reset()
357 blkg_rwstat_reset(&stats->wait_time); in bfqg_stats_reset()
358 bfq_stat_reset(&stats->time); in bfqg_stats_reset()
359 bfq_stat_reset(&stats->avg_queue_size_sum); in bfqg_stats_reset()
360 bfq_stat_reset(&stats->avg_queue_size_samples); in bfqg_stats_reset()
361 bfq_stat_reset(&stats->dequeue); in bfqg_stats_reset()
362 bfq_stat_reset(&stats->group_wait_time); in bfqg_stats_reset()
363 bfq_stat_reset(&stats->idle_time); in bfqg_stats_reset()
364 bfq_stat_reset(&stats->empty_time); in bfqg_stats_reset()
409 bfqg_stats_add_aux(&parent->stats, &bfqg->stats); in bfqg_stats_xfer_dead()
410 bfqg_stats_reset(&bfqg->stats); in bfqg_stats_xfer_dead()
432 static void bfqg_stats_exit(struct bfqg_stats *stats) in bfqg_stats_exit() argument
435 blkg_rwstat_exit(&stats->merged); in bfqg_stats_exit()
436 blkg_rwstat_exit(&stats->service_time); in bfqg_stats_exit()
437 blkg_rwstat_exit(&stats->wait_time); in bfqg_stats_exit()
438 blkg_rwstat_exit(&stats->queued); in bfqg_stats_exit()
439 bfq_stat_exit(&stats->time); in bfqg_stats_exit()
440 bfq_stat_exit(&stats->avg_queue_size_sum); in bfqg_stats_exit()
441 bfq_stat_exit(&stats->avg_queue_size_samples); in bfqg_stats_exit()
442 bfq_stat_exit(&stats->dequeue); in bfqg_stats_exit()
443 bfq_stat_exit(&stats->group_wait_time); in bfqg_stats_exit()
444 bfq_stat_exit(&stats->idle_time); in bfqg_stats_exit()
445 bfq_stat_exit(&stats->empty_time); in bfqg_stats_exit()
449 static int bfqg_stats_init(struct bfqg_stats *stats, gfp_t gfp) in bfqg_stats_init() argument
452 if (blkg_rwstat_init(&stats->merged, gfp) || in bfqg_stats_init()
453 blkg_rwstat_init(&stats->service_time, gfp) || in bfqg_stats_init()
454 blkg_rwstat_init(&stats->wait_time, gfp) || in bfqg_stats_init()
455 blkg_rwstat_init(&stats->queued, gfp) || in bfqg_stats_init()
456 bfq_stat_init(&stats->time, gfp) || in bfqg_stats_init()
457 bfq_stat_init(&stats->avg_queue_size_sum, gfp) || in bfqg_stats_init()
458 bfq_stat_init(&stats->avg_queue_size_samples, gfp) || in bfqg_stats_init()
459 bfq_stat_init(&stats->dequeue, gfp) || in bfqg_stats_init()
460 bfq_stat_init(&stats->group_wait_time, gfp) || in bfqg_stats_init()
461 bfq_stat_init(&stats->idle_time, gfp) || in bfqg_stats_init()
462 bfq_stat_init(&stats->empty_time, gfp)) { in bfqg_stats_init()
463 bfqg_stats_exit(stats); in bfqg_stats_init()
513 if (bfqg_stats_init(&bfqg->stats, gfp)) { in bfq_pd_alloc()
546 bfqg_stats_exit(&bfqg->stats); in bfq_pd_free()
554 bfqg_stats_reset(&bfqg->stats); in bfq_pd_reset_stats()
1164 u64 samples = bfq_stat_read(&bfqg->stats.avg_queue_size_samples); in bfqg_prfill_avg_queue_size()
1168 v = bfq_stat_read(&bfqg->stats.avg_queue_size_sum); in bfqg_prfill_avg_queue_size()
1240 .private = offsetof(struct bfq_group, stats.time),
1249 .private = offsetof(struct bfq_group, stats.service_time),
1254 .private = offsetof(struct bfq_group, stats.wait_time),
1259 .private = offsetof(struct bfq_group, stats.merged),
1264 .private = offsetof(struct bfq_group, stats.queued),
1283 .private = offsetof(struct bfq_group, stats.time),
1292 .private = offsetof(struct bfq_group, stats.service_time),
1297 .private = offsetof(struct bfq_group, stats.wait_time),
1302 .private = offsetof(struct bfq_group, stats.merged),
1307 .private = offsetof(struct bfq_group, stats.queued),
1316 .private = offsetof(struct bfq_group, stats.group_wait_time),
1321 .private = offsetof(struct bfq_group, stats.idle_time),
1326 .private = offsetof(struct bfq_group, stats.empty_time),
1331 .private = offsetof(struct bfq_group, stats.dequeue),