diff options
Diffstat (limited to 'kernel/sched_debug.c')
| -rw-r--r-- | kernel/sched_debug.c | 47 |
1 files changed, 2 insertions, 45 deletions
diff --git a/kernel/sched_debug.c b/kernel/sched_debug.c index e95b77414a99..1dfae3d014b5 100644 --- a/kernel/sched_debug.c +++ b/kernel/sched_debug.c | |||
| @@ -54,8 +54,7 @@ static unsigned long nsec_low(unsigned long long nsec) | |||
| 54 | #define SPLIT_NS(x) nsec_high(x), nsec_low(x) | 54 | #define SPLIT_NS(x) nsec_high(x), nsec_low(x) |
| 55 | 55 | ||
| 56 | #ifdef CONFIG_FAIR_GROUP_SCHED | 56 | #ifdef CONFIG_FAIR_GROUP_SCHED |
| 57 | static void print_cfs_group_stats(struct seq_file *m, int cpu, | 57 | static void print_cfs_group_stats(struct seq_file *m, int cpu, struct task_group *tg) |
| 58 | struct task_group *tg) | ||
| 59 | { | 58 | { |
| 60 | struct sched_entity *se = tg->se[cpu]; | 59 | struct sched_entity *se = tg->se[cpu]; |
| 61 | if (!se) | 60 | if (!se) |
| @@ -110,16 +109,6 @@ print_task(struct seq_file *m, struct rq *rq, struct task_struct *p) | |||
| 110 | 0LL, 0LL, 0LL, 0L, 0LL, 0L, 0LL, 0L); | 109 | 0LL, 0LL, 0LL, 0L, 0LL, 0L, 0LL, 0L); |
| 111 | #endif | 110 | #endif |
| 112 | 111 | ||
| 113 | #ifdef CONFIG_CGROUP_SCHED | ||
| 114 | { | ||
| 115 | char path[64]; | ||
| 116 | |||
| 117 | rcu_read_lock(); | ||
| 118 | cgroup_path(task_group(p)->css.cgroup, path, sizeof(path)); | ||
| 119 | rcu_read_unlock(); | ||
| 120 | SEQ_printf(m, " %s", path); | ||
| 121 | } | ||
| 122 | #endif | ||
| 123 | SEQ_printf(m, "\n"); | 112 | SEQ_printf(m, "\n"); |
| 124 | } | 113 | } |
| 125 | 114 | ||
| @@ -147,19 +136,6 @@ static void print_rq(struct seq_file *m, struct rq *rq, int rq_cpu) | |||
| 147 | read_unlock_irqrestore(&tasklist_lock, flags); | 136 | read_unlock_irqrestore(&tasklist_lock, flags); |
| 148 | } | 137 | } |
| 149 | 138 | ||
| 150 | #if defined(CONFIG_CGROUP_SCHED) && \ | ||
| 151 | (defined(CONFIG_FAIR_GROUP_SCHED) || defined(CONFIG_RT_GROUP_SCHED)) | ||
| 152 | static void task_group_path(struct task_group *tg, char *buf, int buflen) | ||
| 153 | { | ||
| 154 | /* may be NULL if the underlying cgroup isn't fully-created yet */ | ||
| 155 | if (!tg->css.cgroup) { | ||
| 156 | buf[0] = '\0'; | ||
| 157 | return; | ||
| 158 | } | ||
| 159 | cgroup_path(tg->css.cgroup, buf, buflen); | ||
| 160 | } | ||
| 161 | #endif | ||
| 162 | |||
| 163 | void print_cfs_rq(struct seq_file *m, int cpu, struct cfs_rq *cfs_rq) | 139 | void print_cfs_rq(struct seq_file *m, int cpu, struct cfs_rq *cfs_rq) |
| 164 | { | 140 | { |
| 165 | s64 MIN_vruntime = -1, min_vruntime, max_vruntime = -1, | 141 | s64 MIN_vruntime = -1, min_vruntime, max_vruntime = -1, |
| @@ -168,16 +144,7 @@ void print_cfs_rq(struct seq_file *m, int cpu, struct cfs_rq *cfs_rq) | |||
| 168 | struct sched_entity *last; | 144 | struct sched_entity *last; |
| 169 | unsigned long flags; | 145 | unsigned long flags; |
| 170 | 146 | ||
| 171 | #if defined(CONFIG_CGROUP_SCHED) && defined(CONFIG_FAIR_GROUP_SCHED) | ||
| 172 | char path[128]; | ||
| 173 | struct task_group *tg = cfs_rq->tg; | ||
| 174 | |||
| 175 | task_group_path(tg, path, sizeof(path)); | ||
| 176 | |||
| 177 | SEQ_printf(m, "\ncfs_rq[%d]:%s\n", cpu, path); | ||
| 178 | #else | ||
| 179 | SEQ_printf(m, "\ncfs_rq[%d]:\n", cpu); | 147 | SEQ_printf(m, "\ncfs_rq[%d]:\n", cpu); |
| 180 | #endif | ||
| 181 | SEQ_printf(m, " .%-30s: %Ld.%06ld\n", "exec_clock", | 148 | SEQ_printf(m, " .%-30s: %Ld.%06ld\n", "exec_clock", |
| 182 | SPLIT_NS(cfs_rq->exec_clock)); | 149 | SPLIT_NS(cfs_rq->exec_clock)); |
| 183 | 150 | ||
| @@ -215,7 +182,7 @@ void print_cfs_rq(struct seq_file *m, int cpu, struct cfs_rq *cfs_rq) | |||
| 215 | SEQ_printf(m, " .%-30s: %ld\n", "load_contrib", | 182 | SEQ_printf(m, " .%-30s: %ld\n", "load_contrib", |
| 216 | cfs_rq->load_contribution); | 183 | cfs_rq->load_contribution); |
| 217 | SEQ_printf(m, " .%-30s: %d\n", "load_tg", | 184 | SEQ_printf(m, " .%-30s: %d\n", "load_tg", |
| 218 | atomic_read(&tg->load_weight)); | 185 | atomic_read(&cfs_rq->tg->load_weight)); |
| 219 | #endif | 186 | #endif |
| 220 | 187 | ||
| 221 | print_cfs_group_stats(m, cpu, cfs_rq->tg); | 188 | print_cfs_group_stats(m, cpu, cfs_rq->tg); |
| @@ -224,17 +191,7 @@ void print_cfs_rq(struct seq_file *m, int cpu, struct cfs_rq *cfs_rq) | |||
| 224 | 191 | ||
| 225 | void print_rt_rq(struct seq_file *m, int cpu, struct rt_rq *rt_rq) | 192 | void print_rt_rq(struct seq_file *m, int cpu, struct rt_rq *rt_rq) |
| 226 | { | 193 | { |
| 227 | #if defined(CONFIG_CGROUP_SCHED) && defined(CONFIG_RT_GROUP_SCHED) | ||
| 228 | char path[128]; | ||
| 229 | struct task_group *tg = rt_rq->tg; | ||
| 230 | |||
| 231 | task_group_path(tg, path, sizeof(path)); | ||
| 232 | |||
| 233 | SEQ_printf(m, "\nrt_rq[%d]:%s\n", cpu, path); | ||
| 234 | #else | ||
| 235 | SEQ_printf(m, "\nrt_rq[%d]:\n", cpu); | 194 | SEQ_printf(m, "\nrt_rq[%d]:\n", cpu); |
| 236 | #endif | ||
| 237 | |||
| 238 | 195 | ||
| 239 | #define P(x) \ | 196 | #define P(x) \ |
| 240 | SEQ_printf(m, " .%-30s: %Ld\n", #x, (long long)(rt_rq->x)) | 197 | SEQ_printf(m, " .%-30s: %Ld\n", #x, (long long)(rt_rq->x)) |
