Lines Matching refs:stats
37 static void bfqg_stats_mark_##name(struct bfqg_stats *stats) \
39 stats->flags |= (1 << BFQG_stats_##name); \
41 static void bfqg_stats_clear_##name(struct bfqg_stats *stats) \
43 stats->flags &= ~(1 << BFQG_stats_##name); \
45 static int bfqg_stats_##name(struct bfqg_stats *stats) \
47 return (stats->flags & (1 << BFQG_stats_##name)) != 0; \
56 static void bfqg_stats_update_group_wait_time(struct bfqg_stats *stats) in BFQG_FLAG_FNS()
60 if (!bfqg_stats_waiting(stats)) in BFQG_FLAG_FNS()
64 if (now > stats->start_group_wait_time) in BFQG_FLAG_FNS()
65 blkg_stat_add(&stats->group_wait_time, in BFQG_FLAG_FNS()
66 now - stats->start_group_wait_time); in BFQG_FLAG_FNS()
67 bfqg_stats_clear_waiting(stats); in BFQG_FLAG_FNS()
74 struct bfqg_stats *stats = &bfqg->stats; in bfqg_stats_set_start_group_wait_time() local
76 if (bfqg_stats_waiting(stats)) in bfqg_stats_set_start_group_wait_time()
80 stats->start_group_wait_time = ktime_get_ns(); in bfqg_stats_set_start_group_wait_time()
81 bfqg_stats_mark_waiting(stats); in bfqg_stats_set_start_group_wait_time()
85 static void bfqg_stats_end_empty_time(struct bfqg_stats *stats) in bfqg_stats_end_empty_time() argument
89 if (!bfqg_stats_empty(stats)) in bfqg_stats_end_empty_time()
93 if (now > stats->start_empty_time) in bfqg_stats_end_empty_time()
94 blkg_stat_add(&stats->empty_time, in bfqg_stats_end_empty_time()
95 now - stats->start_empty_time); in bfqg_stats_end_empty_time()
96 bfqg_stats_clear_empty(stats); in bfqg_stats_end_empty_time()
101 blkg_stat_add(&bfqg->stats.dequeue, 1); in bfqg_stats_update_dequeue()
106 struct bfqg_stats *stats = &bfqg->stats; in bfqg_stats_set_start_empty_time() local
108 if (blkg_rwstat_total(&stats->queued)) in bfqg_stats_set_start_empty_time()
116 if (bfqg_stats_empty(stats)) in bfqg_stats_set_start_empty_time()
119 stats->start_empty_time = ktime_get_ns(); in bfqg_stats_set_start_empty_time()
120 bfqg_stats_mark_empty(stats); in bfqg_stats_set_start_empty_time()
125 struct bfqg_stats *stats = &bfqg->stats; in bfqg_stats_update_idle_time() local
127 if (bfqg_stats_idling(stats)) { in bfqg_stats_update_idle_time()
130 if (now > stats->start_idle_time) in bfqg_stats_update_idle_time()
131 blkg_stat_add(&stats->idle_time, in bfqg_stats_update_idle_time()
132 now - stats->start_idle_time); in bfqg_stats_update_idle_time()
133 bfqg_stats_clear_idling(stats); in bfqg_stats_update_idle_time()
139 struct bfqg_stats *stats = &bfqg->stats; in bfqg_stats_set_start_idle_time() local
141 stats->start_idle_time = ktime_get_ns(); in bfqg_stats_set_start_idle_time()
142 bfqg_stats_mark_idling(stats); in bfqg_stats_set_start_idle_time()
147 struct bfqg_stats *stats = &bfqg->stats; in bfqg_stats_update_avg_queue_size() local
149 blkg_stat_add(&stats->avg_queue_size_sum, in bfqg_stats_update_avg_queue_size()
150 blkg_rwstat_total(&stats->queued)); in bfqg_stats_update_avg_queue_size()
151 blkg_stat_add(&stats->avg_queue_size_samples, 1); in bfqg_stats_update_avg_queue_size()
152 bfqg_stats_update_group_wait_time(stats); in bfqg_stats_update_avg_queue_size()
158 blkg_rwstat_add(&bfqg->stats.queued, op, 1); in bfqg_stats_update_io_add()
159 bfqg_stats_end_empty_time(&bfqg->stats); in bfqg_stats_update_io_add()
166 blkg_rwstat_add(&bfqg->stats.queued, op, -1); in bfqg_stats_update_io_remove()
171 blkg_rwstat_add(&bfqg->stats.merged, op, 1); in bfqg_stats_update_io_merged()
177 struct bfqg_stats *stats = &bfqg->stats; in bfqg_stats_update_completion() local
181 blkg_rwstat_add(&stats->service_time, op, in bfqg_stats_update_completion()
184 blkg_rwstat_add(&stats->wait_time, op, in bfqg_stats_update_completion()
284 static void bfqg_stats_reset(struct bfqg_stats *stats) in bfqg_stats_reset() argument
288 blkg_rwstat_reset(&stats->merged); in bfqg_stats_reset()
289 blkg_rwstat_reset(&stats->service_time); in bfqg_stats_reset()
290 blkg_rwstat_reset(&stats->wait_time); in bfqg_stats_reset()
291 blkg_stat_reset(&stats->time); in bfqg_stats_reset()
292 blkg_stat_reset(&stats->avg_queue_size_sum); in bfqg_stats_reset()
293 blkg_stat_reset(&stats->avg_queue_size_samples); in bfqg_stats_reset()
294 blkg_stat_reset(&stats->dequeue); in bfqg_stats_reset()
295 blkg_stat_reset(&stats->group_wait_time); in bfqg_stats_reset()
296 blkg_stat_reset(&stats->idle_time); in bfqg_stats_reset()
297 blkg_stat_reset(&stats->empty_time); in bfqg_stats_reset()
342 bfqg_stats_add_aux(&parent->stats, &bfqg->stats); in bfqg_stats_xfer_dead()
343 bfqg_stats_reset(&bfqg->stats); in bfqg_stats_xfer_dead()
365 static void bfqg_stats_exit(struct bfqg_stats *stats) in bfqg_stats_exit() argument
368 blkg_rwstat_exit(&stats->merged); in bfqg_stats_exit()
369 blkg_rwstat_exit(&stats->service_time); in bfqg_stats_exit()
370 blkg_rwstat_exit(&stats->wait_time); in bfqg_stats_exit()
371 blkg_rwstat_exit(&stats->queued); in bfqg_stats_exit()
372 blkg_stat_exit(&stats->time); in bfqg_stats_exit()
373 blkg_stat_exit(&stats->avg_queue_size_sum); in bfqg_stats_exit()
374 blkg_stat_exit(&stats->avg_queue_size_samples); in bfqg_stats_exit()
375 blkg_stat_exit(&stats->dequeue); in bfqg_stats_exit()
376 blkg_stat_exit(&stats->group_wait_time); in bfqg_stats_exit()
377 blkg_stat_exit(&stats->idle_time); in bfqg_stats_exit()
378 blkg_stat_exit(&stats->empty_time); in bfqg_stats_exit()
382 static int bfqg_stats_init(struct bfqg_stats *stats, gfp_t gfp) in bfqg_stats_init() argument
385 if (blkg_rwstat_init(&stats->merged, gfp) || in bfqg_stats_init()
386 blkg_rwstat_init(&stats->service_time, gfp) || in bfqg_stats_init()
387 blkg_rwstat_init(&stats->wait_time, gfp) || in bfqg_stats_init()
388 blkg_rwstat_init(&stats->queued, gfp) || in bfqg_stats_init()
389 blkg_stat_init(&stats->time, gfp) || in bfqg_stats_init()
390 blkg_stat_init(&stats->avg_queue_size_sum, gfp) || in bfqg_stats_init()
391 blkg_stat_init(&stats->avg_queue_size_samples, gfp) || in bfqg_stats_init()
392 blkg_stat_init(&stats->dequeue, gfp) || in bfqg_stats_init()
393 blkg_stat_init(&stats->group_wait_time, gfp) || in bfqg_stats_init()
394 blkg_stat_init(&stats->idle_time, gfp) || in bfqg_stats_init()
395 blkg_stat_init(&stats->empty_time, gfp)) { in bfqg_stats_init()
396 bfqg_stats_exit(stats); in bfqg_stats_init()
445 if (bfqg_stats_init(&bfqg->stats, gfp)) { in bfq_pd_alloc()
478 bfqg_stats_exit(&bfqg->stats); in bfq_pd_free()
486 bfqg_stats_reset(&bfqg->stats); in bfq_pd_reset_stats()
1006 u64 samples = blkg_stat_read(&bfqg->stats.avg_queue_size_samples); in bfqg_prfill_avg_queue_size()
1010 v = blkg_stat_read(&bfqg->stats.avg_queue_size_sum); in bfqg_prfill_avg_queue_size()
1076 .private = offsetof(struct bfq_group, stats.time),
1085 .private = offsetof(struct bfq_group, stats.service_time),
1090 .private = offsetof(struct bfq_group, stats.wait_time),
1095 .private = offsetof(struct bfq_group, stats.merged),
1100 .private = offsetof(struct bfq_group, stats.queued),
1119 .private = offsetof(struct bfq_group, stats.time),
1128 .private = offsetof(struct bfq_group, stats.service_time),
1133 .private = offsetof(struct bfq_group, stats.wait_time),
1138 .private = offsetof(struct bfq_group, stats.merged),
1143 .private = offsetof(struct bfq_group, stats.queued),
1152 .private = offsetof(struct bfq_group, stats.group_wait_time),
1157 .private = offsetof(struct bfq_group, stats.idle_time),
1162 .private = offsetof(struct bfq_group, stats.empty_time),
1167 .private = offsetof(struct bfq_group, stats.dequeue),