diff options
author | Tejun Heo <tj@kernel.org> | 2015-11-05 21:46:09 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2015-11-05 22:34:48 -0500 |
commit | 626ebc4100285be56fe3546f29b6afeb36b6871a (patch) | |
tree | c36a6c10a00ed6169d245c1589cb24ce7e2a2f28 /include/linux/sched.h | |
parent | 55e1ceaf2586ab11aafba798a6b9499dd7c14441 (diff) |
memcg: flatten task_struct->memcg_oom
task_struct->memcg_oom is a sub-struct containing fields which are used
for async memcg oom handling. Most task_struct fields aren't packaged
this way and it can lead to unnecessary alignment paddings. This patch
flattens it.
* task.memcg_oom.memcg -> task.memcg_in_oom
* task.memcg_oom.gfp_mask -> task.memcg_oom_gfp_mask
* task.memcg_oom.order -> task.memcg_oom_order
* task.memcg_oom.may_oom -> task.memcg_may_oom
In addition, task.memcg_may_oom is relocated to where other bitfields are
which reduces the size of task_struct.
Signed-off-by: Tejun Heo <tj@kernel.org>
Acked-by: Michal Hocko <mhocko@suse.com>
Reviewed-by: Vladimir Davydov <vdavydov@parallels.com>
Acked-by: Johannes Weiner <hannes@cmpxchg.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'include/linux/sched.h')
-rw-r--r-- | include/linux/sched.h | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/include/linux/sched.h b/include/linux/sched.h index 5423b9c82fee..17bf8b845aa0 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h | |||
@@ -1473,7 +1473,9 @@ struct task_struct { | |||
1473 | unsigned sched_reset_on_fork:1; | 1473 | unsigned sched_reset_on_fork:1; |
1474 | unsigned sched_contributes_to_load:1; | 1474 | unsigned sched_contributes_to_load:1; |
1475 | unsigned sched_migrated:1; | 1475 | unsigned sched_migrated:1; |
1476 | 1476 | #ifdef CONFIG_MEMCG | |
1477 | unsigned memcg_may_oom:1; | ||
1478 | #endif | ||
1477 | #ifdef CONFIG_MEMCG_KMEM | 1479 | #ifdef CONFIG_MEMCG_KMEM |
1478 | unsigned memcg_kmem_skip_account:1; | 1480 | unsigned memcg_kmem_skip_account:1; |
1479 | #endif | 1481 | #endif |
@@ -1804,12 +1806,9 @@ struct task_struct { | |||
1804 | unsigned long trace_recursion; | 1806 | unsigned long trace_recursion; |
1805 | #endif /* CONFIG_TRACING */ | 1807 | #endif /* CONFIG_TRACING */ |
1806 | #ifdef CONFIG_MEMCG | 1808 | #ifdef CONFIG_MEMCG |
1807 | struct memcg_oom_info { | 1809 | struct mem_cgroup *memcg_in_oom; |
1808 | struct mem_cgroup *memcg; | 1810 | gfp_t memcg_oom_gfp_mask; |
1809 | gfp_t gfp_mask; | 1811 | int memcg_oom_order; |
1810 | int order; | ||
1811 | unsigned int may_oom:1; | ||
1812 | } memcg_oom; | ||
1813 | #endif | 1812 | #endif |
1814 | #ifdef CONFIG_UPROBES | 1813 | #ifdef CONFIG_UPROBES |
1815 | struct uprobe_task *utask; | 1814 | struct uprobe_task *utask; |