]> git.kernelconcepts.de Git - karo-tx-linux.git/commit
sched: add tracepoints related to NUMA task migration
authorMel Gorman <mgorman@suse.de>
Tue, 21 Jan 2014 23:51:03 +0000 (15:51 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Wed, 22 Jan 2014 00:19:48 +0000 (16:19 -0800)
commit286549dcaf4f128cb04f0ad56dfb677d7d19b500
treeb59153c8b9a43c4891c16704e78b53e9baaf7de6
parent64a9a34e22896dad430e21a28ad8cb00a756fefc
sched: add tracepoints related to NUMA task migration

This patch adds three tracepoints
 o trace_sched_move_numa when a task is moved to a node
 o trace_sched_swap_numa when a task is swapped with another task
 o trace_sched_stick_numa when a numa-related migration fails

The tracepoints allow the NUMA scheduler activity to be monitored and the
following high-level metrics can be calculated

 o NUMA migrated stuck  nr trace_sched_stick_numa
 o NUMA migrated idle  nr trace_sched_move_numa
 o NUMA migrated swapped nr trace_sched_swap_numa
 o NUMA local swapped  trace_sched_swap_numa src_nid == dst_nid (should never happen)
 o NUMA remote swapped  trace_sched_swap_numa src_nid != dst_nid (should == NUMA migrated swapped)
 o NUMA group swapped  trace_sched_swap_numa src_ngid == dst_ngid
 Maybe a small number of these are acceptable
 but a high number would be a major surprise.
 It would be even worse if bounces are frequent.
 o NUMA avg task migs.  Average number of migrations for tasks
 o NUMA stddev task mig  Self-explanatory
 o NUMA max task migs.  Maximum number of migrations for a single task

In general the intent of the tracepoints is to help diagnose problems
where automatic NUMA balancing appears to be doing an excessive amount
of useless work.

[akpm@linux-foundation.org: remove semicolon-after-if, repair coding-style]
Signed-off-by: Mel Gorman <mgorman@suse.de>
Reviewed-by: Rik van Riel <riel@redhat.com>
Cc: Alex Thorlton <athorlton@sgi.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
include/trace/events/sched.h
kernel/sched/core.c
kernel/sched/fair.c