|
@@ -1611,6 +1611,30 @@ static const struct sched_class fair_sched_class = {
|
|
|
};
|
|
|
|
|
|
#ifdef CONFIG_SCHED_DEBUG
|
|
|
+static void
|
|
|
+print_cfs_rq_tasks(struct seq_file *m, struct cfs_rq *cfs_rq, int depth)
|
|
|
+{
|
|
|
+ struct sched_entity *se;
|
|
|
+
|
|
|
+ if (!cfs_rq)
|
|
|
+ return;
|
|
|
+
|
|
|
+ list_for_each_entry_rcu(se, &cfs_rq->tasks, group_node) {
|
|
|
+ int i;
|
|
|
+
|
|
|
+ for (i = depth; i; i--)
|
|
|
+ seq_puts(m, " ");
|
|
|
+
|
|
|
+ seq_printf(m, "%lu %s %lu\n",
|
|
|
+ se->load.weight,
|
|
|
+ entity_is_task(se) ? "T" : "G",
|
|
|
+ calc_delta_weight(SCHED_LOAD_SCALE, se)
|
|
|
+ );
|
|
|
+ if (!entity_is_task(se))
|
|
|
+ print_cfs_rq_tasks(m, group_cfs_rq(se), depth + 1);
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
static void print_cfs_stats(struct seq_file *m, int cpu)
|
|
|
{
|
|
|
struct cfs_rq *cfs_rq;
|
|
@@ -1618,6 +1642,9 @@ static void print_cfs_stats(struct seq_file *m, int cpu)
|
|
|
rcu_read_lock();
|
|
|
for_each_leaf_cfs_rq(cpu_rq(cpu), cfs_rq)
|
|
|
print_cfs_rq(m, cpu, cfs_rq);
|
|
|
+
|
|
|
+ seq_printf(m, "\nWeight tree:\n");
|
|
|
+ print_cfs_rq_tasks(m, &cpu_rq(cpu)->cfs, 1);
|
|
|
rcu_read_unlock();
|
|
|
}
|
|
|
#endif
|