sched: Refactor task_struct to use numa_faults instead of numa_* pointers
This patch simplifies task_struct by removing the four numa_* pointers in the same array and replacing them with the array pointer. By doing this, on x86_64, the size of task_struct is reduced by 3 ulong pointers (24 bytes on x86_64). A new parameter is added to the task_faults_idx function so that it can return an index to the correct offset, corresponding with the old precalculated pointers. All of the code in sched/ that depended on task_faults_idx and numa_* was changed in order to match the new logic. Signed-off-by: Iulia Manda <iulia.manda21@gmail.com> Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org> Cc: mgorman@suse.de Cc: dave@stgolabs.net Cc: riel@redhat.com Cc: Linus Torvalds <torvalds@linux-foundation.org> Link: http://lkml.kernel.org/r/20141031001331.GA30662@winterfell Signed-off-by: Ingo Molnar <mingo@kernel.org>
This commit is contained in:
@@ -1597,27 +1597,22 @@ struct task_struct {
|
||||
struct numa_group *numa_group;
|
||||
|
||||
/*
|
||||
* Exponential decaying average of faults on a per-node basis.
|
||||
* Scheduling placement decisions are made based on the these counts.
|
||||
* The values remain static for the duration of a PTE scan
|
||||
* numa_faults is an array split into four regions:
|
||||
* faults_memory, faults_cpu, faults_memory_buffer, faults_cpu_buffer
|
||||
* in this precise order.
|
||||
*
|
||||
* faults_memory: Exponential decaying average of faults on a per-node
|
||||
* basis. Scheduling placement decisions are made based on these
|
||||
* counts. The values remain static for the duration of a PTE scan.
|
||||
* faults_cpu: Track the nodes the process was running on when a NUMA
|
||||
* hinting fault was incurred.
|
||||
* faults_memory_buffer and faults_cpu_buffer: Record faults per node
|
||||
* during the current scan window. When the scan completes, the counts
|
||||
* in faults_memory and faults_cpu decay and these values are copied.
|
||||
*/
|
||||
unsigned long *numa_faults_memory;
|
||||
unsigned long *numa_faults;
|
||||
unsigned long total_numa_faults;
|
||||
|
||||
/*
|
||||
* numa_faults_buffer records faults per node during the current
|
||||
* scan window. When the scan completes, the counts in
|
||||
* numa_faults_memory decay and these values are copied.
|
||||
*/
|
||||
unsigned long *numa_faults_buffer_memory;
|
||||
|
||||
/*
|
||||
* Track the nodes the process was running on when a NUMA hinting
|
||||
* fault was incurred.
|
||||
*/
|
||||
unsigned long *numa_faults_cpu;
|
||||
unsigned long *numa_faults_buffer_cpu;
|
||||
|
||||
/*
|
||||
* numa_faults_locality tracks if faults recorded during the last
|
||||
* scan window were remote/local. The task scan period is adapted
|
||||
|
Reference in New Issue
Block a user