@@ -229,20 +229,26 @@ struct mem_cgroup {
/*
* Should the accounting and control be hierarchical, per subtree?
*/
- bool use_hierarchy;
+ unsigned int use_hierarchy : 1;
/*
* Should the OOM killer kill all belonging tasks, had it kill one?
*/
- bool oom_group;
+ unsigned int oom_group : 1;
/* protected by memcg_oom_lock */
- bool oom_lock;
- int under_oom;
+ unsigned int oom_lock : 1;
- int swappiness;
/* OOM-Killer disable */
- int oom_kill_disable;
+ unsigned int oom_kill_disable : 1;
+
+ /* Legacy tcp memory accounting */
+ unsigned int tcpmem_active : 1;
+ unsigned int tcpmem_pressure : 1;
+
+ int under_oom;
+
+ int swappiness;
/* memory.events and memory.events.local */
struct cgroup_file events_file;
@@ -297,9 +303,6 @@ struct mem_cgroup {
unsigned long socket_pressure;
- /* Legacy tcp memory accounting */
- bool tcpmem_active;
- int tcpmem_pressure;
#ifdef CONFIG_MEMCG_KMEM
/* Index in the kmem_cache->memcg_params.memcg_caches array */
There are some members in struct mem_group can be either 0(false) or 1(true), so we can define them using bit field to reduce size. With this patch, the size of struct mem_cgroup can be reduced by 64 bytes in theory, but as there're some MEMCG_PADDING()s, the real number may be different, which is relate with the cacheline size. Anyway, this patch could reduce the size of struct mem_cgroup more or less. Cc: Aaron Lu <aaron.lu@intel.com> Signed-off-by: Yafang Shao <laoar.shao@gmail.com> --- include/linux/memcontrol.h | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-)