Re: [PATCH 23/24] cfq-iosched: collect stats from dead cfqgs
From: Vivek Goyal <hidden>
Date: 2013-01-02 16:24:27
Also in:
lkml
On Fri, Dec 28, 2012 at 12:35:45PM -0800, Tejun Heo wrote:
To support hierarchical stats, it's necessary to remember stats from dead children. Add cfqg->dead_stats and make a dying cfqg transfer its stats to the parent's dead-stats.
Hi Tejun, Why not directly transfer stats to cfqg->stats. IOW, what's the advantage of maintaining dead_stats separately. [..]
+ * Transfer @cfqg's stats to its parent's dead_stats so that the ancestors'
+ * recursive stats can still account for the amount used by this cfqg after
+ * it's gone.
+ */
+static void cfqg_stats_xfer_dead(struct cfq_group *cfqg)
+{
+ struct cfq_group *parent = cfqg_parent(cfqg);
+
+ lockdep_assert_held(cfqg_to_blkg(cfqg)->q->queue_lock);
+
+ if (unlikely(!parent))
+ return;
+
+ cfqg_stats_merge(&parent->dead_stats, &cfqg->stats);
+ cfqg_stats_merge(&parent->dead_stats, &cfqg->dead_stats);
+ cfqg_stats_reset(&cfqg->stats);
+ cfqg_stats_reset(&cfqg->dead_stats);Anyway group will be marked offline and later freed. So resetting stats might not be required. In fact if we have a realiable way of resetting status then online/offline infrastructure might not be required? I think per cpu stats will be a problem though and that's why we probably require logic to online/offline the group? Thanks Vivek