Skip to content

Commit f7a449f

Browse files
rgushchinakpm00
authored andcommitted
mm: memcontrol: rename memcg_kmem_enabled()
Currently there are two kmem-related helper functions with a confusing semantics: memcg_kmem_enabled() and mem_cgroup_kmem_disabled(). The problem is that an obvious expectation memcg_kmem_enabled() == !mem_cgroup_kmem_disabled(), can be false. mem_cgroup_kmem_disabled() is similar to mem_cgroup_disabled(): it returns true only if CONFIG_MEMCG_KMEM is not set or the kmem accounting is disabled using a boot time kernel option "cgroup.memory=nokmem". It never changes the value dynamically. memcg_kmem_enabled() is different: it always returns false until the first non-root memory cgroup will get online (assuming the kernel memory accounting is enabled). It's goal is to improve the performance on systems without the cgroupfs mounted/memory controller enabled or on the systems with only the root memory cgroup. To make things more obvious and avoid potential bugs, let's rename memcg_kmem_enabled() to memcg_kmem_online(). Link: https://lkml.kernel.org/r/[email protected] Signed-off-by: Roman Gushchin <[email protected]> Acked-by: Muchun Song <[email protected]> Acked-by: Michal Hocko <[email protected]> Cc: Johannes Weiner <[email protected]> Cc: Shakeel Butt <[email protected]> Cc: Dennis Zhou <[email protected]> Signed-off-by: Andrew Morton <[email protected]>
1 parent b4fb12e commit f7a449f

File tree

6 files changed

+22
-22
lines changed

6 files changed

+22
-22
lines changed

include/linux/memcontrol.h

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1776,24 +1776,24 @@ struct obj_cgroup *get_obj_cgroup_from_page(struct page *page);
17761776
int obj_cgroup_charge(struct obj_cgroup *objcg, gfp_t gfp, size_t size);
17771777
void obj_cgroup_uncharge(struct obj_cgroup *objcg, size_t size);
17781778

1779-
extern struct static_key_false memcg_kmem_enabled_key;
1779+
extern struct static_key_false memcg_kmem_online_key;
17801780

1781-
static inline bool memcg_kmem_enabled(void)
1781+
static inline bool memcg_kmem_online(void)
17821782
{
1783-
return static_branch_likely(&memcg_kmem_enabled_key);
1783+
return static_branch_likely(&memcg_kmem_online_key);
17841784
}
17851785

17861786
static inline int memcg_kmem_charge_page(struct page *page, gfp_t gfp,
17871787
int order)
17881788
{
1789-
if (memcg_kmem_enabled())
1789+
if (memcg_kmem_online())
17901790
return __memcg_kmem_charge_page(page, gfp, order);
17911791
return 0;
17921792
}
17931793

17941794
static inline void memcg_kmem_uncharge_page(struct page *page, int order)
17951795
{
1796-
if (memcg_kmem_enabled())
1796+
if (memcg_kmem_online())
17971797
__memcg_kmem_uncharge_page(page, order);
17981798
}
17991799

