memcg: move do_memsw_account() to CONFIG_MEMCG_V1
Subsystems (3)
Shakeel Butt
maintainerPATCH 1/1 memcg: move do_memsw_account() to CONFIG_MEMCG_V1
The do_memsw_account() is used to enable or disable legacy memory+swap accounting in memory cgroup. However with disabled CONFIG_MEMCG_V1, we don't need to keep checking it. So, let's always return false for !CONFIG_MEMCG_V1 configs.
Before the patch:
$ size mm/memcontrol.o text data bss dec hex filename 49928 10736 4172 64836 fd44 mm/memcontrol.o
After the patch:
$ size mm/memcontrol.o text data bss dec hex filename 49430 10480 4172 64082 fa52 mm/memcontrol.o
--- mm/memcontrol-v1.h | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-)
mm/memcontrol-v1.h +7 -6
@@ -22,12 +22,6 @@ iter !=NULL ; \ iter = mem_cgroup_iter(NULL, iter, NULL)) -/* Whether legacy memory+swap accounting is active */ -static inline bool do_memsw_account (void ) -{ -return !cgroup_subsys_on_dfl (memory_cgrp_subsys); -} -unsigned long mem_cgroup_usage (struct mem_cgroup *memcg,bool swap);void drain_all_stock (struct mem_cgroup *root_memcg);
@@ -42,6 +36,12 @@ struct mem_cgroup *mem_cgroup_id_get_online(struct mem_cgroup *memcg);/* Cgroup v1-specific declarations */ #ifdef CONFIG_MEMCG_V1 +/* Whether legacy memory+swap accounting is active */ +static inline bool do_memsw_account (void ) +{ +return !cgroup_subsys_on_dfl (memory_cgrp_subsys); +} +unsigned long memcg_events_local (struct mem_cgroup *memcg,int event);unsigned long memcg_page_state_local (struct mem_cgroup *memcg,int idx);unsigned long memcg_page_state_local_output (struct mem_cgroup *memcg,int item);
@@ -94,6 +94,7 @@ extern struct cftype mem_cgroup_legacy_files[];#else /* CONFIG_MEMCG_V1 */ +static inline bool do_memsw_account (void ) {return false; }static inline bool memcg1_alloc_events (struct mem_cgroup *memcg) {return true; }static inline void memcg1_free_events (struct mem_cgroup *memcg) {}
Signature · 1 line
2.47.1
Quoted 11 lines · Shakeel Butt
The
do_memsw_account()is used to enable or disable legacy memory+swap accounting in memory cgroup. However with disabledCONFIG_MEMCG_V1, we don't need to keep checking it. So, let's always return false for !CONFIG_MEMCG_V1 configs.Before the patch:
$ size mm/memcontrol.o text data bss dec hex filename 49928 10736 4172 64836 fd44 mm/memcontrol.o
Quoted 7 lines
After the patch:
$ size mm/memcontrol.o text data bss dec hex filename 49430 10480 4172 64082 fa52 mm/memcontrol.oSigned-off-by Shakeel Butt <[email protected]>
Nice. It being a jump label avoids the branch, but it's still unnecessary text and therefor i$ burden on fairly hot paths.
Quoted 11 lines · Shakeel Butt
The
do_memsw_account()is used to enable or disable legacy memory+swap accounting in memory cgroup. However with disabledCONFIG_MEMCG_V1, we don't need to keep checking it. So, let's always return false for !CONFIG_MEMCG_V1 configs.Before the patch:
$ size mm/memcontrol.o text data bss dec hex filename 49928 10736 4172 64836 fd44 mm/memcontrol.o
Quoted 7 lines
After the patch:
$ size mm/memcontrol.o text data bss dec hex filename 49430 10480 4172 64082 fa52 mm/memcontrol.oSigned-off-by Shakeel Butt <[email protected]>
Thanks!
Quoted 44 lines
--- mm/memcontrol-v1.h | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-)mm/memcontrol-v1.h +7
-6@@ -22,12 +22,6 @@ iter !=NULL ; \ iter = mem_cgroup_iter(NULL, iter, NULL)) -/* Whether legacy memory+swap accounting is active */ -static inline bool do_memsw_account (void ) -{ -return !cgroup_subsys_on_dfl (memory_cgrp_subsys); -} -unsigned long mem_cgroup_usage (struct mem_cgroup *memcg,bool swap);void drain_all_stock (struct mem_cgroup *root_memcg);@@ -42,6 +36,12 @@ struct mem_cgroup *mem_cgroup_id_get_online(struct mem_cgroup *memcg);/* Cgroup v1-specific declarations */ #ifdef CONFIG_MEMCG_V1 +/* Whether legacy memory+swap accounting is active */ +static inline bool do_memsw_account (void ) +{ +return !cgroup_subsys_on_dfl (memory_cgrp_subsys); +} +unsigned long memcg_events_local (struct mem_cgroup *memcg,int event);unsigned long memcg_page_state_local (struct mem_cgroup *memcg,int idx);unsigned long memcg_page_state_local_output (struct mem_cgroup *memcg,int item);@@ -94,6 +94,7 @@ extern struct cftype mem_cgroup_legacy_files[];#else /* CONFIG_MEMCG_V1 */ +static inline bool do_memsw_account (void ) {return false; }static inline bool memcg1_alloc_events (struct mem_cgroup *memcg) {return true; }static inline void memcg1_free_events (struct mem_cgroup *memcg) {}Signature · 1 line
2.47.1
Signature · 2 lines
Michal Hocko SUSE Labs