diff options
author | Mel Gorman <mgorman@suse.de> | 2013-10-07 06:29:22 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@kernel.org> | 2013-10-09 08:47:49 -0400 |
commit | e29cf08b05dc0b8151d65704d96d525a9e179a6b (patch) | |
tree | 07eb90e16973acca57ed9bc3866f2bff8ab0750a /kernel/sched | |
parent | 8c8a743c5087bac9caac8155b8f3b367e75cdd0b (diff) |
sched/numa: Report a NUMA task group ID
It is desirable to model from userspace how the scheduler groups tasks
over time. This patch adds an ID to the numa_group and reports it via
/proc/PID/status.
Signed-off-by: Mel Gorman <mgorman@suse.de>
Reviewed-by: Rik van Riel <riel@redhat.com>
Cc: Andrea Arcangeli <aarcange@redhat.com>
Cc: Johannes Weiner <hannes@cmpxchg.org>
Cc: Srikar Dronamraju <srikar@linux.vnet.ibm.com>
Signed-off-by: Peter Zijlstra <peterz@infradead.org>
Link: http://lkml.kernel.org/r/1381141781-10992-45-git-send-email-mgorman@suse.de
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'kernel/sched')
-rw-r--r-- | kernel/sched/fair.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c index 85565053a6ed..5bd309c035c7 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c | |||
@@ -893,12 +893,18 @@ struct numa_group { | |||
893 | 893 | ||
894 | spinlock_t lock; /* nr_tasks, tasks */ | 894 | spinlock_t lock; /* nr_tasks, tasks */ |
895 | int nr_tasks; | 895 | int nr_tasks; |
896 | pid_t gid; | ||
896 | struct list_head task_list; | 897 | struct list_head task_list; |
897 | 898 | ||
898 | struct rcu_head rcu; | 899 | struct rcu_head rcu; |
899 | atomic_long_t faults[0]; | 900 | atomic_long_t faults[0]; |
900 | }; | 901 | }; |
901 | 902 | ||
903 | pid_t task_numa_group_id(struct task_struct *p) | ||
904 | { | ||
905 | return p->numa_group ? p->numa_group->gid : 0; | ||
906 | } | ||
907 | |||
902 | static inline int task_faults_idx(int nid, int priv) | 908 | static inline int task_faults_idx(int nid, int priv) |
903 | { | 909 | { |
904 | return 2 * nid + priv; | 910 | return 2 * nid + priv; |
@@ -1265,6 +1271,7 @@ static void task_numa_group(struct task_struct *p, int cpupid) | |||
1265 | atomic_set(&grp->refcount, 1); | 1271 | atomic_set(&grp->refcount, 1); |
1266 | spin_lock_init(&grp->lock); | 1272 | spin_lock_init(&grp->lock); |
1267 | INIT_LIST_HEAD(&grp->task_list); | 1273 | INIT_LIST_HEAD(&grp->task_list); |
1274 | grp->gid = p->pid; | ||
1268 | 1275 | ||
1269 | for (i = 0; i < 2*nr_node_ids; i++) | 1276 | for (i = 0; i < 2*nr_node_ids; i++) |
1270 | atomic_long_set(&grp->faults[i], p->numa_faults[i]); | 1277 | atomic_long_set(&grp->faults[i], p->numa_faults[i]); |