@@ -1814,7 +1814,7 @@ static inline void count_objcg_event(struct obj_cgroup *objcg,
18141814
{
18151815
struct mem_cgroup *memcg;
18161816

1817-
if (!memcg_kmem_enabled())
1817+
if (!memcg_kmem_online())
18181818
return;
18191819

18201820
rcu_read_lock();
@@ -1854,7 +1854,7 @@ static inline struct obj_cgroup *get_obj_cgroup_from_page(struct page *page)
18541854
return NULL;
18551855
}
18561856

1857-
static inline bool memcg_kmem_enabled(void)
1857+
static inline bool memcg_kmem_online(void)
18581858
{
18591859
return false;
18601860
}

mm/memcontrol.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -345,8 +345,8 @@ static void memcg_reparent_objcgs(struct mem_cgroup *memcg,
345345
* conditional to this static branch, we'll have to allow modules that does
346346
* kmem_cache_alloc and the such to see this symbol as well
347347
*/
348-
DEFINE_STATIC_KEY_FALSE(memcg_kmem_enabled_key);
349-
EXPORT_SYMBOL(memcg_kmem_enabled_key);
348+
DEFINE_STATIC_KEY_FALSE(memcg_kmem_online_key);
349+
EXPORT_SYMBOL(memcg_kmem_online_key);
350350
#endif
351351

352352
/**
@@ -3034,7 +3034,7 @@ struct obj_cgroup *get_obj_cgroup_from_page(struct page *page)
30343034
{
30353035
struct obj_cgroup *objcg;
30363036

3037-
if (!memcg_kmem_enabled())
3037+
if (!memcg_kmem_online())
30383038
return NULL;
30393039

30403040
if (PageMemcgKmem(page)) {
@@ -3746,7 +3746,7 @@ static int memcg_online_kmem(struct mem_cgroup *memcg)
37463746
objcg->memcg = memcg;
37473747
rcu_assign_pointer(memcg->objcg, objcg);
37483748

3749-
static_branch_enable(&memcg_kmem_enabled_key);
3749+
static_branch_enable(&memcg_kmem_online_key);
37503750

37513751
memcg->kmemcg_id = memcg->id.id;
37523752

mm/page_alloc.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1410,7 +1410,7 @@ static __always_inline bool free_pages_prepare(struct page *page,
14101410
* Do not let hwpoison pages hit pcplists/buddy
14111411
* Untie memcg state and reset page's owner
14121412
*/
1413-
if (memcg_kmem_enabled() && PageMemcgKmem(page))
1413+
if (memcg_kmem_online() && PageMemcgKmem(page))
14141414
__memcg_kmem_uncharge_page(page, order);
14151415
reset_page_owner(page, order);
14161416
page_table_check_free(page, order);
@@ -1441,7 +1441,7 @@ static __always_inline bool free_pages_prepare(struct page *page,
14411441
}
14421442
if (PageMappingFlags(page))
14431443
page->mapping = NULL;
1444-
if (memcg_kmem_enabled() && PageMemcgKmem(page))
1444+
if (memcg_kmem_online() && PageMemcgKmem(page))
14451445
__memcg_kmem_uncharge_page(page, order);
14461446
if (check_free && free_page_is_bad(page))
14471447
bad++;
@@ -5432,7 +5432,7 @@ unsigned long __alloc_pages_bulk(gfp_t gfp, int preferred_nid,
54325432
goto out;
54335433

54345434
/* Bulk allocator does not support memcg accounting. */
5435-
if (memcg_kmem_enabled() && (gfp & __GFP_ACCOUNT))
5435+
if (memcg_kmem_online() && (gfp & __GFP_ACCOUNT))
54365436
goto failed;
54375437

54385438
/* Use the single page allocator for one page. */
@@ -5604,7 +5604,7 @@ struct page *__alloc_pages(gfp_t gfp, unsigned int order, int preferred_nid,
56045604
page = __alloc_pages_slowpath(alloc_gfp, order, &ac);
56055605

56065606
out:
5607-
if (memcg_kmem_enabled() && (gfp & __GFP_ACCOUNT) && page &&
5607+
if (memcg_kmem_online() && (gfp & __GFP_ACCOUNT) && page &&
56085608
unlikely(__memcg_kmem_charge_page(page, gfp, order) != 0)) {
56095609
__free_pages(page, order);
56105610
page = NULL;

mm/percpu.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1625,7 +1625,7 @@ static bool pcpu_memcg_pre_alloc_hook(size_t size, gfp_t gfp,
16251625
{
16261626
struct obj_cgroup *objcg;
16271627

1628-
if (!memcg_kmem_enabled() || !(gfp & __GFP_ACCOUNT))
1628+
if (!memcg_kmem_online() || !(gfp & __GFP_ACCOUNT))
16291629
return true;
16301630

16311631
objcg = get_obj_cgroup_from_current();

mm/slab.h

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -494,7 +494,7 @@ static inline bool memcg_slab_pre_alloc_hook(struct kmem_cache *s,
494494
{
495495
struct obj_cgroup *objcg;
496496

497-
if (!memcg_kmem_enabled())
497+
if (!memcg_kmem_online())
498498
return true;
499499

500500
if (!(flags & __GFP_ACCOUNT) && !(s->flags & SLAB_ACCOUNT))
@@ -535,7 +535,7 @@ static inline void memcg_slab_post_alloc_hook(struct kmem_cache *s,
535535
unsigned long off;
536536
size_t i;
537537

538-
if (!memcg_kmem_enabled() || !objcg)
538+
if (!memcg_kmem_online() || !objcg)
539539
return;
540540

541541
for (i = 0; i < size; i++) {
@@ -567,7 +567,7 @@ static inline void memcg_slab_free_hook(struct kmem_cache *s, struct slab *slab,
567567
struct obj_cgroup **objcgs;
568568
int i;
569569

570-
if (!memcg_kmem_enabled())
570+
if (!memcg_kmem_online())
571571
return;
572572

573573
objcgs = slab_objcgs(slab);
@@ -649,7 +649,7 @@ static inline struct kmem_cache *virt_to_cache(const void *obj)
649649
static __always_inline void account_slab(struct slab *slab, int order,
650650
struct kmem_cache *s, gfp_t gfp)
651651
{
652-
if (memcg_kmem_enabled() && (s->flags & SLAB_ACCOUNT))
652+
if (memcg_kmem_online() && (s->flags & SLAB_ACCOUNT))
653653
memcg_alloc_slab_cgroups(slab, s, gfp, true);
654654

655655
mod_node_page_state(slab_pgdat(slab), cache_vmstat_idx(s),
@@ -659,7 +659,7 @@ static __always_inline void account_slab(struct slab *slab, int order,
659659
static __always_inline void unaccount_slab(struct slab *slab, int order,
660660
struct kmem_cache *s)
661661
{
662-
if (memcg_kmem_enabled())
662+
if (memcg_kmem_online())
663663
memcg_free_slab_cgroups(slab);
664664

665665
mod_node_page_state(slab_pgdat(slab), cache_vmstat_idx(s),

mm/vmscan.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -915,7 +915,7 @@ static unsigned long shrink_slab_memcg(gfp_t gfp_mask, int nid,
915915
}
916916

917917
/* Call non-slab shrinkers even though kmem is disabled */
918-
if (!memcg_kmem_enabled() &&
918+
if (!memcg_kmem_online() &&
919919
!(shrinker->flags & SHRINKER_NONSLAB))
920920
continue;
921921

0 commit comments

Comments
 (0)