diff options
Diffstat (limited to 'kernel/sched_debug.c')
| -rw-r--r-- | kernel/sched_debug.c | 64 |
1 files changed, 59 insertions, 5 deletions
diff --git a/kernel/sched_debug.c b/kernel/sched_debug.c index 8bb713040ac9..bbe6b31c3c56 100644 --- a/kernel/sched_debug.c +++ b/kernel/sched_debug.c | |||
| @@ -119,9 +119,7 @@ void print_cfs_rq(struct seq_file *m, int cpu, struct cfs_rq *cfs_rq) | |||
| 119 | struct sched_entity *last; | 119 | struct sched_entity *last; |
| 120 | unsigned long flags; | 120 | unsigned long flags; |
| 121 | 121 | ||
| 122 | #if !defined(CONFIG_CGROUP_SCHED) || !defined(CONFIG_USER_SCHED) | 122 | #if defined(CONFIG_CGROUP_SCHED) && defined(CONFIG_FAIR_GROUP_SCHED) |
| 123 | SEQ_printf(m, "\ncfs_rq[%d]:\n", cpu); | ||
| 124 | #else | ||
| 125 | char path[128] = ""; | 123 | char path[128] = ""; |
| 126 | struct cgroup *cgroup = NULL; | 124 | struct cgroup *cgroup = NULL; |
| 127 | struct task_group *tg = cfs_rq->tg; | 125 | struct task_group *tg = cfs_rq->tg; |
| @@ -133,6 +131,8 @@ void print_cfs_rq(struct seq_file *m, int cpu, struct cfs_rq *cfs_rq) | |||
| 133 | cgroup_path(cgroup, path, sizeof(path)); | 131 | cgroup_path(cgroup, path, sizeof(path)); |
| 134 | 132 | ||
| 135 | SEQ_printf(m, "\ncfs_rq[%d]:%s\n", cpu, path); | 133 | SEQ_printf(m, "\ncfs_rq[%d]:%s\n", cpu, path); |
| 134 | #else | ||
| 135 | SEQ_printf(m, "\ncfs_rq[%d]:\n", cpu); | ||
| 136 | #endif | 136 | #endif |
| 137 | 137 | ||
| 138 | SEQ_printf(m, " .%-30s: %Ld.%06ld\n", "exec_clock", | 138 | SEQ_printf(m, " .%-30s: %Ld.%06ld\n", "exec_clock", |
| @@ -162,11 +162,64 @@ void print_cfs_rq(struct seq_file *m, int cpu, struct cfs_rq *cfs_rq) | |||
| 162 | SEQ_printf(m, " .%-30s: %ld\n", "nr_running", cfs_rq->nr_running); | 162 | SEQ_printf(m, " .%-30s: %ld\n", "nr_running", cfs_rq->nr_running); |
| 163 | SEQ_printf(m, " .%-30s: %ld\n", "load", cfs_rq->load.weight); | 163 | SEQ_printf(m, " .%-30s: %ld\n", "load", cfs_rq->load.weight); |
| 164 | #ifdef CONFIG_SCHEDSTATS | 164 | #ifdef CONFIG_SCHEDSTATS |
| 165 | SEQ_printf(m, " .%-30s: %d\n", "bkl_count", | 165 | #define P(n) SEQ_printf(m, " .%-30s: %d\n", #n, rq->n); |
| 166 | rq->bkl_count); | 166 | |
| 167 | P(yld_exp_empty); | ||
| 168 | P(yld_act_empty); | ||
| 169 | P(yld_both_empty); | ||
| 170 | P(yld_count); | ||
| 171 | |||
| 172 | P(sched_switch); | ||
| 173 | P(sched_count); | ||
| 174 | P(sched_goidle); | ||
| 175 | |||
| 176 | P(ttwu_count); | ||
| 177 | P(ttwu_local); | ||
| 178 | |||
| 179 | P(bkl_count); | ||
| 180 | |||
| 181 | #undef P | ||
| 167 | #endif | 182 | #endif |
| 168 | SEQ_printf(m, " .%-30s: %ld\n", "nr_spread_over", | 183 | SEQ_printf(m, " .%-30s: %ld\n", "nr_spread_over", |
| 169 | cfs_rq->nr_spread_over); | 184 | cfs_rq->nr_spread_over); |
| 185 | #ifdef CONFIG_FAIR_GROUP_SCHED | ||
| 186 | #ifdef CONFIG_SMP | ||
| 187 | SEQ_printf(m, " .%-30s: %lu\n", "shares", cfs_rq->shares); | ||
| 188 | #endif | ||
| 189 | #endif | ||
| 190 | } | ||
| 191 | |||
| 192 | void print_rt_rq(struct seq_file *m, int cpu, struct rt_rq *rt_rq) | ||
| 193 | { | ||
| 194 | #if defined(CONFIG_CGROUP_SCHED) && defined(CONFIG_RT_GROUP_SCHED) | ||
| 195 | char path[128] = ""; | ||
| 196 | struct cgroup *cgroup = NULL; | ||
| 197 | struct task_group *tg = rt_rq->tg; | ||
| 198 | |||
| 199 | if (tg) | ||
| 200 | cgroup = tg->css.cgroup; | ||
| 201 | |||
| 202 | if (cgroup) | ||
| 203 | cgroup_path(cgroup, path, sizeof(path)); | ||
| 204 | |||
| 205 | SEQ_printf(m, "\nrt_rq[%d]:%s\n", cpu, path); | ||
| 206 | #else | ||
| 207 | SEQ_printf(m, "\nrt_rq[%d]:\n", cpu); | ||
| 208 | #endif | ||
| 209 | |||
| 210 | |||
| 211 | #define P(x) \ | ||
| 212 | SEQ_printf(m, " .%-30s: %Ld\n", #x, (long long)(rt_rq->x)) | ||
| 213 | #define PN(x) \ | ||
| 214 | SEQ_printf(m, " .%-30s: %Ld.%06ld\n", #x, SPLIT_NS(rt_rq->x)) | ||
| 215 | |||
| 216 | P(rt_nr_running); | ||
| 217 | P(rt_throttled); | ||
| 218 | PN(rt_time); | ||
| 219 | PN(rt_runtime); | ||
| 220 | |||
| 221 | #undef PN | ||
| 222 | #undef P | ||
| 170 | } | 223 | } |
| 171 | 224 | ||
| 172 | static void print_cpu(struct seq_file *m, int cpu) | 225 | static void print_cpu(struct seq_file *m, int cpu) |
| @@ -208,6 +261,7 @@ static void print_cpu(struct seq_file *m, int cpu) | |||
| 208 | #undef PN | 261 | #undef PN |
| 209 | 262 | ||
| 210 | print_cfs_stats(m, cpu); | 263 | print_cfs_stats(m, cpu); |
| 264 | print_rt_stats(m, cpu); | ||
| 211 | 265 | ||
| 212 | print_rq(m, rq, cpu); | 266 | print_rq(m, rq, cpu); |
| 213 | } | 267 | } |
