Symbol: memcg
arch/x86/kernel/cpu/sgx/encl.c
1003
struct mem_cgroup *memcg = NULL;
arch/x86/kernel/cpu/sgx/encl.c
1025
memcg = get_mem_cgroup_from_mm(encl_mm->mm);
arch/x86/kernel/cpu/sgx/encl.c
1040
if (!memcg)
arch/x86/kernel/cpu/sgx/encl.c
1043
return memcg;
arch/x86/kernel/cpu/sgx/encl.c
1067
struct mem_cgroup *memcg = set_active_memcg(encl_memcg);
arch/x86/kernel/cpu/sgx/encl.c
1072
set_active_memcg(memcg);
drivers/tty/sysrq.c
391
.memcg = NULL,
fs/buffer.c
837
struct mem_cgroup *memcg, *old_memcg;
fs/buffer.c
839
memcg = get_mem_cgroup_from_folio(folio);
fs/buffer.c
840
old_memcg = set_active_memcg(memcg);
fs/buffer.c
860
mem_cgroup_put(memcg);
fs/notify/fanotify/fanotify.c
841
old_memcg = set_active_memcg(group->memcg);
fs/notify/fanotify/fanotify_user.c
1678
group->memcg = get_mem_cgroup_from_mm(current->mm);
fs/notify/group.c
27
mem_cgroup_put(group->memcg);
fs/notify/inotify/inotify_fsnotify.c
95
old_memcg = set_active_memcg(group->memcg);
fs/notify/inotify/inotify_user.c
677
group->memcg = get_mem_cgroup_from_mm(current->mm);
include/linux/backing-dev.h
159
void wb_memcg_offline(struct mem_cgroup *memcg);
include/linux/backing-dev.h
365
static inline void wb_memcg_offline(struct mem_cgroup *memcg)
include/linux/bpf.h
2786
struct mem_cgroup *memcg);
include/linux/bpf.h
2819
struct mem_cgroup *memcg)
include/linux/fsnotify_backend.h
252
struct mem_cgroup *memcg; /* memcg to charge allocations */
include/linux/list_lru.h
111
void memcg_reparent_list_lrus(struct mem_cgroup *memcg, struct mem_cgroup *parent);
include/linux/list_lru.h
130
struct mem_cgroup **memcg);
include/linux/list_lru.h
139
struct mem_cgroup **memcg);
include/linux/list_lru.h
143
struct mem_cgroup **memcg, unsigned long *irq_flags);
include/linux/list_lru.h
149
struct list_head *item, int nid, struct mem_cgroup *memcg);
include/linux/list_lru.h
183
struct mem_cgroup *memcg);
include/linux/list_lru.h
186
struct mem_cgroup *memcg);
include/linux/list_lru.h
226
struct mem_cgroup *memcg);
include/linux/list_lru.h
254
int nid, struct mem_cgroup *memcg);
include/linux/list_lru.h
260
return list_lru_count_one(lru, sc->nid, sc->memcg);
include/linux/list_lru.h
82
int memcg_list_lru_alloc(struct mem_cgroup *memcg, struct list_lru *lru,
include/linux/memcontrol.h
1002
__memcg_memory_event(memcg, event, true);
include/linux/memcontrol.h
1008
struct mem_cgroup *memcg;
include/linux/memcontrol.h
1014
memcg = mem_cgroup_from_task(rcu_dereference(mm->owner));
include/linux/memcontrol.h
1015
if (likely(memcg))
include/linux/memcontrol.h
1016
memcg_memory_event(memcg, event);
include/linux/memcontrol.h
1026
struct mem_cgroup *memcg;
include/linux/memcontrol.h
1033
memcg = mem_cgroup_from_task(rcu_dereference(mm->owner));
include/linux/memcontrol.h
1034
if (!memcg)
include/linux/memcontrol.h
1035
memcg = root_mem_cgroup;
include/linux/memcontrol.h
1036
id = cgroup_id(memcg->css.cgroup);
include/linux/memcontrol.h
1085
static inline bool mem_cgroup_is_root(struct mem_cgroup *memcg)
include/linux/memcontrol.h
1105
static inline void memcg_memory_event(struct mem_cgroup *memcg,
include/linux/memcontrol.h
1116
struct mem_cgroup *memcg,
include/linux/memcontrol.h
1125
struct mem_cgroup *memcg)
include/linux/memcontrol.h
1130
struct mem_cgroup *memcg)
include/linux/memcontrol.h
1135
struct mem_cgroup *memcg)
include/linux/memcontrol.h
1141
struct mem_cgroup *memcg)
include/linux/memcontrol.h
1180
static inline struct lruvec *mem_cgroup_lruvec(struct mem_cgroup *memcg,
include/linux/memcontrol.h
1192
static inline struct mem_cgroup *parent_mem_cgroup(struct mem_cgroup *memcg)
include/linux/memcontrol.h
1198
struct mem_cgroup *memcg)
include/linux/memcontrol.h
1232
static inline bool mem_cgroup_tryget(struct mem_cgroup *memcg)
include/linux/memcontrol.h
1237
static inline bool mem_cgroup_tryget_online(struct mem_cgroup *memcg)
include/linux/memcontrol.h
1242
static inline void mem_cgroup_put(struct mem_cgroup *memcg)
include/linux/memcontrol.h
1287
static inline void mem_cgroup_scan_tasks(struct mem_cgroup *memcg,
include/linux/memcontrol.h
1292
static inline unsigned short mem_cgroup_private_id(struct mem_cgroup *memcg)
include/linux/memcontrol.h
1304
static inline u64 mem_cgroup_id(struct mem_cgroup *memcg)
include/linux/memcontrol.h
1324
static inline bool mem_cgroup_online(struct mem_cgroup *memcg)
include/linux/memcontrol.h
1336
static inline unsigned long mem_cgroup_get_max(struct mem_cgroup *memcg)
include/linux/memcontrol.h
1342
mem_cgroup_print_oom_context(struct mem_cgroup *memcg, struct task_struct *p)
include/linux/memcontrol.h
1347
mem_cgroup_print_oom_meminfo(struct mem_cgroup *memcg)
include/linux/memcontrol.h
1361
static inline void mem_cgroup_print_oom_group(struct mem_cgroup *memcg)
include/linux/memcontrol.h
1365
static inline void mod_memcg_state(struct mem_cgroup *memcg,
include/linux/memcontrol.h
1376
static inline unsigned long memcg_page_state(struct mem_cgroup *memcg, int idx)
include/linux/memcontrol.h
1381
static inline unsigned long memcg_page_state_output(struct mem_cgroup *memcg, int item)
include/linux/memcontrol.h
1408
static inline void mem_cgroup_flush_stats(struct mem_cgroup *memcg)
include/linux/memcontrol.h
1412
static inline void mem_cgroup_flush_stats_ratelimited(struct mem_cgroup *memcg)
include/linux/memcontrol.h
1424
static inline void count_memcg_events(struct mem_cgroup *memcg,
include/linux/memcontrol.h
1479
struct mem_cgroup *memcg;
include/linux/memcontrol.h
1481
memcg = lruvec_memcg(lruvec);
include/linux/memcontrol.h
1482
if (!memcg)
include/linux/memcontrol.h
1484
memcg = parent_mem_cgroup(memcg);
include/linux/memcontrol.h
1485
if (!memcg)
include/linux/memcontrol.h
1487
return mem_cgroup_lruvec(memcg, lruvec_pgdat(lruvec));
include/linux/memcontrol.h
1500
struct mem_cgroup *memcg = lruvec_memcg(lruvec);
include/linux/memcontrol.h
1508
while (unlikely(memcg && css_is_dying(&memcg->css))) {
include/linux/memcontrol.h
1509
memcg = parent_mem_cgroup(memcg);
include/linux/memcontrol.h
1510
lruvec = mem_cgroup_lruvec(memcg, pgdat);
include/linux/memcontrol.h
1588
struct mem_cgroup *memcg;
include/linux/memcontrol.h
1597
memcg = folio_memcg(folio);
include/linux/memcontrol.h
1598
if (unlikely(&memcg->css != wb->memcg_css))
include/linux/memcontrol.h
1644
static inline void mem_cgroup_set_socket_pressure(struct mem_cgroup *memcg)
include/linux/memcontrol.h
1649
write_seqlock_irqsave(&memcg->socket_pressure_seqlock, flags);
include/linux/memcontrol.h
1650
memcg->socket_pressure = val;
include/linux/memcontrol.h
1651
write_sequnlock_irqrestore(&memcg->socket_pressure_seqlock, flags);
include/linux/memcontrol.h
1654
static inline u64 mem_cgroup_get_socket_pressure(struct mem_cgroup *memcg)
include/linux/memcontrol.h
1660
seq = read_seqbegin(&memcg->socket_pressure_seqlock);
include/linux/memcontrol.h
1661
val = memcg->socket_pressure;
include/linux/memcontrol.h
1662
} while (read_seqretry(&memcg->socket_pressure_seqlock, seq));
include/linux/memcontrol.h
1667
static inline void mem_cgroup_set_socket_pressure(struct mem_cgroup *memcg)
include/linux/memcontrol.h
1669
WRITE_ONCE(memcg->socket_pressure, jiffies + HZ);
include/linux/memcontrol.h
1672
static inline u64 mem_cgroup_get_socket_pressure(struct mem_cgroup *memcg)
include/linux/memcontrol.h
1674
return READ_ONCE(memcg->socket_pressure);
include/linux/memcontrol.h
1678
int alloc_shrinker_info(struct mem_cgroup *memcg);
include/linux/memcontrol.h
1679
void free_shrinker_info(struct mem_cgroup *memcg);
include/linux/memcontrol.h
1680
void set_shrinker_bit(struct mem_cgroup *memcg, int nid, int shrinker_id);
include/linux/memcontrol.h
1681
void reparent_shrinker_deferred(struct mem_cgroup *memcg);
include/linux/memcontrol.h
1714
static inline void set_shrinker_bit(struct mem_cgroup *memcg,
include/linux/memcontrol.h
1785
static inline int memcg_kmem_id(struct mem_cgroup *memcg)
include/linux/memcontrol.h
1787
return memcg ? memcg->kmemcg_id : -1;
include/linux/memcontrol.h
1796
struct mem_cgroup *memcg;
include/linux/memcontrol.h
1802
memcg = obj_cgroup_memcg(objcg);
include/linux/memcontrol.h
1803
count_memcg_events(memcg, idx, count);
include/linux/memcontrol.h
1807
void mem_cgroup_node_filter_allowed(struct mem_cgroup *memcg, nodemask_t *mask);
include/linux/memcontrol.h
1809
void mem_cgroup_show_protected_memory(struct mem_cgroup *memcg);
include/linux/memcontrol.h
1811
static inline bool memcg_is_dying(struct mem_cgroup *memcg)
include/linux/memcontrol.h
1813
return memcg ? css_is_dying(&memcg->css) : false;
include/linux/memcontrol.h
1857
static inline int memcg_kmem_id(struct mem_cgroup *memcg)
include/linux/memcontrol.h
187
struct mem_cgroup *memcg;
include/linux/memcontrol.h
1878
static inline void mem_cgroup_node_filter_allowed(struct mem_cgroup *memcg,
include/linux/memcontrol.h
1883
static inline void mem_cgroup_show_protected_memory(struct mem_cgroup *memcg)
include/linux/memcontrol.h
1887
static inline bool memcg_is_dying(struct mem_cgroup *memcg)
include/linux/memcontrol.h
1897
bool mem_cgroup_zswap_writeback_enabled(struct mem_cgroup *memcg);
include/linux/memcontrol.h
1911
static inline bool mem_cgroup_zswap_writeback_enabled(struct mem_cgroup *memcg)
include/linux/memcontrol.h
378
return READ_ONCE(objcg->memcg);
include/linux/memcontrol.h
486
struct mem_cgroup *memcg;
include/linux/memcontrol.h
490
memcg = obj_cgroup_memcg(objcg);
include/linux/memcontrol.h
491
if (unlikely(!css_tryget(&memcg->css)))
include/linux/memcontrol.h
495
return memcg;
include/linux/memcontrol.h
518
static inline bool mem_cgroup_is_root(struct mem_cgroup *memcg)
include/linux/memcontrol.h
520
return (memcg == root_mem_cgroup);
include/linux/memcontrol.h
536
return !sc->memcg || mem_cgroup_is_root(sc->memcg);
include/linux/memcontrol.h
550
struct mem_cgroup *memcg,
include/linux/memcontrol.h
560
*usage = page_counter_read(&memcg->memory);
include/linux/memcontrol.h
594
if (root == memcg)
include/linux/memcontrol.h
597
*min = READ_ONCE(memcg->memory.emin);
include/linux/memcontrol.h
598
*low = READ_ONCE(memcg->memory.elow);
include/linux/memcontrol.h
602
struct mem_cgroup *memcg);
include/linux/memcontrol.h
605
struct mem_cgroup *memcg)
include/linux/memcontrol.h
612
return mem_cgroup_disabled() || mem_cgroup_is_root(memcg) ||
include/linux/memcontrol.h
613
memcg == target;
include/linux/memcontrol.h
617
struct mem_cgroup *memcg)
include/linux/memcontrol.h
619
if (mem_cgroup_unprotected(target, memcg))
include/linux/memcontrol.h
622
return READ_ONCE(memcg->memory.elow) >=
include/linux/memcontrol.h
623
page_counter_read(&memcg->memory);
include/linux/memcontrol.h
627
struct mem_cgroup *memcg)
include/linux/memcontrol.h
629
if (mem_cgroup_unprotected(target, memcg))
include/linux/memcontrol.h
632
return READ_ONCE(memcg->memory.emin) >=
include/linux/memcontrol.h
633
page_counter_read(&memcg->memory);
include/linux/memcontrol.h
700
static inline struct lruvec *mem_cgroup_lruvec(struct mem_cgroup *memcg,
include/linux/memcontrol.h
711
if (!memcg)
include/linux/memcontrol.h
712
memcg = root_mem_cgroup;
include/linux/memcontrol.h
714
mz = memcg->nodeinfo[pgdat->node_id];
include/linux/memcontrol.h
743
struct mem_cgroup *memcg = folio_memcg(folio);
include/linux/memcontrol.h
745
VM_WARN_ON_ONCE_FOLIO(!memcg && !mem_cgroup_disabled(), folio);
include/linux/memcontrol.h
746
return mem_cgroup_lruvec(memcg, folio_pgdat(folio));
include/linux/memcontrol.h
792
static inline bool mem_cgroup_tryget(struct mem_cgroup *memcg)
include/linux/memcontrol.h
794
return !memcg || css_tryget(&memcg->css);
include/linux/memcontrol.h
797
static inline bool mem_cgroup_tryget_online(struct mem_cgroup *memcg)
include/linux/memcontrol.h
799
return !memcg || css_tryget_online(&memcg->css);
include/linux/memcontrol.h
802
static inline void mem_cgroup_put(struct mem_cgroup *memcg)
include/linux/memcontrol.h
804
if (memcg)
include/linux/memcontrol.h
805
css_put(&memcg->css);
include/linux/memcontrol.h
815
void mem_cgroup_scan_tasks(struct mem_cgroup *memcg,
include/linux/memcontrol.h
818
static inline unsigned short mem_cgroup_private_id(struct mem_cgroup *memcg)
include/linux/memcontrol.h
823
return memcg->id.id;
include/linux/memcontrol.h
827
static inline u64 mem_cgroup_id(struct mem_cgroup *memcg)
include/linux/memcontrol.h
829
return memcg ? cgroup_id(memcg->css.cgroup) : 0;
include/linux/memcontrol.h
847
return mz->memcg;
include/linux/memcontrol.h
856
static inline struct mem_cgroup *parent_mem_cgroup(struct mem_cgroup *memcg)
include/linux/memcontrol.h
858
return mem_cgroup_from_css(memcg->css.parent);
include/linux/memcontrol.h
861
static inline bool mem_cgroup_is_descendant(struct mem_cgroup *memcg,
include/linux/memcontrol.h
864
if (root == memcg)
include/linux/memcontrol.h
866
return cgroup_is_descendant(memcg->css.cgroup, root->css.cgroup);
include/linux/memcontrol.h
870
struct mem_cgroup *memcg)
include/linux/memcontrol.h
878
match = mem_cgroup_is_descendant(task_memcg, memcg);
include/linux/memcontrol.h
886
static inline bool mem_cgroup_online(struct mem_cgroup *memcg)
include/linux/memcontrol.h
890
return css_is_online(&memcg->css);
include/linux/memcontrol.h
91
struct mem_cgroup *memcg; /* Back pointer, we cannot */
include/linux/memcontrol.h
914
unsigned long mem_cgroup_get_max(struct mem_cgroup *memcg);
include/linux/memcontrol.h
916
void mem_cgroup_print_oom_context(struct mem_cgroup *memcg,
include/linux/memcontrol.h
919
void mem_cgroup_print_oom_meminfo(struct mem_cgroup *memcg);
include/linux/memcontrol.h
923
void mem_cgroup_print_oom_group(struct mem_cgroup *memcg);
include/linux/memcontrol.h
926
void mod_memcg_state(struct mem_cgroup *memcg,
include/linux/memcontrol.h
932
struct mem_cgroup *memcg;
include/linux/memcontrol.h
938
memcg = folio_memcg(page_folio(page));
include/linux/memcontrol.h
939
if (memcg)
include/linux/memcontrol.h
940
mod_memcg_state(memcg, idx, val);
include/linux/memcontrol.h
944
unsigned long memcg_events(struct mem_cgroup *memcg, int event);
include/linux/memcontrol.h
945
unsigned long memcg_page_state(struct mem_cgroup *memcg, int idx);
include/linux/memcontrol.h
946
unsigned long memcg_page_state_output(struct mem_cgroup *memcg, int item);
include/linux/memcontrol.h
953
void mem_cgroup_flush_stats(struct mem_cgroup *memcg);
include/linux/memcontrol.h
954
void mem_cgroup_flush_stats_ratelimited(struct mem_cgroup *memcg);
include/linux/memcontrol.h
958
void count_memcg_events(struct mem_cgroup *memcg, enum vm_event_item idx,
include/linux/memcontrol.h
964
struct mem_cgroup *memcg;
include/linux/memcontrol.h
970
memcg = folio_memcg(folio);
include/linux/memcontrol.h
971
count_memcg_events(memcg, idx, nr);
include/linux/memcontrol.h
978
struct mem_cgroup *memcg;
include/linux/memcontrol.h
984
memcg = mem_cgroup_from_task(rcu_dereference(mm->owner));
include/linux/memcontrol.h
985
if (likely(memcg))
include/linux/memcontrol.h
986
count_memcg_events(memcg, idx, count);
include/linux/memcontrol.h
996
void __memcg_memory_event(struct mem_cgroup *memcg,
include/linux/memcontrol.h
999
static inline void memcg_memory_event(struct mem_cgroup *memcg,
include/linux/mm_types.h
1400
struct mem_cgroup *memcg;
include/linux/mm_types.h
1492
mm->lru_gen.memcg = NULL;
include/linux/mmzone.h
692
void lru_gen_init_memcg(struct mem_cgroup *memcg);
include/linux/mmzone.h
693
void lru_gen_exit_memcg(struct mem_cgroup *memcg);
include/linux/mmzone.h
694
void lru_gen_online_memcg(struct mem_cgroup *memcg);
include/linux/mmzone.h
695
void lru_gen_offline_memcg(struct mem_cgroup *memcg);
include/linux/mmzone.h
696
void lru_gen_release_memcg(struct mem_cgroup *memcg);
include/linux/mmzone.h
697
void lru_gen_soft_reclaim(struct mem_cgroup *memcg, int nid);
include/linux/mmzone.h
698
void max_lru_gen_memcg(struct mem_cgroup *memcg, int nid);
include/linux/mmzone.h
699
bool recheck_lru_gen_max_memcg(struct mem_cgroup *memcg, int nid);
include/linux/mmzone.h
700
void lru_gen_reparent_memcg(struct mem_cgroup *memcg, struct mem_cgroup *parent, int nid);
include/linux/mmzone.h
718
static inline void lru_gen_init_memcg(struct mem_cgroup *memcg)
include/linux/mmzone.h
722
static inline void lru_gen_exit_memcg(struct mem_cgroup *memcg)
include/linux/mmzone.h
726
static inline void lru_gen_online_memcg(struct mem_cgroup *memcg)
include/linux/mmzone.h
730
static inline void lru_gen_offline_memcg(struct mem_cgroup *memcg)
include/linux/mmzone.h
734
static inline void lru_gen_release_memcg(struct mem_cgroup *memcg)
include/linux/mmzone.h
738
static inline void lru_gen_soft_reclaim(struct mem_cgroup *memcg, int nid)
include/linux/mmzone.h
742
static inline void max_lru_gen_memcg(struct mem_cgroup *memcg, int nid)
include/linux/mmzone.h
746
static inline bool recheck_lru_gen_max_memcg(struct mem_cgroup *memcg, int nid)
include/linux/mmzone.h
752
void lru_gen_reparent_memcg(struct mem_cgroup *memcg, struct mem_cgroup *parent, int nid)
include/linux/oom.h
36
struct mem_cgroup *memcg;
include/linux/rmap.h
846
struct mem_cgroup *memcg, vm_flags_t *vm_flags);
include/linux/rmap.h
978
struct mem_cgroup *memcg,
include/linux/sched/mm.h
492
set_active_memcg(struct mem_cgroup *memcg)
include/linux/sched/mm.h
498
this_cpu_write(int_active_memcg, memcg);
include/linux/sched/mm.h
501
current->active_memcg = memcg;
include/linux/sched/mm.h
508
set_active_memcg(struct mem_cgroup *memcg)
include/linux/shrinker.h
55
struct mem_cgroup *memcg;
include/linux/swap.h
365
extern unsigned long try_to_free_mem_cgroup_pages(struct mem_cgroup *memcg,
include/linux/swap.h
540
static inline int mem_cgroup_swappiness(struct mem_cgroup *memcg)
include/linux/swap.h
547
if (mem_cgroup_disabled() || mem_cgroup_is_root(memcg))
include/linux/swap.h
550
return READ_ONCE(memcg->swappiness);
include/linux/swap.h
553
void lru_reparent_memcg(struct mem_cgroup *memcg, struct mem_cgroup *parent, int nid);
include/linux/swap.h
592
extern long mem_cgroup_get_nr_swap_pages(struct mem_cgroup *memcg);
include/linux/swap.h
605
static inline long mem_cgroup_get_nr_swap_pages(struct mem_cgroup *memcg)
include/linux/vmpressure.h
33
void vmpressure(gfp_t gfp, int order, struct mem_cgroup *memcg, bool tree,
include/linux/vmpressure.h
35
extern void vmpressure_prio(gfp_t gfp, struct mem_cgroup *memcg, int prio);
include/linux/vmpressure.h
39
extern struct vmpressure *memcg_to_vmpressure(struct mem_cgroup *memcg);
include/linux/vmpressure.h
41
extern int vmpressure_register_event(struct mem_cgroup *memcg,
include/linux/vmpressure.h
44
extern void vmpressure_unregister_event(struct mem_cgroup *memcg,
include/linux/vmpressure.h
47
static inline void vmpressure(gfp_t gfp, int order, struct mem_cgroup *memcg,
include/linux/vmpressure.h
50
static inline void vmpressure_prio(gfp_t gfp, struct mem_cgroup *memcg,
include/linux/zswap.h
33
void zswap_memcg_offline_cleanup(struct mem_cgroup *memcg);
include/linux/zswap.h
58
static inline void zswap_memcg_offline_cleanup(struct mem_cgroup *memcg) {}
include/net/sock.h
2704
struct mem_cgroup *memcg = mem_cgroup_from_sk(sk);
include/net/sock.h
2708
return !!memcg->tcpmem_pressure;
include/net/sock.h
2713
mem_cgroup_get_socket_pressure(memcg))) {
include/net/sock.h
2718
} while ((memcg = parent_mem_cgroup(memcg)));
include/trace/events/memcg.h
14
TP_PROTO(struct mem_cgroup *memcg, int item, long val),
include/trace/events/memcg.h
16
TP_ARGS(memcg, item, val),
include/trace/events/memcg.h
25
__entry->id = cgroup_id(memcg->css.cgroup);
include/trace/events/memcg.h
3
#define TRACE_SYSTEM memcg
include/trace/events/memcg.h
36
TP_PROTO(struct mem_cgroup *memcg, int item, long val),
include/trace/events/memcg.h
38
TP_ARGS(memcg, item, val)
include/trace/events/memcg.h
43
TP_PROTO(struct mem_cgroup *memcg, int item, long val),
include/trace/events/memcg.h
45
TP_ARGS(memcg, item, val)
include/trace/events/memcg.h
50
TP_PROTO(struct mem_cgroup *memcg, int item, unsigned long val),
include/trace/events/memcg.h
52
TP_ARGS(memcg, item, val),
include/trace/events/memcg.h
61
__entry->id = cgroup_id(memcg->css.cgroup);
include/trace/events/memcg.h
72
TP_PROTO(struct mem_cgroup *memcg, int item, unsigned long val),
include/trace/events/memcg.h
74
TP_ARGS(memcg, item, val)
include/trace/events/memcg.h
79
TP_PROTO(struct mem_cgroup *memcg, s64 stats_updates,
include/trace/events/memcg.h
82
TP_ARGS(memcg, stats_updates, force, needs_flush),
include/trace/events/memcg.h
92
__entry->id = cgroup_id(memcg->css.cgroup);
include/trace/events/vmscan.h
179
TP_PROTO(gfp_t gfp_flags, int order, struct mem_cgroup *memcg),
include/trace/events/vmscan.h
181
TP_ARGS(gfp_flags, order, memcg),
include/trace/events/vmscan.h
192
__entry->memcg_id = mem_cgroup_id(memcg);
include/trace/events/vmscan.h
205
TP_PROTO(gfp_t gfp_flags, int order, struct mem_cgroup *memcg),
include/trace/events/vmscan.h
207
TP_ARGS(gfp_flags, order, memcg)
include/trace/events/vmscan.h
213
TP_PROTO(gfp_t gfp_flags, int order, struct mem_cgroup *memcg),
include/trace/events/vmscan.h
215
TP_ARGS(gfp_flags, order, memcg)
include/trace/events/vmscan.h
220
TP_PROTO(gfp_t gfp_flags, int order, struct mem_cgroup *memcg),
include/trace/events/vmscan.h
222
TP_ARGS(gfp_flags, order, memcg)
include/trace/events/vmscan.h
228
TP_PROTO(unsigned long nr_reclaimed, struct mem_cgroup *memcg),
include/trace/events/vmscan.h
230
TP_ARGS(nr_reclaimed, memcg),
include/trace/events/vmscan.h
239
__entry->memcg_id = mem_cgroup_id(memcg);
include/trace/events/vmscan.h
251
TP_PROTO(unsigned long nr_reclaimed, struct mem_cgroup *memcg),
include/trace/events/vmscan.h
253
TP_ARGS(nr_reclaimed, memcg)
include/trace/events/vmscan.h
259
TP_PROTO(unsigned long nr_reclaimed, struct mem_cgroup *memcg),
include/trace/events/vmscan.h
261
TP_ARGS(nr_reclaimed, memcg)
include/trace/events/vmscan.h
266
TP_PROTO(unsigned long nr_reclaimed, struct mem_cgroup *memcg),
include/trace/events/vmscan.h
268
TP_ARGS(nr_reclaimed, memcg)
include/trace/events/vmscan.h
276
int priority, struct mem_cgroup *memcg),
include/trace/events/vmscan.h
279
priority, memcg),
include/trace/events/vmscan.h
304
__entry->memcg_id = mem_cgroup_id(memcg);
include/trace/events/vmscan.h
324
long unused_scan_cnt, long new_scan_cnt, long total_scan, struct mem_cgroup *memcg),
include/trace/events/vmscan.h
327
total_scan, memcg),
include/trace/events/vmscan.h
348
__entry->memcg_id = mem_cgroup_id(memcg);
include/trace/events/vmscan.h
590
TP_PROTO(unsigned long nr_reclaimed, struct mem_cgroup *memcg),
include/trace/events/vmscan.h
592
TP_ARGS(nr_reclaimed, memcg)
kernel/bpf/memalloc.c
209
struct mem_cgroup *memcg = NULL, *old_memcg;
kernel/bpf/memalloc.c
240
memcg = get_memcg(c);
kernel/bpf/memalloc.c
241
old_memcg = set_active_memcg(memcg);
kernel/bpf/memalloc.c
254
mem_cgroup_put(memcg);
kernel/bpf/memalloc.c
988
struct mem_cgroup *memcg, *old_memcg;
kernel/bpf/memalloc.c
990
memcg = get_memcg(c);
kernel/bpf/memalloc.c
991
old_memcg = set_active_memcg(memcg);
kernel/bpf/memalloc.c
996
mem_cgroup_put(memcg);
kernel/bpf/syscall.c
529
struct mem_cgroup *memcg, *old_memcg;
kernel/bpf/syscall.c
532
bpf_map_memcg_enter(map, &old_memcg, &memcg);
kernel/bpf/syscall.c
534
bpf_map_memcg_exit(old_memcg, memcg);
kernel/bpf/syscall.c
542
struct mem_cgroup *memcg, *old_memcg;
kernel/bpf/syscall.c
545
bpf_map_memcg_enter(map, &old_memcg, &memcg);
kernel/bpf/syscall.c
547
bpf_map_memcg_exit(old_memcg, memcg);
kernel/bpf/syscall.c
554
struct mem_cgroup *memcg, *old_memcg;
kernel/bpf/syscall.c
557
bpf_map_memcg_enter(map, &old_memcg, &memcg);
kernel/bpf/syscall.c
559
bpf_map_memcg_exit(old_memcg, memcg);
kernel/bpf/syscall.c
567
struct mem_cgroup *memcg, *old_memcg;
kernel/bpf/syscall.c
570
bpf_map_memcg_enter(map, &old_memcg, &memcg);
kernel/bpf/syscall.c
572
bpf_map_memcg_exit(old_memcg, memcg);
kernel/bpf/syscall.c
580
struct mem_cgroup *memcg, *old_memcg;
kernel/bpf/syscall.c
583
bpf_map_memcg_enter(map, &old_memcg, &memcg);
kernel/bpf/syscall.c
585
bpf_map_memcg_exit(old_memcg, memcg);
mm/backing-dev.c
669
struct mem_cgroup *memcg;
mm/backing-dev.c
676
memcg = mem_cgroup_from_css(memcg_css);
mm/backing-dev.c
678
memcg_cgwb_list = &memcg->cgwb_list;
mm/backing-dev.c
932
void wb_memcg_offline(struct mem_cgroup *memcg)
mm/backing-dev.c
934
struct list_head *memcg_cgwb_list = &memcg->cgwb_list;
mm/bpf_memcontrol.c
113
__bpf_kfunc unsigned long bpf_mem_cgroup_usage(struct mem_cgroup *memcg)
mm/bpf_memcontrol.c
115
return page_counter_read(&memcg->memory) * PAGE_SIZE;
mm/bpf_memcontrol.c
125
__bpf_kfunc unsigned long bpf_mem_cgroup_memory_events(struct mem_cgroup *memcg,
mm/bpf_memcontrol.c
131
return atomic_long_read(&memcg->memory_events[event]);
mm/bpf_memcontrol.c
143
__bpf_kfunc unsigned long bpf_mem_cgroup_page_state(struct mem_cgroup *memcg, int idx)
mm/bpf_memcontrol.c
148
return memcg_page_state_output(memcg, idx);
mm/bpf_memcontrol.c
157
__bpf_kfunc void bpf_mem_cgroup_flush_stats(struct mem_cgroup *memcg)
mm/bpf_memcontrol.c
159
mem_cgroup_flush_stats(memcg);
mm/bpf_memcontrol.c
47
struct mem_cgroup *memcg = NULL;
mm/bpf_memcontrol.c
63
memcg = container_of(css, struct mem_cgroup, css);
mm/bpf_memcontrol.c
68
return memcg;
mm/bpf_memcontrol.c
78
__bpf_kfunc void bpf_put_mem_cgroup(struct mem_cgroup *memcg)
mm/bpf_memcontrol.c
80
css_put(&memcg->css);
mm/bpf_memcontrol.c
92
__bpf_kfunc unsigned long bpf_mem_cgroup_vm_events(struct mem_cgroup *memcg,
mm/bpf_memcontrol.c
98
return memcg_events(memcg, event);
mm/damon/core.c
2627
struct mem_cgroup *memcg;
mm/damon/core.c
2639
memcg = mem_cgroup_get_from_id(goal->memcg_id);
mm/damon/core.c
2640
if (!memcg) {
mm/damon/core.c
2647
mem_cgroup_flush_stats(memcg);
mm/damon/core.c
2648
lruvec = mem_cgroup_lruvec(memcg, NODE_DATA(goal->nid));
mm/damon/core.c
2654
mem_cgroup_put(memcg);
mm/damon/ops-common.c
263
struct mem_cgroup *memcg;
mm/damon/ops-common.c
275
memcg = folio_memcg_check(folio);
mm/damon/ops-common.c
276
if (!memcg)
mm/damon/ops-common.c
279
matched = filter->memcg_id == mem_cgroup_id(memcg);
mm/damon/paddr.c
125
struct mem_cgroup *memcg;
mm/damon/paddr.c
141
memcg = folio_memcg_check(folio);
mm/damon/paddr.c
142
if (!memcg)
mm/damon/paddr.c
145
matched = filter->memcg_id == mem_cgroup_id(memcg);
mm/damon/sysfs-common.c
106
static bool damon_sysfs_memcg_path_eq(struct mem_cgroup *memcg,
mm/damon/sysfs-common.c
110
cgroup_path(memcg->css.cgroup, memcg_path_buf, PATH_MAX);
mm/damon/sysfs-common.c
119
struct mem_cgroup *memcg;
mm/damon/sysfs-common.c
130
for (memcg = mem_cgroup_iter(NULL, NULL, NULL); memcg;
mm/damon/sysfs-common.c
131
memcg = mem_cgroup_iter(NULL, memcg, NULL)) {
mm/damon/sysfs-common.c
133
if (!mem_cgroup_online(memcg))
mm/damon/sysfs-common.c
135
if (damon_sysfs_memcg_path_eq(memcg, path, memcg_path)) {
mm/damon/sysfs-common.c
136
*id = mem_cgroup_id(memcg);
mm/damon/sysfs-common.c
138
mem_cgroup_iter_break(NULL, memcg);
mm/huge_memory.c
3827
struct mem_cgroup *memcg;
mm/huge_memory.c
3830
memcg = folio_memcg(folio);
mm/huge_memory.c
3832
folio_nid(folio), &memcg);
mm/huge_memory.c
4339
struct mem_cgroup *memcg;
mm/huge_memory.c
4349
memcg = folio_memcg(folio);
mm/huge_memory.c
4350
lru = list_lru_lock_irqsave(&deferred_split_lru, nid, &memcg, &flags);
mm/huge_memory.c
4370
struct mem_cgroup *memcg;
mm/huge_memory.c
4396
memcg = folio_memcg(folio);
mm/huge_memory.c
4397
lru = list_lru_lock_irqsave(&deferred_split_lru, nid, &memcg, &flags);
mm/huge_memory.c
4410
__list_lru_add(&deferred_split_lru, lru, &folio->_deferred_list, nid, memcg);
mm/internal.h
1761
unsigned long shrink_slab(gfp_t gfp_mask, int nid, struct mem_cgroup *memcg,
mm/internal.h
626
struct mem_cgroup *memcg, pg_data_t *pgdat);
mm/list_lru.c
111
VM_WARN_ON(!css_is_dying(&(*memcg)->css));
mm/list_lru.c
112
*memcg = parent_mem_cgroup(*memcg);
mm/list_lru.c
142
struct mem_cgroup **memcg, bool irq,
mm/list_lru.c
154
struct mem_cgroup **memcg)
mm/list_lru.c
156
return lock_list_lru_of_memcg(lru, nid, memcg, /*irq=*/false,
mm/list_lru.c
166
struct mem_cgroup **memcg)
mm/list_lru.c
168
return lock_list_lru_of_memcg(lru, nid, memcg, /*irq=*/true,
mm/list_lru.c
178
struct mem_cgroup **memcg,
mm/list_lru.c
181
return lock_list_lru_of_memcg(lru, nid, memcg, /*irq=*/true,
mm/list_lru.c
192
struct mem_cgroup *memcg)
mm/list_lru.c
202
set_shrinker_bit(memcg, nid, lru_shrinker_id(lru));
mm/list_lru.c
224
struct mem_cgroup *memcg)
mm/list_lru.c
229
l = list_lru_lock(lru, nid, &memcg);
mm/list_lru.c
230
ret = __list_lru_add(lru, l, item, nid, memcg);
mm/list_lru.c
236
int nid, struct mem_cgroup *memcg)
mm/list_lru.c
241
l = list_lru_lock_irq(lru, nid, &memcg);
mm/list_lru.c
242
ret = __list_lru_add(lru, l, item, nid, memcg);
mm/list_lru.c
266
struct mem_cgroup *memcg)
mm/list_lru.c
271
l = list_lru_lock(lru, nid, &memcg);
mm/list_lru.c
310
int nid, struct mem_cgroup *memcg)
mm/list_lru.c
316
l = list_lru_from_memcg_idx(lru, nid, memcg_kmem_id(memcg));
mm/list_lru.c
337
__list_lru_walk_one(struct list_lru *lru, int nid, struct mem_cgroup *memcg,
mm/list_lru.c
347
l = lock_list_lru_of_memcg(lru, nid, &memcg, /*irq=*/irq_off,
mm/list_lru.c
395
list_lru_walk_one(struct list_lru *lru, int nid, struct mem_cgroup *memcg,
mm/list_lru.c
399
return __list_lru_walk_one(lru, nid, memcg, isolate,
mm/list_lru.c
405
list_lru_walk_one_irq(struct list_lru *lru, int nid, struct mem_cgroup *memcg,
mm/list_lru.c
409
return __list_lru_walk_one(lru, nid, memcg, isolate,
mm/list_lru.c
425
struct mem_cgroup *memcg;
mm/list_lru.c
430
memcg = mem_cgroup_from_private_id(index);
mm/list_lru.c
431
if (!mem_cgroup_tryget(memcg)) {
mm/list_lru.c
436
isolated += __list_lru_walk_one(lru, nid, memcg,
mm/list_lru.c
439
mem_cgroup_put(memcg);
mm/list_lru.c
525
void memcg_reparent_list_lrus(struct mem_cgroup *memcg, struct mem_cgroup *parent)
mm/list_lru.c
539
mlru = xa_load(&lru->xa, memcg->kmemcg_id);
mm/list_lru.c
554
xa_erase_irq(&lru->xa, memcg->kmemcg_id);
mm/list_lru.c
566
static inline bool memcg_list_lru_allocated(struct mem_cgroup *memcg,
mm/list_lru.c
569
int idx = memcg->kmemcg_id;
mm/list_lru.c
574
static int __memcg_list_lru_alloc(struct mem_cgroup *memcg,
mm/list_lru.c
593
pos = memcg;
mm/list_lru.c
615
} while (pos != memcg && !css_is_dying(&pos->css));
mm/list_lru.c
623
int memcg_list_lru_alloc(struct mem_cgroup *memcg, struct list_lru *lru,
mm/list_lru.c
626
if (!list_lru_memcg_aware(lru) || memcg_list_lru_allocated(memcg, lru))
mm/list_lru.c
628
return __memcg_list_lru_alloc(memcg, lru, gfp);
mm/list_lru.c
634
struct mem_cgroup *memcg;
mm/list_lru.c
642
memcg = folio_memcg(folio);
mm/list_lru.c
643
res = memcg_list_lru_allocated(memcg, lru);
mm/list_lru.c
649
memcg = get_mem_cgroup_from_folio(folio);
mm/list_lru.c
650
res = __memcg_list_lru_alloc(memcg, lru, gfp);
mm/list_lru.c
651
mem_cgroup_put(memcg);
mm/list_lru.c
87
struct mem_cgroup **memcg, bool irq,
mm/list_lru.c
94
l = list_lru_from_memcg_idx(lru, nid, memcg_kmem_id(*memcg));
mm/memcontrol-v1.c
1025
struct mem_cgroup *memcg = event->memcg;
mm/memcontrol-v1.c
1029
event->unregister_event(memcg, event->eventfd);
mm/memcontrol-v1.c
1036
css_put(&memcg->css);
mm/memcontrol-v1.c
1049
struct mem_cgroup *memcg = event->memcg;
mm/memcontrol-v1.c
1062
spin_lock(&memcg->event_list_lock);
mm/memcontrol-v1.c
1071
spin_unlock(&memcg->event_list_lock);
mm/memcontrol-v1.c
1099
struct mem_cgroup *memcg = mem_cgroup_from_css(css);
mm/memcontrol-v1.c
1136
event->memcg = memcg;
mm/memcontrol-v1.c
1215
ret = event->register_event(memcg, event->eventfd, buf);
mm/memcontrol-v1.c
1221
spin_lock_irq(&memcg->event_list_lock);
mm/memcontrol-v1.c
1222
list_add(&event->list, &memcg->event_list);
mm/memcontrol-v1.c
1223
spin_unlock_irq(&memcg->event_list_lock);
mm/memcontrol-v1.c
1235
void memcg1_memcg_init(struct mem_cgroup *memcg)
mm/memcontrol-v1.c
1237
INIT_LIST_HEAD(&memcg->oom_notify);
mm/memcontrol-v1.c
1238
mutex_init(&memcg->thresholds_lock);
mm/memcontrol-v1.c
1239
INIT_LIST_HEAD(&memcg->event_list);
mm/memcontrol-v1.c
1240
spin_lock_init(&memcg->event_list_lock);
mm/memcontrol-v1.c
1243
void memcg1_css_offline(struct mem_cgroup *memcg)
mm/memcontrol-v1.c
1252
spin_lock_irq(&memcg->event_list_lock);
mm/memcontrol-v1.c
1253
list_for_each_entry_safe(event, tmp, &memcg->event_list, list) {
mm/memcontrol-v1.c
1257
spin_unlock_irq(&memcg->event_list_lock);
mm/memcontrol-v1.c
1264
static bool mem_cgroup_oom_trylock(struct mem_cgroup *memcg)
mm/memcontrol-v1.c
1270
for_each_mem_cgroup_tree(iter, memcg) {
mm/memcontrol-v1.c
1277
mem_cgroup_iter_break(memcg, iter);
mm/memcontrol-v1.c
1288
for_each_mem_cgroup_tree(iter, memcg) {
mm/memcontrol-v1.c
1290
mem_cgroup_iter_break(memcg, iter);
mm/memcontrol-v1.c
1303
static void mem_cgroup_oom_unlock(struct mem_cgroup *memcg)
mm/memcontrol-v1.c
1309
for_each_mem_cgroup_tree(iter, memcg)
mm/memcontrol-v1.c
1314
static void mem_cgroup_mark_under_oom(struct mem_cgroup *memcg)
mm/memcontrol-v1.c
1319
for_each_mem_cgroup_tree(iter, memcg)
mm/memcontrol-v1.c
1324
static void mem_cgroup_unmark_under_oom(struct mem_cgroup *memcg)
mm/memcontrol-v1.c
1333
for_each_mem_cgroup_tree(iter, memcg)
mm/memcontrol-v1.c
1342
struct mem_cgroup *memcg;
mm/memcontrol-v1.c
1354
oom_wait_memcg = oom_wait_info->memcg;
mm/memcontrol-v1.c
1362
void memcg1_oom_recover(struct mem_cgroup *memcg)
mm/memcontrol-v1.c
1372
if (memcg && memcg->under_oom)
mm/memcontrol-v1.c
1373
__wake_up(&memcg_oom_waitq, TASK_NORMAL, 0, memcg);
mm/memcontrol-v1.c
1395
struct mem_cgroup *memcg = current->memcg_in_oom;
mm/memcontrol-v1.c
1400
if (!memcg)
mm/memcontrol-v1.c
1406
owait.memcg = memcg;
mm/memcontrol-v1.c
1413
mem_cgroup_mark_under_oom(memcg);
mm/memcontrol-v1.c
1415
locked = mem_cgroup_oom_trylock(memcg);
mm/memcontrol-v1.c
1418
mem_cgroup_oom_notify(memcg);
mm/memcontrol-v1.c
1421
mem_cgroup_unmark_under_oom(memcg);
mm/memcontrol-v1.c
1425
mem_cgroup_oom_unlock(memcg);
mm/memcontrol-v1.c
1428
css_put(&memcg->css);
mm/memcontrol-v1.c
1433
bool memcg1_oom_prepare(struct mem_cgroup *memcg, bool *locked)
mm/memcontrol-v1.c
1453
if (READ_ONCE(memcg->oom_kill_disable)) {
mm/memcontrol-v1.c
1455
css_get(&memcg->css);
mm/memcontrol-v1.c
1456
current->memcg_in_oom = memcg;
mm/memcontrol-v1.c
1461
mem_cgroup_mark_under_oom(memcg);
mm/memcontrol-v1.c
1463
*locked = mem_cgroup_oom_trylock(memcg);
mm/memcontrol-v1.c
1466
mem_cgroup_oom_notify(memcg);
mm/memcontrol-v1.c
1468
mem_cgroup_unmark_under_oom(memcg);
mm/memcontrol-v1.c
1473
void memcg1_oom_finish(struct mem_cgroup *memcg, bool locked)
mm/memcontrol-v1.c
1476
mem_cgroup_oom_unlock(memcg);
mm/memcontrol-v1.c
1481
static int mem_cgroup_resize_max(struct mem_cgroup *memcg,
mm/memcontrol-v1.c
1488
struct page_counter *counter = memsw ? &memcg->memsw : &memcg->memory;
mm/memcontrol-v1.c
1501
limits_invariant = memsw ? max >= READ_ONCE(memcg->memory.max) :
mm/memcontrol-v1.c
1502
max <= memcg->memsw.max;
mm/memcontrol-v1.c
1517
drain_all_stock(memcg);
mm/memcontrol-v1.c
1522
if (!try_to_free_mem_cgroup_pages(memcg, 1, GFP_KERNEL,
mm/memcontrol-v1.c
1530
memcg1_oom_recover(memcg);
mm/memcontrol-v1.c
1540
static int mem_cgroup_force_empty(struct mem_cgroup *memcg)
mm/memcontrol-v1.c
1547
drain_all_stock(memcg);
mm/memcontrol-v1.c
1550
while (nr_retries && page_counter_read(&memcg->memory)) {
mm/memcontrol-v1.c
1554
if (!try_to_free_mem_cgroup_pages(memcg, 1, GFP_KERNEL,
mm/memcontrol-v1.c
1566
struct mem_cgroup *memcg = mem_cgroup_from_css(of_css(of));
mm/memcontrol-v1.c
1568
if (mem_cgroup_is_root(memcg))
mm/memcontrol-v1.c
1570
return mem_cgroup_force_empty(memcg) ?: nbytes;
mm/memcontrol-v1.c
1595
struct mem_cgroup *memcg = mem_cgroup_from_css(css);
mm/memcontrol-v1.c
1600
counter = &memcg->memory;
mm/memcontrol-v1.c
1603
counter = &memcg->memsw;
mm/memcontrol-v1.c
1606
counter = &memcg->kmem;
mm/memcontrol-v1.c
1609
counter = &memcg->tcpmem;
mm/memcontrol-v1.c
1617
if (counter == &memcg->memory)
mm/memcontrol-v1.c
1618
return (u64)mem_cgroup_usage(memcg, false) * PAGE_SIZE;
mm/memcontrol-v1.c
1619
if (counter == &memcg->memsw)
mm/memcontrol-v1.c
1620
return (u64)mem_cgroup_usage(memcg, true) * PAGE_SIZE;
mm/memcontrol-v1.c
1629
return (u64)READ_ONCE(memcg->soft_limit) * PAGE_SIZE;
mm/memcontrol-v1.c
1645
static int memcg_update_tcp_max(struct mem_cgroup *memcg, unsigned long max)
mm/memcontrol-v1.c
1651
ret = page_counter_set_max(&memcg->tcpmem, max);
mm/memcontrol-v1.c
1655
if (!memcg->tcpmem_active) {
mm/memcontrol-v1.c
167
static unsigned long soft_limit_excess(struct mem_cgroup *memcg)
mm/memcontrol-v1.c
1673
memcg->tcpmem_active = true;
mm/memcontrol-v1.c
1687
struct mem_cgroup *memcg = mem_cgroup_from_css(of_css(of));
mm/memcontrol-v1.c
169
unsigned long nr_pages = page_counter_read(&memcg->memory);
mm/memcontrol-v1.c
1698
if (mem_cgroup_is_root(memcg)) { /* Can't set limit on root */
mm/memcontrol-v1.c
170
unsigned long soft_limit = READ_ONCE(memcg->soft_limit);
mm/memcontrol-v1.c
1704
ret = mem_cgroup_resize_max(memcg, nr_pages, false);
mm/memcontrol-v1.c
1707
ret = mem_cgroup_resize_max(memcg, nr_pages, true);
mm/memcontrol-v1.c
1720
ret = memcg_update_tcp_max(memcg, nr_pages);
mm/memcontrol-v1.c
1731
WRITE_ONCE(memcg->soft_limit, nr_pages);
mm/memcontrol-v1.c
1742
struct mem_cgroup *memcg = mem_cgroup_from_css(of_css(of));
mm/memcontrol-v1.c
1747
counter = &memcg->memory;
mm/memcontrol-v1.c
1750
counter = &memcg->memsw;
mm/memcontrol-v1.c
1753
counter = &memcg->kmem;
mm/memcontrol-v1.c
1756
counter = &memcg->tcpmem;
mm/memcontrol-v1.c
1782
static unsigned long mem_cgroup_node_nr_lru_pages(struct mem_cgroup *memcg,
mm/memcontrol-v1.c
1785
struct lruvec *lruvec = mem_cgroup_lruvec(memcg, NODE_DATA(nid));
mm/memcontrol-v1.c
179
static void memcg1_update_tree(struct mem_cgroup *memcg, int nid)
mm/memcontrol-v1.c
1802
static unsigned long mem_cgroup_nr_lru_pages(struct mem_cgroup *memcg,
mm/memcontrol-v1.c
1813
nr += memcg_page_state(memcg, NR_LRU_BASE + lru);
mm/memcontrol-v1.c
1815
nr += memcg_page_state_local(memcg, NR_LRU_BASE + lru);
mm/memcontrol-v1.c
1835
struct mem_cgroup *memcg = mem_cgroup_from_seq(m);
mm/memcontrol-v1.c
1837
mem_cgroup_flush_stats(memcg);
mm/memcontrol-v1.c
1841
mem_cgroup_nr_lru_pages(memcg, stat->lru_mask,
mm/memcontrol-v1.c
1845
mem_cgroup_node_nr_lru_pages(memcg, nid,
mm/memcontrol-v1.c
1853
mem_cgroup_nr_lru_pages(memcg, stat->lru_mask,
mm/memcontrol-v1.c
1857
mem_cgroup_node_nr_lru_pages(memcg, nid,
mm/memcontrol-v1.c
186
if (soft_limit_excess(memcg))
mm/memcontrol-v1.c
187
lru_gen_soft_reclaim(memcg, nid);
mm/memcontrol-v1.c
1910
void reparent_memcg1_state_local(struct mem_cgroup *memcg, struct mem_cgroup *parent)
mm/memcontrol-v1.c
1915
reparent_memcg_state_local(memcg, parent, memcg1_stats[i]);
mm/memcontrol-v1.c
1918
void reparent_memcg1_lruvec_state_local(struct mem_cgroup *memcg, struct mem_cgroup *parent)
mm/memcontrol-v1.c
1923
reparent_memcg_lruvec_state_local(memcg, parent, i);
mm/memcontrol-v1.c
1926
void memcg1_stat_format(struct mem_cgroup *memcg, struct seq_buf *s)
mm/memcontrol-v1.c
1934
mem_cgroup_flush_stats(memcg);
mm/memcontrol-v1.c
1939
nr = memcg_page_state_local_output(memcg, memcg1_stats[i]);
mm/memcontrol-v1.c
1945
memcg_events_local(memcg, memcg1_events[i]));
mm/memcontrol-v1.c
1949
memcg_page_state_local(memcg, NR_LRU_BASE + i) *
mm/memcontrol-v1.c
1954
for (mi = memcg; mi; mi = parent_mem_cgroup(mi)) {
mm/memcontrol-v1.c
1966
nr = memcg_page_state_output(memcg, memcg1_stats[i]);
mm/memcontrol-v1.c
1974
(u64)memcg_events(memcg, memcg1_events[i]));
mm/memcontrol-v1.c
1978
(u64)memcg_page_state(memcg, NR_LRU_BASE + i) *
mm/memcontrol-v1.c
198
for (; memcg; memcg = parent_mem_cgroup(memcg)) {
mm/memcontrol-v1.c
1989
mz = memcg->nodeinfo[pgdat->node_id];
mm/memcontrol-v1.c
199
mz = memcg->nodeinfo[nid];
mm/memcontrol-v1.c
200
excess = soft_limit_excess(memcg);
mm/memcontrol-v1.c
2003
struct mem_cgroup *memcg = mem_cgroup_from_css(css);
mm/memcontrol-v1.c
2005
return mem_cgroup_swappiness(memcg);
mm/memcontrol-v1.c
2011
struct mem_cgroup *memcg = mem_cgroup_from_css(css);
mm/memcontrol-v1.c
2016
if (!mem_cgroup_is_root(memcg)) {
mm/memcontrol-v1.c
2019
WRITE_ONCE(memcg->swappiness, val);
mm/memcontrol-v1.c
2028
struct mem_cgroup *memcg = mem_cgroup_from_seq(sf);
mm/memcontrol-v1.c
2030
seq_printf(sf, "oom_kill_disable %d\n", READ_ONCE(memcg->oom_kill_disable));
mm/memcontrol-v1.c
2031
seq_printf(sf, "under_oom %d\n", (bool)memcg->under_oom);
mm/memcontrol-v1.c
2033
atomic_long_read(&memcg->memory_events[MEMCG_OOM_KILL]));
mm/memcontrol-v1.c
2040
struct mem_cgroup *memcg = mem_cgroup_from_css(css);
mm/memcontrol-v1.c
2047
if (mem_cgroup_is_root(memcg) || !((val == 0) || (val == 1)))
mm/memcontrol-v1.c
2050
WRITE_ONCE(memcg->oom_kill_disable, val);
mm/memcontrol-v1.c
2052
memcg1_oom_recover(memcg);
mm/memcontrol-v1.c
222
void memcg1_remove_from_trees(struct mem_cgroup *memcg)
mm/memcontrol-v1.c
2223
void memcg1_account_kmem(struct mem_cgroup *memcg, int nr_pages)
mm/memcontrol-v1.c
2227
page_counter_charge(&memcg->kmem, nr_pages);
mm/memcontrol-v1.c
2229
page_counter_uncharge(&memcg->kmem, -nr_pages);
mm/memcontrol-v1.c
2233
bool memcg1_charge_skmem(struct mem_cgroup *memcg, unsigned int nr_pages,
mm/memcontrol-v1.c
2238
if (page_counter_try_charge(&memcg->tcpmem, nr_pages, &fail)) {
mm/memcontrol-v1.c
2239
memcg->tcpmem_pressure = 0;
mm/memcontrol-v1.c
2242
memcg->tcpmem_pressure = 1;
mm/memcontrol-v1.c
2244
page_counter_charge(&memcg->tcpmem, nr_pages);
mm/memcontrol-v1.c
2250
bool memcg1_alloc_events(struct mem_cgroup *memcg)
mm/memcontrol-v1.c
2252
memcg->events_percpu = alloc_percpu_gfp(struct memcg1_events_percpu,
mm/memcontrol-v1.c
2254
return !!memcg->events_percpu;
mm/memcontrol-v1.c
2257
void memcg1_free_events(struct mem_cgroup *memcg)
mm/memcontrol-v1.c
2259
free_percpu(memcg->events_percpu);
mm/memcontrol-v1.c
229
mz = memcg->nodeinfo[nid];
mm/memcontrol-v1.c
254
if (!soft_limit_excess(mz->memcg) ||
mm/memcontrol-v1.c
255
!css_tryget(&mz->memcg->css))
mm/memcontrol-v1.c
362
reclaimed = mem_cgroup_soft_reclaim(mz->memcg, pgdat,
mm/memcontrol-v1.c
375
excess = soft_limit_excess(mz->memcg);
mm/memcontrol-v1.c
387
css_put(&mz->memcg->css);
mm/memcontrol-v1.c
400
css_put(&next_mz->memcg->css);
mm/memcontrol-v1.c
430
static unsigned long mem_cgroup_usage(struct mem_cgroup *memcg, bool swap)
mm/memcontrol-v1.c
434
if (mem_cgroup_is_root(memcg)) {
mm/memcontrol-v1.c
445
val = page_counter_read(&memcg->memory);
mm/memcontrol-v1.c
447
val = page_counter_read(&memcg->memsw);
mm/memcontrol-v1.c
452
static void __mem_cgroup_threshold(struct mem_cgroup *memcg, bool swap)
mm/memcontrol-v1.c
460
t = rcu_dereference(memcg->thresholds.primary);
mm/memcontrol-v1.c
462
t = rcu_dereference(memcg->memsw_thresholds.primary);
mm/memcontrol-v1.c
467
usage = mem_cgroup_usage(memcg, swap);
mm/memcontrol-v1.c
503
static void mem_cgroup_threshold(struct mem_cgroup *memcg)
mm/memcontrol-v1.c
505
while (memcg) {
mm/memcontrol-v1.c
506
__mem_cgroup_threshold(memcg, false);
mm/memcontrol-v1.c
508
__mem_cgroup_threshold(memcg, true);
mm/memcontrol-v1.c
510
memcg = parent_mem_cgroup(memcg);
mm/memcontrol-v1.c
533
static void memcg1_charge_statistics(struct mem_cgroup *memcg, int nr_pages)
mm/memcontrol-v1.c
537
count_memcg_events(memcg, PGPGIN, 1);
mm/memcontrol-v1.c
539
count_memcg_events(memcg, PGPGOUT, 1);
mm/memcontrol-v1.c
543
__this_cpu_add(memcg->events_percpu->nr_page_events, nr_pages);
mm/memcontrol-v1.c
549
static bool memcg1_event_ratelimit(struct mem_cgroup *memcg,
mm/memcontrol-v1.c
554
val = __this_cpu_read(memcg->events_percpu->nr_page_events);
mm/memcontrol-v1.c
555
next = __this_cpu_read(memcg->events_percpu->targets[target]);
mm/memcontrol-v1.c
56
struct mem_cgroup *memcg;
mm/memcontrol-v1.c
568
__this_cpu_write(memcg->events_percpu->targets[target], next);
mm/memcontrol-v1.c
578
static void memcg1_check_events(struct mem_cgroup *memcg, int nid)
mm/memcontrol-v1.c
584
if (unlikely(memcg1_event_ratelimit(memcg,
mm/memcontrol-v1.c
588
do_softlimit = memcg1_event_ratelimit(memcg,
mm/memcontrol-v1.c
590
mem_cgroup_threshold(memcg);
mm/memcontrol-v1.c
592
memcg1_update_tree(memcg, nid);
mm/memcontrol-v1.c
596
void memcg1_commit_charge(struct folio *folio, struct mem_cgroup *memcg)
mm/memcontrol-v1.c
601
memcg1_charge_statistics(memcg, folio_nr_pages(folio));
mm/memcontrol-v1.c
602
memcg1_check_events(memcg, folio_nid(folio));
mm/memcontrol-v1.c
620
struct mem_cgroup *memcg, *swap_memcg;
mm/memcontrol-v1.c
641
memcg = obj_cgroup_memcg(objcg);
mm/memcontrol-v1.c
648
swap_memcg = mem_cgroup_private_id_get_online(memcg, nr_entries);
mm/memcontrol-v1.c
658
page_counter_uncharge(&memcg->memory, nr_entries);
mm/memcontrol-v1.c
660
if (memcg != swap_memcg) {
mm/memcontrol-v1.c
663
page_counter_uncharge(&memcg->memsw, nr_entries);
mm/memcontrol-v1.c
673
memcg1_charge_statistics(memcg, -folio_nr_pages(folio));
mm/memcontrol-v1.c
675
memcg1_check_events(memcg, folio_nid(folio));
mm/memcontrol-v1.c
70
int (*register_event)(struct mem_cgroup *memcg,
mm/memcontrol-v1.c
728
void memcg1_uncharge_batch(struct mem_cgroup *memcg, unsigned long pgpgout,
mm/memcontrol-v1.c
734
count_memcg_events(memcg, PGPGOUT, pgpgout);
mm/memcontrol-v1.c
735
__this_cpu_add(memcg->events_percpu->nr_page_events, nr_memory);
mm/memcontrol-v1.c
736
memcg1_check_events(memcg, nid);
mm/memcontrol-v1.c
754
static int mem_cgroup_oom_notify_cb(struct mem_cgroup *memcg)
mm/memcontrol-v1.c
760
list_for_each_entry(ev, &memcg->oom_notify, list)
mm/memcontrol-v1.c
767
static void mem_cgroup_oom_notify(struct mem_cgroup *memcg)
mm/memcontrol-v1.c
77
void (*unregister_event)(struct mem_cgroup *memcg,
mm/memcontrol-v1.c
771
for_each_mem_cgroup_tree(iter, memcg)
mm/memcontrol-v1.c
775
static int __mem_cgroup_usage_register_event(struct mem_cgroup *memcg,
mm/memcontrol-v1.c
788
mutex_lock(&memcg->thresholds_lock);
mm/memcontrol-v1.c
791
thresholds = &memcg->thresholds;
mm/memcontrol-v1.c
792
usage = mem_cgroup_usage(memcg, false);
mm/memcontrol-v1.c
794
thresholds = &memcg->memsw_thresholds;
mm/memcontrol-v1.c
795
usage = mem_cgroup_usage(memcg, true);
mm/memcontrol-v1.c
801
__mem_cgroup_threshold(memcg, type == _MEMSWAP);
mm/memcontrol-v1.c
850
mutex_unlock(&memcg->thresholds_lock);
mm/memcontrol-v1.c
855
static int mem_cgroup_usage_register_event(struct mem_cgroup *memcg,
mm/memcontrol-v1.c
858
return __mem_cgroup_usage_register_event(memcg, eventfd, args, _MEM);
mm/memcontrol-v1.c
861
static int memsw_cgroup_usage_register_event(struct mem_cgroup *memcg,
mm/memcontrol-v1.c
864
return __mem_cgroup_usage_register_event(memcg, eventfd, args, _MEMSWAP);
mm/memcontrol-v1.c
867
static void __mem_cgroup_usage_unregister_event(struct mem_cgroup *memcg,
mm/memcontrol-v1.c
875
mutex_lock(&memcg->thresholds_lock);
mm/memcontrol-v1.c
878
thresholds = &memcg->thresholds;
mm/memcontrol-v1.c
879
usage = mem_cgroup_usage(memcg, false);
mm/memcontrol-v1.c
881
thresholds = &memcg->memsw_thresholds;
mm/memcontrol-v1.c
882
usage = mem_cgroup_usage(memcg, true);
mm/memcontrol-v1.c
890
__mem_cgroup_threshold(memcg, type == _MEMSWAP);
mm/memcontrol-v1.c
949
mutex_unlock(&memcg->thresholds_lock);
mm/memcontrol-v1.c
952
static void mem_cgroup_usage_unregister_event(struct mem_cgroup *memcg,
mm/memcontrol-v1.c
955
return __mem_cgroup_usage_unregister_event(memcg, eventfd, _MEM);
mm/memcontrol-v1.c
958
static void memsw_cgroup_usage_unregister_event(struct mem_cgroup *memcg,
mm/memcontrol-v1.c
961
return __mem_cgroup_usage_unregister_event(memcg, eventfd, _MEMSWAP);
mm/memcontrol-v1.c
964
static int mem_cgroup_oom_register_event(struct mem_cgroup *memcg,
mm/memcontrol-v1.c
976
list_add(&event->list, &memcg->oom_notify);
mm/memcontrol-v1.c
979
if (memcg->under_oom)
mm/memcontrol-v1.c
986
static void mem_cgroup_oom_unregister_event(struct mem_cgroup *memcg,
mm/memcontrol-v1.c
993
list_for_each_entry_safe(ev, tmp, &memcg->oom_notify, list) {
mm/memcontrol-v1.h
102
static inline bool memcg1_alloc_events(struct mem_cgroup *memcg) { return true; }
mm/memcontrol-v1.h
103
static inline void memcg1_free_events(struct mem_cgroup *memcg) {}
mm/memcontrol-v1.h
105
static inline void memcg1_memcg_init(struct mem_cgroup *memcg) {}
mm/memcontrol-v1.h
106
static inline void memcg1_remove_from_trees(struct mem_cgroup *memcg) {}
mm/memcontrol-v1.h
107
static inline void memcg1_soft_limit_reset(struct mem_cgroup *memcg) {}
mm/memcontrol-v1.h
108
static inline void memcg1_css_offline(struct mem_cgroup *memcg) {}
mm/memcontrol-v1.h
110
static inline bool memcg1_oom_prepare(struct mem_cgroup *memcg, bool *locked)
mm/memcontrol-v1.h
115
static inline void memcg1_oom_finish(struct mem_cgroup *memcg, bool locked) {}
mm/memcontrol-v1.h
116
static inline void memcg1_oom_recover(struct mem_cgroup *memcg) {}
mm/memcontrol-v1.h
119
struct mem_cgroup *memcg) {}
mm/memcontrol-v1.h
121
static inline void memcg1_uncharge_batch(struct mem_cgroup *memcg,
mm/memcontrol-v1.h
125
static inline void memcg1_stat_format(struct mem_cgroup *memcg, struct seq_buf *s) {}
mm/memcontrol-v1.h
127
static inline void memcg1_account_kmem(struct mem_cgroup *memcg, int nr_pages) {}
mm/memcontrol-v1.h
128
static inline bool memcg1_tcpmem_active(struct mem_cgroup *memcg) { return false; }
mm/memcontrol-v1.h
129
static inline bool memcg1_charge_skmem(struct mem_cgroup *memcg, unsigned int nr_pages,
mm/memcontrol-v1.h
131
static inline void memcg1_uncharge_skmem(struct mem_cgroup *memcg, unsigned int nr_pages) {}
mm/memcontrol-v1.h
27
unsigned long memcg_events(struct mem_cgroup *memcg, int event);
mm/memcontrol-v1.h
30
struct mem_cgroup *mem_cgroup_private_id_get_online(struct mem_cgroup *memcg,
mm/memcontrol-v1.h
42
unsigned long memcg_events_local(struct mem_cgroup *memcg, int event);
mm/memcontrol-v1.h
43
unsigned long memcg_page_state_local(struct mem_cgroup *memcg, int idx);
mm/memcontrol-v1.h
44
unsigned long memcg_page_state_local_output(struct mem_cgroup *memcg, int item);
mm/memcontrol-v1.h
45
bool memcg1_alloc_events(struct mem_cgroup *memcg);
mm/memcontrol-v1.h
46
void memcg1_free_events(struct mem_cgroup *memcg);
mm/memcontrol-v1.h
48
void memcg1_memcg_init(struct mem_cgroup *memcg);
mm/memcontrol-v1.h
49
void memcg1_remove_from_trees(struct mem_cgroup *memcg);
mm/memcontrol-v1.h
51
static inline void memcg1_soft_limit_reset(struct mem_cgroup *memcg)
mm/memcontrol-v1.h
53
WRITE_ONCE(memcg->soft_limit, PAGE_COUNTER_MAX);
mm/memcontrol-v1.h
57
void memcg1_css_offline(struct mem_cgroup *memcg);
mm/memcontrol-v1.h
67
bool memcg1_oom_prepare(struct mem_cgroup *memcg, bool *locked);
mm/memcontrol-v1.h
68
void memcg1_oom_finish(struct mem_cgroup *memcg, bool locked);
mm/memcontrol-v1.h
69
void memcg1_oom_recover(struct mem_cgroup *memcg);
mm/memcontrol-v1.h
71
void memcg1_commit_charge(struct folio *folio, struct mem_cgroup *memcg);
mm/memcontrol-v1.h
72
void memcg1_uncharge_batch(struct mem_cgroup *memcg, unsigned long pgpgout,
mm/memcontrol-v1.h
75
void memcg1_stat_format(struct mem_cgroup *memcg, struct seq_buf *s);
mm/memcontrol-v1.h
76
void reparent_memcg1_state_local(struct mem_cgroup *memcg, struct mem_cgroup *parent);
mm/memcontrol-v1.h
77
void reparent_memcg1_lruvec_state_local(struct mem_cgroup *memcg, struct mem_cgroup *parent);
mm/memcontrol-v1.h
79
void reparent_memcg_state_local(struct mem_cgroup *memcg,
mm/memcontrol-v1.h
81
void reparent_memcg_lruvec_state_local(struct mem_cgroup *memcg,
mm/memcontrol-v1.h
84
void memcg1_account_kmem(struct mem_cgroup *memcg, int nr_pages);
mm/memcontrol-v1.h
85
static inline bool memcg1_tcpmem_active(struct mem_cgroup *memcg)
mm/memcontrol-v1.h
87
return memcg->tcpmem_active;
mm/memcontrol-v1.h
89
bool memcg1_charge_skmem(struct mem_cgroup *memcg, unsigned int nr_pages,
mm/memcontrol-v1.h
91
static inline void memcg1_uncharge_skmem(struct mem_cgroup *memcg, unsigned int nr_pages)
mm/memcontrol-v1.h
93
page_counter_uncharge(&memcg->tcpmem, nr_pages);
mm/memcontrol.c
1001
struct mem_cgroup *memcg;
mm/memcontrol.c
1005
memcg = mem_cgroup_from_virt(p);
mm/memcontrol.c
1013
if (!memcg) {
mm/memcontrol.c
1016
lruvec = mem_cgroup_lruvec(memcg, pgdat);
mm/memcontrol.c
1028
void count_memcg_events(struct mem_cgroup *memcg, enum vm_event_item idx,
mm/memcontrol.c
1042
this_cpu_add(memcg->vmstats_percpu->events[i], count);
mm/memcontrol.c
1043
memcg_rstat_updated(memcg, count, cpu);
mm/memcontrol.c
1044
trace_count_memcg_events(memcg, idx, count);
mm/memcontrol.c
1049
unsigned long memcg_events(struct mem_cgroup *memcg, int event)
mm/memcontrol.c
1056
return READ_ONCE(memcg->vmstats->events[i]);
mm/memcontrol.c
1068
unsigned long memcg_events_local(struct mem_cgroup *memcg, int event)
mm/memcontrol.c
1075
return READ_ONCE(memcg->vmstats->events_local[i]);
mm/memcontrol.c
1114
struct mem_cgroup *memcg;
mm/memcontrol.c
1129
memcg = active_memcg();
mm/memcontrol.c
1130
if (unlikely(memcg)) {
mm/memcontrol.c
1132
css_get(&memcg->css);
mm/memcontrol.c
1133
return memcg;
mm/memcontrol.c
1142
memcg = mem_cgroup_from_task(rcu_dereference(mm->owner));
mm/memcontrol.c
1143
if (unlikely(!memcg))
mm/memcontrol.c
1144
memcg = root_mem_cgroup;
mm/memcontrol.c
1145
} while (!css_tryget(&memcg->css));
mm/memcontrol.c
1147
return memcg;
mm/memcontrol.c
115
struct vmpressure *memcg_to_vmpressure(struct mem_cgroup *memcg)
mm/memcontrol.c
1156
struct mem_cgroup *memcg;
mm/memcontrol.c
1163
memcg = mem_cgroup_from_task(current);
mm/memcontrol.c
1164
if (!css_tryget(&memcg->css)) {
mm/memcontrol.c
1169
return memcg;
mm/memcontrol.c
117
if (!memcg)
mm/memcontrol.c
118
memcg = root_mem_cgroup;
mm/memcontrol.c
1180
struct mem_cgroup *memcg;
mm/memcontrol.c
119
return &memcg->vmpressure;
mm/memcontrol.c
1190
memcg = folio_memcg(folio);
mm/memcontrol.c
1191
} while (unlikely(!css_tryget(&memcg->css)));
mm/memcontrol.c
1193
return memcg;
mm/memcontrol.c
1330
struct mem_cgroup *memcg = dead_memcg;
mm/memcontrol.c
1334
__invalidate_reclaim_iterators(memcg, dead_memcg);
mm/memcontrol.c
1335
last = memcg;
mm/memcontrol.c
1336
} while ((memcg = parent_mem_cgroup(memcg)));
mm/memcontrol.c
1362
void mem_cgroup_scan_tasks(struct mem_cgroup *memcg,
mm/memcontrol.c
1368
BUG_ON(mem_cgroup_is_root(memcg));
mm/memcontrol.c
1370
for_each_mem_cgroup_tree(iter, memcg) {
mm/memcontrol.c
138
static void memcg_uncharge(struct mem_cgroup *memcg, unsigned int nr_pages);
mm/memcontrol.c
1382
mem_cgroup_iter_break(memcg, iter);
mm/memcontrol.c
1518
static unsigned long mem_cgroup_margin(struct mem_cgroup *memcg)
mm/memcontrol.c
1524
count = page_counter_read(&memcg->memory);
mm/memcontrol.c
1525
limit = READ_ONCE(memcg->memory.max);
mm/memcontrol.c
1530
count = page_counter_read(&memcg->memsw);
mm/memcontrol.c
1531
limit = READ_ONCE(memcg->memsw.max);
mm/memcontrol.c
1667
unsigned long memcg_page_state_output(struct mem_cgroup *memcg, int item)
mm/memcontrol.c
1669
return memcg_page_state(memcg, item) *
mm/memcontrol.c
1674
unsigned long memcg_page_state_local_output(struct mem_cgroup *memcg, int item)
mm/memcontrol.c
1676
return memcg_page_state_local(memcg, item) *
mm/memcontrol.c
1693
static void memcg_stat_format(struct mem_cgroup *memcg, struct seq_buf *s)
mm/memcontrol.c
1707
mem_cgroup_flush_stats(memcg);
mm/memcontrol.c
1717
size = memcg_page_state_output(memcg, memory_stats[i].idx);
mm/memcontrol.c
172
struct mem_cgroup *memcg;
mm/memcontrol.c
1721
size += memcg_page_state_output(memcg,
mm/memcontrol.c
1729
memcg_page_state(memcg, PGSCAN_KSWAPD) +
mm/memcontrol.c
1730
memcg_page_state(memcg, PGSCAN_DIRECT) +
mm/memcontrol.c
1731
memcg_page_state(memcg, PGSCAN_PROACTIVE) +
mm/memcontrol.c
1732
memcg_page_state(memcg, PGSCAN_KHUGEPAGED));
mm/memcontrol.c
1734
memcg_page_state(memcg, PGSTEAL_KSWAPD) +
mm/memcontrol.c
1735
memcg_page_state(memcg, PGSTEAL_DIRECT) +
mm/memcontrol.c
1736
memcg_page_state(memcg, PGSTEAL_PROACTIVE) +
mm/memcontrol.c
1737
memcg_page_state(memcg, PGSTEAL_KHUGEPAGED));
mm/memcontrol.c
174
memcg = get_mem_cgroup_from_objcg(objcg);
mm/memcontrol.c
1747
memcg_events(memcg, memcg_vm_event_stat[i]));
mm/memcontrol.c
175
mod_memcg_state(memcg, MEMCG_KMEM, -nr_pages);
mm/memcontrol.c
1751
static void memory_stat_format(struct mem_cgroup *memcg, struct seq_buf *s)
mm/memcontrol.c
1754
memcg_stat_format(memcg, s);
mm/memcontrol.c
1756
memcg1_stat_format(memcg, s);
mm/memcontrol.c
176
memcg1_account_kmem(memcg, -nr_pages);
mm/memcontrol.c
177
if (!mem_cgroup_is_root(memcg))
mm/memcontrol.c
1770
void mem_cgroup_print_oom_context(struct mem_cgroup *memcg, struct task_struct *p)
mm/memcontrol.c
1774
if (memcg) {
mm/memcontrol.c
1776
pr_cont_cgroup_path(memcg->css.cgroup);
mm/memcontrol.c
178
memcg_uncharge(memcg, nr_pages);
mm/memcontrol.c
179
mem_cgroup_put(memcg);
mm/memcontrol.c
1791
void mem_cgroup_print_oom_meminfo(struct mem_cgroup *memcg)
mm/memcontrol.c
1801
memory_failcnt = atomic_long_read(&memcg->memory_events[MEMCG_MAX]);
mm/memcontrol.c
1803
memory_failcnt = memcg->memory.failcnt;
mm/memcontrol.c
1806
K((u64)page_counter_read(&memcg->memory)),
mm/memcontrol.c
1807
K((u64)READ_ONCE(memcg->memory.max)), memory_failcnt);
mm/memcontrol.c
1810
K((u64)page_counter_read(&memcg->swap)),
mm/memcontrol.c
1811
K((u64)READ_ONCE(memcg->swap.max)),
mm/memcontrol.c
1812
atomic_long_read(&memcg->memory_events[MEMCG_SWAP_MAX]));
mm/memcontrol.c
1816
K((u64)page_counter_read(&memcg->memsw)),
mm/memcontrol.c
1817
K((u64)memcg->memsw.max), memcg->memsw.failcnt);
mm/memcontrol.c
1819
K((u64)page_counter_read(&memcg->kmem)),
mm/memcontrol.c
1820
K((u64)memcg->kmem.max), memcg->kmem.failcnt);
mm/memcontrol.c
1825
pr_cont_cgroup_path(memcg->css.cgroup);
mm/memcontrol.c
1828
memory_stat_format(memcg, &s);
mm/memcontrol.c
1835
unsigned long mem_cgroup_get_max(struct mem_cgroup *memcg)
mm/memcontrol.c
1837
unsigned long max = READ_ONCE(memcg->memory.max);
mm/memcontrol.c
1840
if (mem_cgroup_swappiness(memcg)) {
mm/memcontrol.c
1842
unsigned long swap = READ_ONCE(memcg->memsw.max) - max;
mm/memcontrol.c
1847
if (mem_cgroup_swappiness(memcg))
mm/memcontrol.c
1848
max += min(READ_ONCE(memcg->swap.max),
mm/memcontrol.c
1854
void __memcg_memory_event(struct mem_cgroup *memcg,
mm/memcontrol.c
1863
atomic_long_inc(&memcg->memory_events_local[event]);
mm/memcontrol.c
1865
cgroup_file_notify(&memcg->events_local_file);
mm/memcontrol.c
1868
atomic_long_inc(&memcg->memory_events[event]);
mm/memcontrol.c
1871
cgroup_file_notify(&memcg->swap_events_file);
mm/memcontrol.c
1873
cgroup_file_notify(&memcg->events_file);
mm/memcontrol.c
1880
} while ((memcg = parent_mem_cgroup(memcg)) &&
mm/memcontrol.c
1881
!mem_cgroup_is_root(memcg));
mm/memcontrol.c
1885
static bool mem_cgroup_out_of_memory(struct mem_cgroup *memcg, gfp_t gfp_mask,
mm/memcontrol.c
1891
.memcg = memcg,
mm/memcontrol.c
1900
if (mem_cgroup_margin(memcg) >= (1 << order))
mm/memcontrol.c
1918
static bool mem_cgroup_oom(struct mem_cgroup *memcg, gfp_t mask, int order)
mm/memcontrol.c
1925
memcg_memory_event(memcg, MEMCG_OOM);
mm/memcontrol.c
1927
if (!memcg1_oom_prepare(memcg, &locked))
mm/memcontrol.c
1930
ret = mem_cgroup_out_of_memory(memcg, mask, order);
mm/memcontrol.c
1932
memcg1_oom_finish(memcg, locked);
mm/memcontrol.c
1951
struct mem_cgroup *memcg;
mm/memcontrol.c
1961
memcg = mem_cgroup_from_task(victim);
mm/memcontrol.c
1962
if (mem_cgroup_is_root(memcg))
mm/memcontrol.c
1970
if (unlikely(!mem_cgroup_is_descendant(memcg, oom_domain)))
mm/memcontrol.c
1978
for (; memcg; memcg = parent_mem_cgroup(memcg)) {
mm/memcontrol.c
1979
if (READ_ONCE(memcg->oom_group))
mm/memcontrol.c
1980
oom_group = memcg;
mm/memcontrol.c
1982
if (memcg == oom_domain)
mm/memcontrol.c
1994
void mem_cgroup_print_oom_group(struct mem_cgroup *memcg)
mm/memcontrol.c
1997
pr_cont_cgroup_path(memcg->css.cgroup);
mm/memcontrol.c
2079
static bool consume_stock(struct mem_cgroup *memcg, unsigned int nr_pages)
mm/memcontrol.c
209
static inline struct obj_cgroup *__memcg_reparent_objcgs(struct mem_cgroup *memcg,
mm/memcontrol.c
2093
if (memcg != READ_ONCE(stock->cached[i]))
mm/memcontrol.c
2109
static void memcg_uncharge(struct mem_cgroup *memcg, unsigned int nr_pages)
mm/memcontrol.c
2111
page_counter_uncharge(&memcg->memory, nr_pages);
mm/memcontrol.c
2113
page_counter_uncharge(&memcg->memsw, nr_pages);
mm/memcontrol.c
214
struct mem_cgroup_per_node *pn = memcg->nodeinfo[nid];
mm/memcontrol.c
2177
static void refill_stock(struct mem_cgroup *memcg, unsigned int nr_pages)
mm/memcontrol.c
2193
VM_WARN_ON_ONCE(mem_cgroup_is_root(memcg));
mm/memcontrol.c
2201
memcg_uncharge(memcg, nr_pages);
mm/memcontrol.c
2210
if (memcg == READ_ONCE(stock->cached[i])) {
mm/memcontrol.c
222
WRITE_ONCE(iter->memcg, parent);
mm/memcontrol.c
2228
css_get(&memcg->css);
mm/memcontrol.c
2229
WRITE_ONCE(stock->cached[i], memcg);
mm/memcontrol.c
2239
struct mem_cgroup *memcg;
mm/memcontrol.c
2245
memcg = READ_ONCE(stock->cached[i]);
mm/memcontrol.c
2246
if (!memcg)
mm/memcontrol.c
2250
mem_cgroup_is_descendant(memcg, root_memcg)) {
mm/memcontrol.c
230
static void __mem_cgroup_flush_stats(struct mem_cgroup *memcg, bool force);
mm/memcontrol.c
232
static inline void reparent_state_local(struct mem_cgroup *memcg, struct mem_cgroup *parent)
mm/memcontrol.c
2328
static unsigned long reclaim_high(struct mem_cgroup *memcg,
mm/memcontrol.c
2337
if (page_counter_read(&memcg->memory) <=
mm/memcontrol.c
2338
READ_ONCE(memcg->memory.high))
mm/memcontrol.c
2341
memcg_memory_event(memcg, MEMCG_HIGH);
mm/memcontrol.c
2344
nr_reclaimed += try_to_free_mem_cgroup_pages(memcg, nr_pages,
mm/memcontrol.c
2349
} while ((memcg = parent_mem_cgroup(memcg)) &&
mm/memcontrol.c
2350
!mem_cgroup_is_root(memcg));
mm/memcontrol.c
2357
struct mem_cgroup *memcg;
mm/memcontrol.c
2359
memcg = container_of(work, struct mem_cgroup, high_work);
mm/memcontrol.c
2360
reclaim_high(memcg, MEMCG_CHARGE_BATCH, GFP_KERNEL);
mm/memcontrol.c
243
__mem_cgroup_flush_stats(memcg, true);
mm/memcontrol.c
2434
static u64 mem_find_max_overage(struct mem_cgroup *memcg)
mm/memcontrol.c
2439
overage = calculate_overage(page_counter_read(&memcg->memory),
mm/memcontrol.c
2440
READ_ONCE(memcg->memory.high));
mm/memcontrol.c
2442
} while ((memcg = parent_mem_cgroup(memcg)) &&
mm/memcontrol.c
2443
!mem_cgroup_is_root(memcg));
mm/memcontrol.c
2448
static u64 swap_find_max_overage(struct mem_cgroup *memcg)
mm/memcontrol.c
2453
overage = calculate_overage(page_counter_read(&memcg->swap),
mm/memcontrol.c
2454
READ_ONCE(memcg->swap.high));
mm/memcontrol.c
2456
memcg_memory_event(memcg, MEMCG_SWAP_HIGH);
mm/memcontrol.c
2458
} while ((memcg = parent_mem_cgroup(memcg)) &&
mm/memcontrol.c
2459
!mem_cgroup_is_root(memcg));
mm/memcontrol.c
246
reparent_memcg1_state_local(memcg, parent);
mm/memcontrol.c
2468
static unsigned long calculate_high_delay(struct mem_cgroup *memcg,
mm/memcontrol.c
247
reparent_memcg1_lruvec_state_local(memcg, parent);
mm/memcontrol.c
2512
struct mem_cgroup *memcg;
mm/memcontrol.c
2515
memcg = get_mem_cgroup_from_mm(current->mm);
mm/memcontrol.c
252
static inline void reparent_state_local(struct mem_cgroup *memcg, struct mem_cgroup *parent)
mm/memcontrol.c
2539
nr_reclaimed = reclaim_high(memcg,
mm/memcontrol.c
2547
penalty_jiffies = calculate_high_delay(memcg, nr_pages,
mm/memcontrol.c
2548
mem_find_max_overage(memcg));
mm/memcontrol.c
2550
penalty_jiffies += calculate_high_delay(memcg, nr_pages,
mm/memcontrol.c
2551
swap_find_max_overage(memcg));
mm/memcontrol.c
257
static inline void reparent_locks(struct mem_cgroup *memcg, struct mem_cgroup *parent, int nid)
mm/memcontrol.c
2592
css_put(&memcg->css);
mm/memcontrol.c
2595
static int try_charge_memcg(struct mem_cgroup *memcg, gfp_t gfp_mask,
mm/memcontrol.c
260
spin_lock_nested(&mem_cgroup_lruvec(memcg, NODE_DATA(nid))->lru_lock, 1);
mm/memcontrol.c
2611
if (consume_stock(memcg, nr_pages))
mm/memcontrol.c
2620
page_counter_try_charge(&memcg->memsw, batch, &counter)) {
mm/memcontrol.c
2621
if (page_counter_try_charge(&memcg->memory, batch, &counter))
mm/memcontrol.c
2624
page_counter_uncharge(&memcg->memsw, batch);
mm/memcontrol.c
264
static inline void reparent_unlocks(struct mem_cgroup *memcg, struct mem_cgroup *parent, int nid)
mm/memcontrol.c
267
spin_unlock(&mem_cgroup_lruvec(memcg, NODE_DATA(nid))->lru_lock);
mm/memcontrol.c
271
static void memcg_reparent_objcgs(struct mem_cgroup *memcg)
mm/memcontrol.c
2725
page_counter_charge(&memcg->memory, nr_pages);
mm/memcontrol.c
2727
page_counter_charge(&memcg->memsw, nr_pages);
mm/memcontrol.c
2733
refill_stock(memcg, batch - nr_pages);
mm/memcontrol.c
274
struct mem_cgroup *parent = parent_mem_cgroup(memcg);
mm/memcontrol.c
2747
mem_high = page_counter_read(&memcg->memory) >
mm/memcontrol.c
2748
READ_ONCE(memcg->memory.high);
mm/memcontrol.c
2749
swap_high = page_counter_read(&memcg->swap) >
mm/memcontrol.c
2750
READ_ONCE(memcg->swap.high);
mm/memcontrol.c
2755
schedule_work(&memcg->high_work);
mm/memcontrol.c
2775
} while ((memcg = parent_mem_cgroup(memcg)));
mm/memcontrol.c
2791
static inline int try_charge(struct mem_cgroup *memcg, gfp_t gfp_mask,
mm/memcontrol.c
2794
if (mem_cgroup_is_root(memcg))
mm/memcontrol.c
2797
return try_charge_memcg(memcg, gfp_mask, nr_pages);
mm/memcontrol.c
2814
static inline void account_slab_nmi_safe(struct mem_cgroup *memcg,
mm/memcontrol.c
282
reparent_locks(memcg, parent, nid);
mm/memcontrol.c
2821
lruvec = mem_cgroup_lruvec(memcg, pgdat);
mm/memcontrol.c
2824
struct mem_cgroup_per_node *pn = memcg->nodeinfo[pgdat->node_id];
mm/memcontrol.c
2827
__css_rstat_updated(&memcg->css, smp_processor_id());
mm/memcontrol.c
2835
static inline void account_slab_nmi_safe(struct mem_cgroup *memcg,
mm/memcontrol.c
2841
lruvec = mem_cgroup_lruvec(memcg, pgdat);
mm/memcontrol.c
2850
struct mem_cgroup *memcg;
mm/memcontrol.c
2853
memcg = obj_cgroup_memcg(objcg);
mm/memcontrol.c
2854
account_slab_nmi_safe(memcg, pgdat, idx, nr);
mm/memcontrol.c
286
reparent_unlocks(memcg, parent, nid);
mm/memcontrol.c
290
lru_gen_reparent_memcg(memcg, parent, nid);
mm/memcontrol.c
2910
static struct obj_cgroup *__get_obj_cgroup_from_memcg(struct mem_cgroup *memcg)
mm/memcontrol.c
2914
for (; memcg; memcg = parent_mem_cgroup(memcg)) {
mm/memcontrol.c
2915
struct obj_cgroup *objcg = rcu_dereference(memcg->nodeinfo[nid]->objcg);
mm/memcontrol.c
292
lru_reparent_memcg(memcg, parent, nid);
mm/memcontrol.c
2924
static inline struct obj_cgroup *get_obj_cgroup_from_memcg(struct mem_cgroup *memcg)
mm/memcontrol.c
2929
objcg = __get_obj_cgroup_from_memcg(memcg);
mm/memcontrol.c
2937
struct mem_cgroup *memcg;
mm/memcontrol.c
295
objcg = __memcg_reparent_objcgs(memcg, parent, nid);
mm/memcontrol.c
297
reparent_unlocks(memcg, parent, nid);
mm/memcontrol.c
2972
memcg = mem_cgroup_from_task(current);
mm/memcontrol.c
2973
objcg = __get_obj_cgroup_from_memcg(memcg);
mm/memcontrol.c
2988
struct mem_cgroup *memcg;
mm/memcontrol.c
2996
memcg = current->active_memcg;
mm/memcontrol.c
2997
if (unlikely(memcg))
mm/memcontrol.c
3010
memcg = this_cpu_read(int_active_memcg);
mm/memcontrol.c
3011
if (unlikely(memcg))
mm/memcontrol.c
3017
for (; memcg; memcg = parent_mem_cgroup(memcg)) {
mm/memcontrol.c
302
reparent_state_local(memcg, parent);
mm/memcontrol.c
3024
objcg = rcu_dereference_check(memcg->nodeinfo[nid]->objcg, 1);
mm/memcontrol.c
3044
static inline void account_kmem_nmi_safe(struct mem_cgroup *memcg, int val)
mm/memcontrol.c
3047
mod_memcg_state(memcg, MEMCG_KMEM, val);
mm/memcontrol.c
3050
__css_rstat_updated(&memcg->css, smp_processor_id());
mm/memcontrol.c
3051
atomic_add(val, &memcg->kmem_stat);
mm/memcontrol.c
3055
static inline void account_kmem_nmi_safe(struct mem_cgroup *memcg, int val)
mm/memcontrol.c
3057
mod_memcg_state(memcg, MEMCG_KMEM, val);
mm/memcontrol.c
3069
struct mem_cgroup *memcg;
mm/memcontrol.c
3071
memcg = get_mem_cgroup_from_objcg(objcg);
mm/memcontrol.c
3073
account_kmem_nmi_safe(memcg, -nr_pages);
mm/memcontrol.c
3074
memcg1_account_kmem(memcg, -nr_pages);
mm/memcontrol.c
3075
if (!mem_cgroup_is_root(memcg))
mm/memcontrol.c
3076
refill_stock(memcg, nr_pages);
mm/memcontrol.c
3078
css_put(&memcg->css);
mm/memcontrol.c
3092
struct mem_cgroup *memcg;
mm/memcontrol.c
3095
memcg = get_mem_cgroup_from_objcg(objcg);
mm/memcontrol.c
3097
ret = try_charge_memcg(memcg, gfp, nr_pages);
mm/memcontrol.c
3101
account_kmem_nmi_safe(memcg, nr_pages);
mm/memcontrol.c
3102
memcg1_account_kmem(memcg, nr_pages);
mm/memcontrol.c
3104
css_put(&memcg->css);
mm/memcontrol.c
330
struct mem_cgroup *memcg;
mm/memcontrol.c
3328
struct mem_cgroup *memcg;
mm/memcontrol.c
3330
memcg = get_mem_cgroup_from_objcg(old);
mm/memcontrol.c
3332
mod_memcg_state(memcg, MEMCG_KMEM, -nr_pages);
mm/memcontrol.c
3333
memcg1_account_kmem(memcg, -nr_pages);
mm/memcontrol.c
3334
if (!mem_cgroup_is_root(memcg))
mm/memcontrol.c
3335
memcg_uncharge(memcg, nr_pages);
mm/memcontrol.c
3337
css_put(&memcg->css);
mm/memcontrol.c
335
memcg = get_mem_cgroup_from_folio(folio);
mm/memcontrol.c
337
return memcg ? &memcg->css : &root_mem_cgroup->css;
mm/memcontrol.c
3374
struct mem_cgroup *memcg;
mm/memcontrol.c
3383
memcg = obj_cgroup_memcg(objcg);
mm/memcontrol.c
3384
if (memcg && mem_cgroup_is_descendant(memcg, root_memcg)) {
mm/memcontrol.c
355
struct mem_cgroup *memcg;
mm/memcontrol.c
3569
struct mem_cgroup *memcg;
mm/memcontrol.c
3571
memcg = get_mem_cgroup_from_objcg(objcg);
mm/memcontrol.c
3572
ret = memcg_list_lru_alloc(memcg, lru, flags);
mm/memcontrol.c
3573
css_put(&memcg->css);
mm/memcontrol.c
360
memcg = folio_memcg_check(page_folio(page));
mm/memcontrol.c
362
while (memcg && !css_is_online(&memcg->css))
mm/memcontrol.c
363
memcg = parent_mem_cgroup(memcg);
mm/memcontrol.c
364
if (memcg)
mm/memcontrol.c
365
ino = cgroup_ino(memcg->css.cgroup);
mm/memcontrol.c
3688
static void memcg_online_kmem(struct mem_cgroup *memcg)
mm/memcontrol.c
3693
if (unlikely(mem_cgroup_is_root(memcg)))
mm/memcontrol.c
3698
memcg->kmemcg_id = memcg->id.id;
mm/memcontrol.c
3701
static void memcg_offline_kmem(struct mem_cgroup *memcg)
mm/memcontrol.c
3708
if (unlikely(mem_cgroup_is_root(memcg)))
mm/memcontrol.c
3711
parent = parent_mem_cgroup(memcg);
mm/memcontrol.c
3712
memcg_reparent_list_lrus(memcg, parent);
mm/memcontrol.c
3719
static int memcg_wb_domain_init(struct mem_cgroup *memcg, gfp_t gfp)
mm/memcontrol.c
3721
return wb_domain_init(&memcg->cgwb_domain, gfp);
mm/memcontrol.c
3724
static void memcg_wb_domain_exit(struct mem_cgroup *memcg)
mm/memcontrol.c
3726
wb_domain_exit(&memcg->cgwb_domain);
mm/memcontrol.c
3729
static void memcg_wb_domain_size_changed(struct mem_cgroup *memcg)
mm/memcontrol.c
3731
wb_domain_size_changed(&memcg->cgwb_domain);
mm/memcontrol.c
3736
struct mem_cgroup *memcg = mem_cgroup_from_css(wb->memcg_css);
mm/memcontrol.c
3738
if (!memcg->css.parent)
mm/memcontrol.c
3741
return &memcg->cgwb_domain;
mm/memcontrol.c
3766
struct mem_cgroup *memcg = mem_cgroup_from_css(wb->memcg_css);
mm/memcontrol.c
3769
mem_cgroup_flush_stats_ratelimited(memcg);
mm/memcontrol.c
3771
*pdirty = memcg_page_state(memcg, NR_FILE_DIRTY);
mm/memcontrol.c
3772
*pwriteback = memcg_page_state(memcg, NR_WRITEBACK);
mm/memcontrol.c
3773
*pfilepages = memcg_page_state(memcg, NR_INACTIVE_FILE) +
mm/memcontrol.c
3774
memcg_page_state(memcg, NR_ACTIVE_FILE);
mm/memcontrol.c
3777
while ((parent = parent_mem_cgroup(memcg))) {
mm/memcontrol.c
3778
unsigned long ceiling = min(READ_ONCE(memcg->memory.max),
mm/memcontrol.c
3779
READ_ONCE(memcg->memory.high));
mm/memcontrol.c
3780
unsigned long used = page_counter_read(&memcg->memory);
mm/memcontrol.c
3783
memcg = parent;
mm/memcontrol.c
3834
struct mem_cgroup *memcg = folio_memcg(folio);
mm/memcontrol.c
3849
frn = &memcg->cgwb_frn[i];
mm/memcontrol.c
3876
frn = &memcg->cgwb_frn[oldest];
mm/memcontrol.c
3886
struct mem_cgroup *memcg = mem_cgroup_from_css(wb->memcg_css);
mm/memcontrol.c
3892
struct memcg_cgwb_frn *frn = &memcg->cgwb_frn[i];
mm/memcontrol.c
3913
static int memcg_wb_domain_init(struct mem_cgroup *memcg, gfp_t gfp)
mm/memcontrol.c
3918
static void memcg_wb_domain_exit(struct mem_cgroup *memcg)
mm/memcontrol.c
3922
static void memcg_wb_domain_size_changed(struct mem_cgroup *memcg)
mm/memcontrol.c
3955
static void mem_cgroup_private_id_remove(struct mem_cgroup *memcg)
mm/memcontrol.c
3957
if (memcg->id.id > 0) {
mm/memcontrol.c
3958
xa_erase(&mem_cgroup_private_ids, memcg->id.id);
mm/memcontrol.c
3959
memcg->id.id = 0;
mm/memcontrol.c
3963
static inline void mem_cgroup_private_id_put(struct mem_cgroup *memcg, unsigned int n)
mm/memcontrol.c
3965
if (refcount_sub_and_test(n, &memcg->id.ref)) {
mm/memcontrol.c
3966
mem_cgroup_private_id_remove(memcg);
mm/memcontrol.c
3969
css_put(&memcg->css);
mm/memcontrol.c
3973
struct mem_cgroup *mem_cgroup_private_id_get_online(struct mem_cgroup *memcg, unsigned int n)
mm/memcontrol.c
3975
while (!refcount_add_not_zero(n, &memcg->id.ref)) {
mm/memcontrol.c
3980
if (WARN_ON_ONCE(mem_cgroup_is_root(memcg))) {
mm/memcontrol.c
3984
memcg = parent_mem_cgroup(memcg);
mm/memcontrol.c
3986
return memcg;
mm/memcontrol.c
4005
struct mem_cgroup *memcg = NULL;
mm/memcontrol.c
4013
memcg = container_of(css, struct mem_cgroup, css);
mm/memcontrol.c
4017
return memcg;
mm/memcontrol.c
4030
static bool alloc_mem_cgroup_per_node_info(struct mem_cgroup *memcg, int node)
mm/memcontrol.c
4052
pn->memcg = memcg;
mm/memcontrol.c
4054
memcg->nodeinfo[node] = pn;
mm/memcontrol.c
4061
static void __mem_cgroup_free(struct mem_cgroup *memcg)
mm/memcontrol.c
4066
struct mem_cgroup_per_node *pn = memcg->nodeinfo[node];
mm/memcontrol.c
4073
memcg1_free_events(memcg);
mm/memcontrol.c
4074
kfree(memcg->vmstats);
mm/memcontrol.c
4075
free_percpu(memcg->vmstats_percpu);
mm/memcontrol.c
4076
kfree(memcg);
mm/memcontrol.c
4079
static void mem_cgroup_free(struct mem_cgroup *memcg)
mm/memcontrol.c
4081
lru_gen_exit_memcg(memcg);
mm/memcontrol.c
4082
memcg_wb_domain_exit(memcg);
mm/memcontrol.c
4083
__mem_cgroup_free(memcg);
mm/memcontrol.c
4090
struct mem_cgroup *memcg;
mm/memcontrol.c
4095
memcg = kmem_cache_zalloc(memcg_cachep, GFP_KERNEL);
mm/memcontrol.c
4096
if (!memcg)
mm/memcontrol.c
4099
error = xa_alloc(&mem_cgroup_private_ids, &memcg->id.id, NULL,
mm/memcontrol.c
4105
memcg->vmstats = kzalloc_obj(struct memcg_vmstats, GFP_KERNEL_ACCOUNT);
mm/memcontrol.c
4106
if (!memcg->vmstats)
mm/memcontrol.c
4109
memcg->vmstats_percpu = alloc_percpu_gfp(struct memcg_vmstats_percpu,
mm/memcontrol.c
4111
if (!memcg->vmstats_percpu)
mm/memcontrol.c
4114
if (!memcg1_alloc_events(memcg))
mm/memcontrol.c
4119
statc = per_cpu_ptr(memcg->vmstats_percpu, cpu);
mm/memcontrol.c
4121
statc->vmstats = memcg->vmstats;
mm/memcontrol.c
4125
if (!alloc_mem_cgroup_per_node_info(memcg, node))
mm/memcontrol.c
4128
if (memcg_wb_domain_init(memcg, GFP_KERNEL))
mm/memcontrol.c
4131
INIT_WORK(&memcg->high_work, high_work_func);
mm/memcontrol.c
4132
vmpressure_init(&memcg->vmpressure);
mm/memcontrol.c
4133
INIT_LIST_HEAD(&memcg->memory_peaks);
mm/memcontrol.c
4134
INIT_LIST_HEAD(&memcg->swap_peaks);
mm/memcontrol.c
4135
spin_lock_init(&memcg->peaks_lock);
mm/memcontrol.c
4136
memcg->socket_pressure = get_jiffies_64();
mm/memcontrol.c
4138
seqlock_init(&memcg->socket_pressure_seqlock);
mm/memcontrol.c
4140
memcg1_memcg_init(memcg);
mm/memcontrol.c
4141
memcg->kmemcg_id = -1;
mm/memcontrol.c
4143
INIT_LIST_HEAD(&memcg->cgwb_list);
mm/memcontrol.c
4145
memcg->cgwb_frn[i].done =
mm/memcontrol.c
4148
lru_gen_init_memcg(memcg);
mm/memcontrol.c
4149
return memcg;
mm/memcontrol.c
4151
mem_cgroup_private_id_remove(memcg);
mm/memcontrol.c
4152
__mem_cgroup_free(memcg);
mm/memcontrol.c
4160
struct mem_cgroup *memcg, *old_memcg;
mm/memcontrol.c
4164
memcg = mem_cgroup_alloc(parent);
mm/memcontrol.c
4166
if (IS_ERR(memcg))
mm/memcontrol.c
4167
return ERR_CAST(memcg);
mm/memcontrol.c
4169
page_counter_set_high(&memcg->memory, PAGE_COUNTER_MAX);
mm/memcontrol.c
4170
memcg1_soft_limit_reset(memcg);
mm/memcontrol.c
4172
memcg->zswap_max = PAGE_COUNTER_MAX;
mm/memcontrol.c
4173
WRITE_ONCE(memcg->zswap_writeback, true);
mm/memcontrol.c
4175
page_counter_set_high(&memcg->swap, PAGE_COUNTER_MAX);
mm/memcontrol.c
4177
WRITE_ONCE(memcg->swappiness, mem_cgroup_swappiness(parent));
mm/memcontrol.c
4179
page_counter_init(&memcg->memory, &parent->memory, memcg_on_dfl);
mm/memcontrol.c
4180
page_counter_init(&memcg->swap, &parent->swap, false);
mm/memcontrol.c
4182
memcg->memory.track_failcnt = !memcg_on_dfl;
mm/memcontrol.c
4183
WRITE_ONCE(memcg->oom_kill_disable, READ_ONCE(parent->oom_kill_disable));
mm/memcontrol.c
4184
page_counter_init(&memcg->kmem, &parent->kmem, false);
mm/memcontrol.c
4185
page_counter_init(&memcg->tcpmem, &parent->tcpmem, false);
mm/memcontrol.c
4190
page_counter_init(&memcg->memory, NULL, true);
mm/memcontrol.c
4191
page_counter_init(&memcg->swap, NULL, false);
mm/memcontrol.c
4193
page_counter_init(&memcg->kmem, NULL, false);
mm/memcontrol.c
4194
page_counter_init(&memcg->tcpmem, NULL, false);
mm/memcontrol.c
4196
root_mem_cgroup = memcg;
mm/memcontrol.c
4197
return &memcg->css;
mm/memcontrol.c
4206
return &memcg->css;
mm/memcontrol.c
4211
struct mem_cgroup *memcg = mem_cgroup_from_css(css);
mm/memcontrol.c
4215
memcg_online_kmem(memcg);
mm/memcontrol.c
4222
if (alloc_shrinker_info(memcg))
mm/memcontrol.c
4230
if (unlikely(mem_cgroup_is_root(memcg)))
mm/memcontrol.c
4233
objcg->memcg = memcg;
mm/memcontrol.c
4234
rcu_assign_pointer(memcg->nodeinfo[nid]->objcg, objcg);
mm/memcontrol.c
4236
memcg->nodeinfo[nid]->orig_objcg = objcg;
mm/memcontrol.c
4239
if (unlikely(mem_cgroup_is_root(memcg)) && !mem_cgroup_disabled())
mm/memcontrol.c
4242
lru_gen_online_memcg(memcg);
mm/memcontrol.c
4245
refcount_set(&memcg->id.ref, 1);
mm/memcontrol.c
4258
xa_store(&mem_cgroup_private_ids, memcg->id.id, memcg, GFP_KERNEL);
mm/memcontrol.c
4263
struct mem_cgroup_per_node *pn = memcg->nodeinfo[nid];
mm/memcontrol.c
4279
free_shrinker_info(memcg);
mm/memcontrol.c
4281
memcg_offline_kmem(memcg);
mm/memcontrol.c
4282
mem_cgroup_private_id_remove(memcg);
mm/memcontrol.c
4288
struct mem_cgroup *memcg = mem_cgroup_from_css(css);
mm/memcontrol.c
4290
memcg1_css_offline(memcg);
mm/memcontrol.c
4292
page_counter_set_min(&memcg->memory, 0);
mm/memcontrol.c
4293
page_counter_set_low(&memcg->memory, 0);
mm/memcontrol.c
4295
zswap_memcg_offline_cleanup(memcg);
mm/memcontrol.c
4297
memcg_offline_kmem(memcg);
mm/memcontrol.c
4303
memcg_reparent_objcgs(memcg);
mm/memcontrol.c
4304
reparent_shrinker_deferred(memcg);
mm/memcontrol.c
4305
wb_memcg_offline(memcg);
mm/memcontrol.c
4306
lru_gen_offline_memcg(memcg);
mm/memcontrol.c
4308
drain_all_stock(memcg);
mm/memcontrol.c
4310
mem_cgroup_private_id_put(memcg, 1);
mm/memcontrol.c
4315
struct mem_cgroup *memcg = mem_cgroup_from_css(css);
mm/memcontrol.c
4317
invalidate_reclaim_iterators(memcg);
mm/memcontrol.c
4318
lru_gen_release_memcg(memcg);
mm/memcontrol.c
4323
struct mem_cgroup *memcg = mem_cgroup_from_css(css);
mm/memcontrol.c
4328
wb_wait_for_completion(&memcg->cgwb_frn[i].done);
mm/memcontrol.c
4333
if (!cgroup_subsys_on_dfl(memory_cgrp_subsys) && memcg1_tcpmem_active(memcg))
mm/memcontrol.c
4339
vmpressure_cleanup(&memcg->vmpressure);
mm/memcontrol.c
4340
cancel_work_sync(&memcg->high_work);
mm/memcontrol.c
4341
memcg1_remove_from_trees(memcg);
mm/memcontrol.c
4342
free_shrinker_info(memcg);
mm/memcontrol.c
4343
mem_cgroup_free(memcg);
mm/memcontrol.c
4361
struct mem_cgroup *memcg = mem_cgroup_from_css(css);
mm/memcontrol.c
4363
page_counter_set_max(&memcg->memory, PAGE_COUNTER_MAX);
mm/memcontrol.c
4364
page_counter_set_max(&memcg->swap, PAGE_COUNTER_MAX);
mm/memcontrol.c
4366
page_counter_set_max(&memcg->kmem, PAGE_COUNTER_MAX);
mm/memcontrol.c
4367
page_counter_set_max(&memcg->tcpmem, PAGE_COUNTER_MAX);
mm/memcontrol.c
4369
page_counter_set_min(&memcg->memory, 0);
mm/memcontrol.c
4370
page_counter_set_low(&memcg->memory, 0);
mm/memcontrol.c
4371
page_counter_set_high(&memcg->memory, PAGE_COUNTER_MAX);
mm/memcontrol.c
4372
memcg1_soft_limit_reset(memcg);
mm/memcontrol.c
4373
page_counter_set_high(&memcg->swap, PAGE_COUNTER_MAX);
mm/memcontrol.c
4374
memcg_wb_domain_size_changed(memcg);
mm/memcontrol.c
4431
static void flush_nmi_stats(struct mem_cgroup *memcg, struct mem_cgroup *parent,
mm/memcontrol.c
4436
if (atomic_read(&memcg->kmem_stat)) {
mm/memcontrol.c
4437
int kmem = atomic_xchg(&memcg->kmem_stat, 0);
mm/memcontrol.c
4440
memcg->vmstats->state[index] += kmem;
mm/memcontrol.c
4446
struct mem_cgroup_per_node *pn = memcg->nodeinfo[nid];
mm/memcontrol.c
4460
memcg->vmstats->state[index] += slab;
mm/memcontrol.c
4471
memcg->vmstats->state[index] += slab;
mm/memcontrol.c
4478
static void flush_nmi_stats(struct mem_cgroup *memcg, struct mem_cgroup *parent,
mm/memcontrol.c
4485
struct mem_cgroup *memcg = mem_cgroup_from_css(css);
mm/memcontrol.c
4486
struct mem_cgroup *parent = parent_mem_cgroup(memcg);
mm/memcontrol.c
4491
flush_nmi_stats(memcg, parent, cpu);
mm/memcontrol.c
4493
statc = per_cpu_ptr(memcg->vmstats_percpu, cpu);
mm/memcontrol.c
4496
.aggregate = memcg->vmstats->state,
mm/memcontrol.c
4497
.local = memcg->vmstats->state_local,
mm/memcontrol.c
4498
.pending = memcg->vmstats->state_pending,
mm/memcontrol.c
4507
.aggregate = memcg->vmstats->events,
mm/memcontrol.c
4508
.local = memcg->vmstats->events_local,
mm/memcontrol.c
4509
.pending = memcg->vmstats->events_pending,
mm/memcontrol.c
4518
struct mem_cgroup_per_node *pn = memcg->nodeinfo[nid];
mm/memcontrol.c
4542
if (atomic_long_read(&memcg->vmstats->stats_updates))
mm/memcontrol.c
4543
atomic_long_set(&memcg->vmstats->stats_updates, 0);
mm/memcontrol.c
4626
struct mem_cgroup *memcg = mem_cgroup_from_css(css);
mm/memcontrol.c
4628
return (u64)page_counter_read(&memcg->memory) * PAGE_SIZE;
mm/memcontrol.c
4650
struct mem_cgroup *memcg = mem_cgroup_from_css(seq_css(sf));
mm/memcontrol.c
4652
return peak_show(sf, v, &memcg->memory);
mm/memcontrol.c
4665
struct mem_cgroup *memcg = mem_cgroup_from_css(of_css(of));
mm/memcontrol.c
4672
spin_lock(&memcg->peaks_lock);
mm/memcontrol.c
4674
spin_unlock(&memcg->peaks_lock);
mm/memcontrol.c
4683
struct mem_cgroup *memcg = mem_cgroup_from_css(of_css(of));
mm/memcontrol.c
4686
spin_lock(&memcg->peaks_lock);
mm/memcontrol.c
4700
spin_unlock(&memcg->peaks_lock);
mm/memcontrol.c
4708
struct mem_cgroup *memcg = mem_cgroup_from_css(of_css(of));
mm/memcontrol.c
4710
return peak_write(of, buf, nbytes, off, &memcg->memory,
mm/memcontrol.c
4711
&memcg->memory_peaks);
mm/memcontrol.c
4725
struct mem_cgroup *memcg = mem_cgroup_from_css(of_css(of));
mm/memcontrol.c
4734
page_counter_set_min(&memcg->memory, min);
mm/memcontrol.c
4748
struct mem_cgroup *memcg = mem_cgroup_from_css(of_css(of));
mm/memcontrol.c
4757
page_counter_set_low(&memcg->memory, low);
mm/memcontrol.c
4771
struct mem_cgroup *memcg = mem_cgroup_from_css(of_css(of));
mm/memcontrol.c
4782
page_counter_set_high(&memcg->memory, high);
mm/memcontrol.c
4788
unsigned long nr_pages = page_counter_read(&memcg->memory);
mm/memcontrol.c
4798
drain_all_stock(memcg);
mm/memcontrol.c
4803
reclaimed = try_to_free_mem_cgroup_pages(memcg, nr_pages - high,
mm/memcontrol.c
4810
memcg_wb_domain_size_changed(memcg);
mm/memcontrol.c
4823
struct mem_cgroup *memcg = mem_cgroup_from_css(of_css(of));
mm/memcontrol.c
4834
xchg(&memcg->memory.max, max);
mm/memcontrol.c
4840
unsigned long nr_pages = page_counter_read(&memcg->memory);
mm/memcontrol.c
4849
drain_all_stock(memcg);
mm/memcontrol.c
4855
if (!try_to_free_mem_cgroup_pages(memcg, nr_pages - max,
mm/memcontrol.c
4861
memcg_memory_event(memcg, MEMCG_OOM);
mm/memcontrol.c
4862
if (!mem_cgroup_out_of_memory(memcg, GFP_KERNEL, 0))
mm/memcontrol.c
4867
memcg_wb_domain_size_changed(memcg);
mm/memcontrol.c
4891
struct mem_cgroup *memcg = mem_cgroup_from_seq(m);
mm/memcontrol.c
4893
__memory_events_show(m, memcg->memory_events);
mm/memcontrol.c
4899
struct mem_cgroup *memcg = mem_cgroup_from_seq(m);
mm/memcontrol.c
4901
__memory_events_show(m, memcg->memory_events_local);
mm/memcontrol.c
4907
struct mem_cgroup *memcg = mem_cgroup_from_seq(m);
mm/memcontrol.c
4914
memory_stat_format(memcg, &s);
mm/memcontrol.c
4931
struct mem_cgroup *memcg = mem_cgroup_from_seq(m);
mm/memcontrol.c
4933
mem_cgroup_flush_stats(memcg);
mm/memcontrol.c
4946
lruvec = mem_cgroup_lruvec(memcg, NODE_DATA(nid));
mm/memcontrol.c
4960
struct mem_cgroup *memcg = mem_cgroup_from_seq(m);
mm/memcontrol.c
4962
seq_printf(m, "%d\n", READ_ONCE(memcg->oom_group));
mm/memcontrol.c
4970
struct mem_cgroup *memcg = mem_cgroup_from_css(of_css(of));
mm/memcontrol.c
4984
WRITE_ONCE(memcg->oom_group, oom_group);
mm/memcontrol.c
4992
struct mem_cgroup *memcg = mem_cgroup_from_css(of_css(of));
mm/memcontrol.c
4995
ret = user_proactive_reclaim(buf, memcg, NULL);
mm/memcontrol.c
5103
struct mem_cgroup *memcg)
mm/memcontrol.c
5114
page_counter_calculate_protection(&root->memory, &memcg->memory, recursive_protection);
mm/memcontrol.c
5117
static int charge_memcg(struct folio *folio, struct mem_cgroup *memcg,
mm/memcontrol.c
5123
objcg = get_obj_cgroup_from_memcg(memcg);
mm/memcontrol.c
5126
ret = try_charge_memcg(memcg, gfp, folio_nr_pages(folio));
mm/memcontrol.c
5132
memcg1_commit_charge(folio, memcg);
mm/memcontrol.c
5139
struct mem_cgroup *memcg;
mm/memcontrol.c
5142
memcg = get_mem_cgroup_from_mm(mm);
mm/memcontrol.c
5143
ret = charge_memcg(folio, memcg, gfp);
mm/memcontrol.c
5144
css_put(&memcg->css);
mm/memcontrol.c
5163
struct mem_cgroup *memcg = get_mem_cgroup_from_current();
mm/memcontrol.c
5172
!memcg || !cgroup_subsys_on_dfl(memory_cgrp_subsys))
mm/memcontrol.c
5175
if (charge_memcg(folio, memcg, gfp))
mm/memcontrol.c
5179
mem_cgroup_put(memcg);
mm/memcontrol.c
5198
struct mem_cgroup *memcg;
mm/memcontrol.c
5205
memcg = mem_cgroup_from_private_id(id);
mm/memcontrol.c
5206
if (!memcg || !css_tryget_online(&memcg->css))
mm/memcontrol.c
5207
memcg = get_mem_cgroup_from_mm(mm);
mm/memcontrol.c
5210
ret = charge_memcg(folio, memcg, gfp);
mm/memcontrol.c
5212
css_put(&memcg->css);
mm/memcontrol.c
5231
struct mem_cgroup *memcg;
mm/memcontrol.c
5234
memcg = obj_cgroup_memcg(ug->objcg);
mm/memcontrol.c
5236
memcg_uncharge(memcg, ug->nr_memory);
mm/memcontrol.c
5238
mod_memcg_state(memcg, MEMCG_KMEM, -ug->nr_kmem);
mm/memcontrol.c
5239
memcg1_account_kmem(memcg, -ug->nr_kmem);
mm/memcontrol.c
5241
memcg1_oom_recover(memcg);
mm/memcontrol.c
5244
memcg1_uncharge_batch(memcg, ug->pgpgout, ug->nr_memory, ug->nid);
mm/memcontrol.c
532
void reparent_memcg_lruvec_state_local(struct mem_cgroup *memcg,
mm/memcontrol.c
5334
struct mem_cgroup *memcg;
mm/memcontrol.c
5356
memcg = obj_cgroup_memcg(objcg);
mm/memcontrol.c
5359
page_counter_charge(&memcg->memory, nr_pages);
mm/memcontrol.c
5361
page_counter_charge(&memcg->memsw, nr_pages);
mm/memcontrol.c
5366
memcg1_commit_charge(new, memcg);
mm/memcontrol.c
538
struct lruvec *child_lruvec = mem_cgroup_lruvec(memcg, NODE_DATA(nid));
mm/memcontrol.c
5417
struct mem_cgroup *memcg;
mm/memcontrol.c
5427
memcg = mem_cgroup_from_task(current);
mm/memcontrol.c
5428
if (mem_cgroup_is_root(memcg))
mm/memcontrol.c
5430
if (!cgroup_subsys_on_dfl(memory_cgrp_subsys) && !memcg1_tcpmem_active(memcg))
mm/memcontrol.c
5432
if (css_tryget(&memcg->css))
mm/memcontrol.c
5433
sk->sk_memcg = memcg;
mm/memcontrol.c
5440
struct mem_cgroup *memcg = mem_cgroup_from_sk(sk);
mm/memcontrol.c
5442
if (memcg)
mm/memcontrol.c
5443
css_put(&memcg->css);
mm/memcontrol.c
5448
struct mem_cgroup *memcg;
mm/memcontrol.c
5455
memcg = mem_cgroup_from_sk(sk);
mm/memcontrol.c
5456
if (memcg)
mm/memcontrol.c
5457
css_get(&memcg->css);
mm/memcontrol.c
5474
struct mem_cgroup *memcg = mem_cgroup_from_sk(sk);
mm/memcontrol.c
5477
return memcg1_charge_skmem(memcg, nr_pages, gfp_mask);
mm/memcontrol.c
5479
if (try_charge_memcg(memcg, gfp_mask, nr_pages) == 0) {
mm/memcontrol.c
5480
mod_memcg_state(memcg, MEMCG_SOCK, nr_pages);
mm/memcontrol.c
5494
struct mem_cgroup *memcg = mem_cgroup_from_sk(sk);
mm/memcontrol.c
5497
memcg1_uncharge_skmem(memcg, nr_pages);
mm/memcontrol.c
5501
mod_memcg_state(memcg, MEMCG_SOCK, -nr_pages);
mm/memcontrol.c
5503
refill_stock(memcg, nr_pages);
mm/memcontrol.c
5587
struct mem_cgroup *memcg;
mm/memcontrol.c
5599
memcg = obj_cgroup_memcg(objcg);
mm/memcontrol.c
5601
memcg_memory_event(memcg, MEMCG_SWAP_FAIL);
mm/memcontrol.c
5606
memcg = mem_cgroup_private_id_get_online(memcg, nr_pages);
mm/memcontrol.c
5610
if (!mem_cgroup_is_root(memcg) &&
mm/memcontrol.c
5611
!page_counter_try_charge(&memcg->swap, nr_pages, &counter)) {
mm/memcontrol.c
5612
memcg_memory_event(memcg, MEMCG_SWAP_MAX);
mm/memcontrol.c
5613
memcg_memory_event(memcg, MEMCG_SWAP_FAIL);
mm/memcontrol.c
5614
mem_cgroup_private_id_put(memcg, nr_pages);
mm/memcontrol.c
5617
mod_memcg_state(memcg, MEMCG_SWAP, nr_pages);
mm/memcontrol.c
5621
mem_cgroup_private_id(memcg));
mm/memcontrol.c
5634
struct mem_cgroup *memcg;
mm/memcontrol.c
5637
memcg = mem_cgroup_from_private_id(id);
mm/memcontrol.c
5638
if (memcg) {
mm/memcontrol.c
5639
if (!mem_cgroup_is_root(memcg)) {
mm/memcontrol.c
5641
page_counter_uncharge(&memcg->memsw, nr_pages);
mm/memcontrol.c
5643
page_counter_uncharge(&memcg->swap, nr_pages);
mm/memcontrol.c
5645
mod_memcg_state(memcg, MEMCG_SWAP, -nr_pages);
mm/memcontrol.c
5646
mem_cgroup_private_id_put(memcg, nr_pages);
mm/memcontrol.c
5651
long mem_cgroup_get_nr_swap_pages(struct mem_cgroup *memcg)
mm/memcontrol.c
5657
for (; !mem_cgroup_is_root(memcg); memcg = parent_mem_cgroup(memcg))
mm/memcontrol.c
5659
READ_ONCE(memcg->swap.max) -
mm/memcontrol.c
5660
page_counter_read(&memcg->swap));
mm/memcontrol.c
5666
struct mem_cgroup *memcg;
mm/memcontrol.c
5677
memcg = folio_memcg(folio);
mm/memcontrol.c
5678
for (; !mem_cgroup_is_root(memcg); memcg = parent_mem_cgroup(memcg)) {
mm/memcontrol.c
5679
unsigned long usage = page_counter_read(&memcg->swap);
mm/memcontrol.c
5681
if (usage * 2 >= READ_ONCE(memcg->swap.high) ||
mm/memcontrol.c
5682
usage * 2 >= READ_ONCE(memcg->swap.max)) {
mm/memcontrol.c
5708
struct mem_cgroup *memcg = mem_cgroup_from_css(css);
mm/memcontrol.c
5710
return (u64)page_counter_read(&memcg->swap) * PAGE_SIZE;
mm/memcontrol.c
5715
struct mem_cgroup *memcg = mem_cgroup_from_css(seq_css(sf));
mm/memcontrol.c
5717
return peak_show(sf, v, &memcg->swap);
mm/memcontrol.c
5723
struct mem_cgroup *memcg = mem_cgroup_from_css(of_css(of));
mm/memcontrol.c
5725
return peak_write(of, buf, nbytes, off, &memcg->swap,
mm/memcontrol.c
5726
&memcg->swap_peaks);
mm/memcontrol.c
5738
struct mem_cgroup *memcg = mem_cgroup_from_css(of_css(of));
mm/memcontrol.c
5747
page_counter_set_high(&memcg->swap, high);
mm/memcontrol.c
5761
struct mem_cgroup *memcg = mem_cgroup_from_css(of_css(of));
mm/memcontrol.c
5770
xchg(&memcg->swap.max, max);
mm/memcontrol.c
5777
struct mem_cgroup *memcg = mem_cgroup_from_seq(m);
mm/memcontrol.c
5780
atomic_long_read(&memcg->memory_events[MEMCG_SWAP_HIGH]));
mm/memcontrol.c
5782
atomic_long_read(&memcg->memory_events[MEMCG_SWAP_MAX]));
mm/memcontrol.c
5784
atomic_long_read(&memcg->memory_events[MEMCG_SWAP_FAIL]));
mm/memcontrol.c
5839
struct mem_cgroup *memcg, *original_memcg;
mm/memcontrol.c
5846
for (memcg = original_memcg; !mem_cgroup_is_root(memcg);
mm/memcontrol.c
5847
memcg = parent_mem_cgroup(memcg)) {
mm/memcontrol.c
5848
unsigned long max = READ_ONCE(memcg->zswap_max);
mm/memcontrol.c
5859
__mem_cgroup_flush_stats(memcg, true);
mm/memcontrol.c
5860
pages = memcg_page_state(memcg, MEMCG_ZSWAP_B) / PAGE_SIZE;
mm/memcontrol.c
5880
struct mem_cgroup *memcg;
mm/memcontrol.c
5895
memcg = obj_cgroup_memcg(objcg);
mm/memcontrol.c
5896
mod_memcg_state(memcg, MEMCG_ZSWAP_B, size);
mm/memcontrol.c
5897
mod_memcg_state(memcg, MEMCG_ZSWAPPED, 1);
mm/memcontrol.c
5899
mod_memcg_state(memcg, MEMCG_ZSWAP_INCOMP, 1);
mm/memcontrol.c
5912
struct mem_cgroup *memcg;
mm/memcontrol.c
5923
memcg = obj_cgroup_memcg(objcg);
mm/memcontrol.c
5924
mod_memcg_state(memcg, MEMCG_ZSWAP_B, -size);
mm/memcontrol.c
5925
mod_memcg_state(memcg, MEMCG_ZSWAPPED, -1);
mm/memcontrol.c
5927
mod_memcg_state(memcg, MEMCG_ZSWAP_INCOMP, -1);
mm/memcontrol.c
5931
bool mem_cgroup_zswap_writeback_enabled(struct mem_cgroup *memcg)
mm/memcontrol.c
5937
for (; memcg; memcg = parent_mem_cgroup(memcg))
mm/memcontrol.c
5938
if (!READ_ONCE(memcg->zswap_writeback))
mm/memcontrol.c
5947
struct mem_cgroup *memcg = mem_cgroup_from_css(css);
mm/memcontrol.c
5949
mem_cgroup_flush_stats(memcg);
mm/memcontrol.c
5950
return memcg_page_state(memcg, MEMCG_ZSWAP_B);
mm/memcontrol.c
5962
struct mem_cgroup *memcg = mem_cgroup_from_css(of_css(of));
mm/memcontrol.c
5971
xchg(&memcg->zswap_max, max);
mm/memcontrol.c
5978
struct mem_cgroup *memcg = mem_cgroup_from_seq(m);
mm/memcontrol.c
5980
seq_printf(m, "%d\n", READ_ONCE(memcg->zswap_writeback));
mm/memcontrol.c
5987
struct mem_cgroup *memcg = mem_cgroup_from_css(of_css(of));
mm/memcontrol.c
5997
WRITE_ONCE(memcg->zswap_writeback, zswap_writeback);
mm/memcontrol.c
6040
void mem_cgroup_node_filter_allowed(struct mem_cgroup *memcg, nodemask_t *mask)
mm/memcontrol.c
6044
if (!memcg)
mm/memcontrol.c
6053
cpuset_nodes_allowed(memcg->css.cgroup, &allowed);
mm/memcontrol.c
6057
void mem_cgroup_show_protected_memory(struct mem_cgroup *memcg)
mm/memcontrol.c
6062
if (!memcg)
mm/memcontrol.c
6063
memcg = root_mem_cgroup;
mm/memcontrol.c
6066
K(atomic_long_read(&memcg->memory.children_min_usage)),
mm/memcontrol.c
6067
K(atomic_long_read(&memcg->memory.children_low_usage)));
mm/memcontrol.c
672
static inline void memcg_rstat_updated(struct mem_cgroup *memcg, long val,
mm/memcontrol.c
682
__css_rstat_updated(&memcg->css, cpu);
mm/memcontrol.c
683
statc_pcpu = memcg->vmstats_percpu;
mm/memcontrol.c
704
static void __mem_cgroup_flush_stats(struct mem_cgroup *memcg, bool force)
mm/memcontrol.c
706
bool needs_flush = memcg_vmstats_needs_flush(memcg->vmstats);
mm/memcontrol.c
708
trace_memcg_flush_stats(memcg, atomic_long_read(&memcg->vmstats->stats_updates),
mm/memcontrol.c
714
if (mem_cgroup_is_root(memcg))
mm/memcontrol.c
717
css_rstat_flush(&memcg->css);
mm/memcontrol.c
729
void mem_cgroup_flush_stats(struct mem_cgroup *memcg)
mm/memcontrol.c
734
if (!memcg)
mm/memcontrol.c
735
memcg = root_mem_cgroup;
mm/memcontrol.c
737
__mem_cgroup_flush_stats(memcg, false);
mm/memcontrol.c
740
void mem_cgroup_flush_stats_ratelimited(struct mem_cgroup *memcg)
mm/memcontrol.c
744
mem_cgroup_flush_stats(memcg);
mm/memcontrol.c
757
unsigned long memcg_page_state(struct mem_cgroup *memcg, int idx)
mm/memcontrol.c
765
x = READ_ONCE(memcg->vmstats->state[i]);
mm/memcontrol.c
808
static inline struct mem_cgroup *get_non_dying_memcg_start(struct mem_cgroup *memcg,
mm/memcontrol.c
814
return memcg;
mm/memcontrol.c
820
while (memcg_is_dying(memcg))
mm/memcontrol.c
821
memcg = parent_mem_cgroup(memcg);
mm/memcontrol.c
823
return memcg;
mm/memcontrol.c
834
static inline struct mem_cgroup *get_non_dying_memcg_start(struct mem_cgroup *memcg,
mm/memcontrol.c
837
return memcg;
mm/memcontrol.c
845
static void __mod_memcg_state(struct mem_cgroup *memcg,
mm/memcontrol.c
856
this_cpu_add(memcg->vmstats_percpu->state[i], val);
mm/memcontrol.c
858
memcg_rstat_updated(memcg, val, cpu);
mm/memcontrol.c
860
trace_mod_memcg_state(memcg, idx, val);
mm/memcontrol.c
871
void mod_memcg_state(struct mem_cgroup *memcg, enum memcg_stat_item idx,
mm/memcontrol.c
879
memcg = get_non_dying_memcg_start(memcg, &rcu_locked);
mm/memcontrol.c
880
__mod_memcg_state(memcg, idx, val);
mm/memcontrol.c
886
unsigned long memcg_page_state_local(struct mem_cgroup *memcg, int idx)
mm/memcontrol.c
894
x = READ_ONCE(memcg->vmstats->state_local[i]);
mm/memcontrol.c
902
void reparent_memcg_state_local(struct mem_cgroup *memcg,
mm/memcontrol.c
905
unsigned long value = memcg_page_state_local(memcg, idx);
mm/memcontrol.c
907
__mod_memcg_state(memcg, idx, -value);
mm/memcontrol.c
915
struct mem_cgroup *memcg = pn->memcg;
mm/memcontrol.c
925
this_cpu_add(memcg->vmstats_percpu->state[i], val);
mm/memcontrol.c
931
memcg_rstat_updated(memcg, val, cpu);
mm/memcontrol.c
932
trace_mod_memcg_lruvec_state(memcg, idx, val);
mm/memcontrol.c
943
struct mem_cgroup *memcg;
mm/memcontrol.c
947
memcg = get_non_dying_memcg_start(pn->memcg, &rcu_locked);
mm/memcontrol.c
948
pn = memcg->nodeinfo[pgdat->node_id];
mm/memcontrol.c
979
struct mem_cgroup *memcg;
mm/memcontrol.c
984
memcg = folio_memcg(folio);
mm/memcontrol.c
986
if (!memcg) {
mm/memcontrol.c
992
lruvec = mem_cgroup_lruvec(memcg, pgdat);
mm/migrate.c
2751
struct mem_cgroup *memcg = get_mem_cgroup_from_folio(folio);
mm/migrate.c
2752
struct lruvec *lruvec = mem_cgroup_lruvec(memcg, pgdat);
mm/migrate.c
2762
count_memcg_events(memcg, NUMA_PAGE_MIGRATE, nr_succeeded);
mm/migrate.c
2768
mem_cgroup_put(memcg);
mm/migrate.c
674
struct mem_cgroup *memcg;
mm/migrate.c
677
memcg = folio_memcg(folio);
mm/migrate.c
678
old_lruvec = mem_cgroup_lruvec(memcg, oldzone->zone_pgdat);
mm/migrate.c
679
new_lruvec = mem_cgroup_lruvec(memcg, newzone->zone_pgdat);
mm/oom_kill.c
1040
oom_group = mem_cgroup_get_oom_group(victim, oc->memcg);
mm/oom_kill.c
258
oc->totalpages = mem_cgroup_get_max(oc->memcg) ?: 1;
mm/oom_kill.c
367
mem_cgroup_scan_tasks(oc->memcg, oom_evaluate_task, oc);
mm/oom_kill.c
428
mem_cgroup_scan_tasks(oc->memcg, dump_task, oc);
mm/oom_kill.c
451
mem_cgroup_print_oom_context(oc->memcg, victim);
mm/oom_kill.c
466
mem_cgroup_print_oom_meminfo(oc->memcg);
mm/oom_kill.c
472
mem_cgroup_show_protected_memory(oc->memcg);
mm/oom_kill.c
74
return oc->memcg != NULL;
mm/page_alloc.c
4053
.memcg = NULL,
mm/page_io.c
322
struct mem_cgroup *memcg;
mm/page_io.c
328
memcg = folio_memcg(folio);
mm/page_io.c
329
css = cgroup_e_css(memcg->css.cgroup, &io_cgrp_subsys);
mm/page_owner.c
516
struct mem_cgroup *memcg;
mm/page_owner.c
529
memcg = page_memcg_check(page);
mm/page_owner.c
530
if (!memcg)
mm/page_owner.c
533
online = css_is_online(&memcg->css);
mm/page_owner.c
534
cgroup_name(memcg->css.cgroup, name, sizeof(name));
mm/rmap.c
1031
struct mem_cgroup *memcg = pra->memcg;
mm/rmap.c
1046
if (memcg && !mm_match_cgroup(vma->vm_mm, memcg))
mm/rmap.c
1065
struct mem_cgroup *memcg, vm_flags_t *vm_flags)
mm/rmap.c
1070
.memcg = memcg,
mm/rmap.c
911
struct mem_cgroup *memcg;
mm/shrinker.c
103
rcu_assign_pointer(memcg->nodeinfo[nid]->shrinker_info, info);
mm/shrinker.c
110
__free_shrinker_info(memcg);
mm/shrinker.c
115
static struct shrinker_info *shrinker_info_protected(struct mem_cgroup *memcg,
mm/shrinker.c
118
return rcu_dereference_protected(memcg->nodeinfo[nid]->shrinker_info,
mm/shrinker.c
122
static int expand_one_shrinker_info(struct mem_cgroup *memcg, int new_size,
mm/shrinker.c
130
pn = memcg->nodeinfo[nid];
mm/shrinker.c
131
old = shrinker_info_protected(memcg, nid);
mm/shrinker.c
164
struct mem_cgroup *memcg;
mm/shrinker.c
174
memcg = mem_cgroup_iter(NULL, NULL, NULL);
mm/shrinker.c
176
ret = expand_one_shrinker_info(memcg, new_size, old_size,
mm/shrinker.c
179
mem_cgroup_iter_break(NULL, memcg);
mm/shrinker.c
182
} while ((memcg = mem_cgroup_iter(NULL, memcg, NULL)) != NULL);
mm/shrinker.c
205
void set_shrinker_bit(struct mem_cgroup *memcg, int nid, int shrinker_id)
mm/shrinker.c
207
if (shrinker_id >= 0 && memcg && !mem_cgroup_is_root(memcg)) {
mm/shrinker.c
211
info = rcu_dereference(memcg->nodeinfo[nid]->shrinker_info);
mm/shrinker.c
262
struct mem_cgroup *memcg)
mm/shrinker.c
269
info = rcu_dereference(memcg->nodeinfo[nid]->shrinker_info);
mm/shrinker.c
278
struct mem_cgroup *memcg)
mm/shrinker.c
285
info = rcu_dereference(memcg->nodeinfo[nid]->shrinker_info);
mm/shrinker.c
294
void reparent_shrinker_deferred(struct mem_cgroup *memcg)
mm/shrinker.c
298
struct mem_cgroup *parent = parent_mem_cgroup(memcg);
mm/shrinker.c
305
child_info = shrinker_info_protected(memcg, nid);
mm/shrinker.c
329
struct mem_cgroup *memcg)
mm/shrinker.c
335
struct mem_cgroup *memcg)
mm/shrinker.c
349
if (sc->memcg &&
mm/shrinker.c
352
sc->memcg);
mm/shrinker.c
366
if (sc->memcg &&
mm/shrinker.c
369
sc->memcg);
mm/shrinker.c
419
shrinkctl->memcg);
mm/shrinker.c
471
shrinkctl->memcg);
mm/shrinker.c
477
struct mem_cgroup *memcg, int priority)
mm/shrinker.c
483
if (!mem_cgroup_online(memcg))
mm/shrinker.c
523
info = rcu_dereference(memcg->nodeinfo[nid]->shrinker_info);
mm/shrinker.c
538
.memcg = memcg,
mm/shrinker.c
583
set_shrinker_bit(memcg, nid, shrinker_id);
mm/shrinker.c
598
struct mem_cgroup *memcg, int priority)
mm/shrinker.c
62
static void __free_shrinker_info(struct mem_cgroup *memcg)
mm/shrinker.c
624
unsigned long shrink_slab(gfp_t gfp_mask, int nid, struct mem_cgroup *memcg,
mm/shrinker.c
637
if (!mem_cgroup_disabled() && !mem_cgroup_is_root(memcg))
mm/shrinker.c
638
return shrink_slab_memcg(gfp_mask, nid, memcg, priority);
mm/shrinker.c
666
.memcg = memcg,
mm/shrinker.c
71
pn = memcg->nodeinfo[nid];
mm/shrinker.c
79
void free_shrinker_info(struct mem_cgroup *memcg)
mm/shrinker.c
82
__free_shrinker_info(memcg);
mm/shrinker.c
86
int alloc_shrinker_info(struct mem_cgroup *memcg)
mm/shrinker_debug.c
110
struct mem_cgroup *memcg = NULL;
mm/shrinker_debug.c
129
memcg = mem_cgroup_get_from_id(id);
mm/shrinker_debug.c
130
if (!memcg)
mm/shrinker_debug.c
133
if (!mem_cgroup_online(memcg)) {
mm/shrinker_debug.c
134
mem_cgroup_put(memcg);
mm/shrinker_debug.c
142
sc.memcg = memcg;
mm/shrinker_debug.c
148
mem_cgroup_put(memcg);
mm/shrinker_debug.c
19
struct mem_cgroup *memcg,
mm/shrinker_debug.c
30
.memcg = memcg,
mm/shrinker_debug.c
51
struct mem_cgroup *memcg;
mm/shrinker_debug.c
62
memcg = mem_cgroup_iter(NULL, NULL, NULL);
mm/shrinker_debug.c
64
if (memcg && !mem_cgroup_online(memcg))
mm/shrinker_debug.c
68
memcg_aware ? memcg : NULL,
mm/shrinker_debug.c
71
seq_printf(m, "%llu", mem_cgroup_id(memcg));
mm/shrinker_debug.c
78
mem_cgroup_iter_break(NULL, memcg);
mm/shrinker_debug.c
83
mem_cgroup_iter_break(NULL, memcg);
mm/shrinker_debug.c
87
} while ((memcg = mem_cgroup_iter(NULL, memcg, NULL)) != NULL);
mm/swap.c
1160
void lru_reparent_memcg(struct mem_cgroup *memcg, struct mem_cgroup *parent, int nid)
mm/swap.c
1165
child_lruvec = mem_cgroup_lruvec(memcg, NODE_DATA(nid));
mm/vmpressure.c
240
void vmpressure(gfp_t gfp, int order, struct mem_cgroup *memcg, bool tree,
mm/vmpressure.c
256
vmpr = memcg_to_vmpressure(memcg);
mm/vmpressure.c
296
if (!memcg || mem_cgroup_is_root(memcg))
mm/vmpressure.c
328
mem_cgroup_set_socket_pressure(memcg);
mm/vmpressure.c
344
void vmpressure_prio(gfp_t gfp, struct mem_cgroup *memcg, int prio)
mm/vmpressure.c
360
vmpressure(gfp, 0, memcg, true, vmpressure_win, 0);
mm/vmpressure.c
383
int vmpressure_register_event(struct mem_cgroup *memcg,
mm/vmpressure.c
386
struct vmpressure *vmpr = memcg_to_vmpressure(memcg);
mm/vmpressure.c
444
void vmpressure_unregister_event(struct mem_cgroup *memcg,
mm/vmpressure.c
447
struct vmpressure *vmpr = memcg_to_vmpressure(memcg);
mm/vmpressure.c
77
struct mem_cgroup *memcg = vmpressure_to_memcg(vmpr);
mm/vmpressure.c
79
memcg = parent_mem_cgroup(memcg);
mm/vmpressure.c
80
if (!memcg)
mm/vmpressure.c
82
return memcg_to_vmpressure(memcg);
mm/vmscan.c
1017
mem_cgroup_node_filter_allowed(memcg, &allowed_mask);
mm/vmscan.c
1058
struct mem_cgroup *memcg)
mm/vmscan.c
1071
do_demote_pass = can_demote(pgdat->node_id, sc, memcg);
mm/vmscan.c
1548
nr_demoted = demote_folio_list(&demote_folios, pgdat, memcg);
mm/vmscan.c
242
static int sc_swappiness(struct scan_control *sc, struct mem_cgroup *memcg)
mm/vmscan.c
2424
static unsigned long apply_proportional_protection(struct mem_cgroup *memcg,
mm/vmscan.c
2429
mem_cgroup_protection(sc->target_mem_cgroup, memcg, &min, &low, &usage);
mm/vmscan.c
246
return mem_cgroup_swappiness(memcg);
mm/vmscan.c
2497
struct mem_cgroup *memcg = lruvec_memcg(lruvec);
mm/vmscan.c
2498
int swappiness = sc_swappiness(sc, memcg);
mm/vmscan.c
2505
if (!sc->may_swap || !can_reclaim_anon_pages(memcg, pgdat->node_id, sc)) {
mm/vmscan.c
2567
scan = apply_proportional_protection(memcg, sc, lruvec_size);
mm/vmscan.c
2574
if (!scan && !mem_cgroup_online(memcg))
mm/vmscan.c
2589
scan = mem_cgroup_online(memcg) ?
mm/vmscan.c
264
static int sc_swappiness(struct scan_control *sc, struct mem_cgroup *memcg)
mm/vmscan.c
2677
static struct lruvec *get_lruvec(struct mem_cgroup *memcg, int nid)
mm/vmscan.c
2682
if (memcg) {
mm/vmscan.c
2683
struct lruvec *lruvec = &memcg->nodeinfo[nid]->lruvec;
mm/vmscan.c
2699
struct mem_cgroup *memcg = lruvec_memcg(lruvec);
mm/vmscan.c
2705
if (!can_demote(pgdat->node_id, sc, memcg) &&
mm/vmscan.c
2706
mem_cgroup_get_nr_swap_pages(memcg) < MIN_LRU_BATCH)
mm/vmscan.c
2709
return sc_swappiness(sc, memcg);
mm/vmscan.c
2831
static struct lru_gen_mm_list *get_mm_list(struct mem_cgroup *memcg)
mm/vmscan.c
2839
if (memcg)
mm/vmscan.c
2840
return &memcg->mm_list;
mm/vmscan.c
2874
struct mem_cgroup *memcg = get_mem_cgroup_from_mm(mm);
mm/vmscan.c
2875
struct lru_gen_mm_list *mm_list = get_mm_list(memcg);
mm/vmscan.c
2879
VM_WARN_ON_ONCE(mm->lru_gen.memcg);
mm/vmscan.c
2880
mm->lru_gen.memcg = memcg;
mm/vmscan.c
2885
struct lruvec *lruvec = get_lruvec(memcg, nid);
mm/vmscan.c
2902
struct mem_cgroup *memcg = NULL;
mm/vmscan.c
2908
memcg = mm->lru_gen.memcg;
mm/vmscan.c
2910
mm_list = get_mm_list(memcg);
mm/vmscan.c
2915
struct lruvec *lruvec = get_lruvec(memcg, nid);
mm/vmscan.c
2932
mem_cgroup_put(mm->lru_gen.memcg);
mm/vmscan.c
2933
mm->lru_gen.memcg = NULL;
mm/vmscan.c
2940
struct mem_cgroup *memcg;
mm/vmscan.c
2951
if (!mm->lru_gen.memcg)
mm/vmscan.c
2955
memcg = mem_cgroup_from_task(task);
mm/vmscan.c
2957
if (memcg == mm->lru_gen.memcg)
mm/vmscan.c
2969
static struct lru_gen_mm_list *get_mm_list(struct mem_cgroup *memcg)
mm/vmscan.c
3017
struct mem_cgroup *memcg = lruvec_memcg(lruvec);
mm/vmscan.c
3018
struct lru_gen_mm_list *mm_list = get_mm_list(memcg);
mm/vmscan.c
3078
struct mem_cgroup *memcg = lruvec_memcg(lruvec);
mm/vmscan.c
3079
struct lru_gen_mm_list *mm_list = get_mm_list(memcg);
mm/vmscan.c
323
struct mem_cgroup *memcg)
mm/vmscan.c
338
mem_cgroup_node_filter_allowed(memcg, &allowed_mask);
mm/vmscan.c
3411
static struct folio *get_pfn_folio(unsigned long pfn, struct mem_cgroup *memcg,
mm/vmscan.c
342
static inline bool can_reclaim_anon_pages(struct mem_cgroup *memcg,
mm/vmscan.c
3423
if (folio_memcg(folio) != memcg)
mm/vmscan.c
346
if (memcg == NULL) {
mm/vmscan.c
3474
struct mem_cgroup *memcg = lruvec_memcg(walk->lruvec);
mm/vmscan.c
3511
folio = get_pfn_folio(pfn, memcg, pgdat);
mm/vmscan.c
355
if (mem_cgroup_get_nr_swap_pages(memcg) > 0)
mm/vmscan.c
3562
struct mem_cgroup *memcg = lruvec_memcg(walk->lruvec);
mm/vmscan.c
3611
folio = get_pfn_folio(pfn, memcg, pgdat);
mm/vmscan.c
364
return can_demote(nid, sc, memcg);
mm/vmscan.c
409
struct mem_cgroup *memcg = NULL;
mm/vmscan.c
4101
struct mem_cgroup *memcg = lruvec_memcg(lruvec);
mm/vmscan.c
4106
return mem_cgroup_online(memcg) ? (total >> sc->priority) : total;
mm/vmscan.c
411
memcg = mem_cgroup_iter(NULL, NULL, NULL);
mm/vmscan.c
4115
struct mem_cgroup *memcg = lruvec_memcg(lruvec);
mm/vmscan.c
4118
if (mem_cgroup_below_min(NULL, memcg))
mm/vmscan.c
413
freed += shrink_slab(GFP_KERNEL, nid, memcg, 0);
mm/vmscan.c
4135
struct mem_cgroup *memcg;
mm/vmscan.c
414
} while ((memcg = mem_cgroup_iter(NULL, memcg, NULL)) != NULL);
mm/vmscan.c
4143
memcg = mem_cgroup_iter(NULL, NULL, NULL);
mm/vmscan.c
4145
struct lruvec *lruvec = mem_cgroup_lruvec(memcg, pgdat);
mm/vmscan.c
4147
mem_cgroup_calculate_protection(NULL, memcg);
mm/vmscan.c
4151
} while ((memcg = mem_cgroup_iter(NULL, memcg, NULL)));
mm/vmscan.c
4193
struct mem_cgroup *memcg;
mm/vmscan.c
4233
memcg = get_mem_cgroup_from_folio(folio);
mm/vmscan.c
4234
lruvec = mem_cgroup_lruvec(memcg, pgdat);
mm/vmscan.c
4253
folio = get_pfn_folio(pfn, memcg, pgdat);
mm/vmscan.c
4288
mem_cgroup_put(memcg);
mm/vmscan.c
4354
void lru_gen_online_memcg(struct mem_cgroup *memcg)
mm/vmscan.c
4362
struct lruvec *lruvec = get_lruvec(memcg, nid);
mm/vmscan.c
4379
void lru_gen_offline_memcg(struct mem_cgroup *memcg)
mm/vmscan.c
4384
struct lruvec *lruvec = get_lruvec(memcg, nid);
mm/vmscan.c
4390
void lru_gen_release_memcg(struct mem_cgroup *memcg)
mm/vmscan.c
4397
struct lruvec *lruvec = get_lruvec(memcg, nid);
mm/vmscan.c
4416
void lru_gen_soft_reclaim(struct mem_cgroup *memcg, int nid)
mm/vmscan.c
4418
struct lruvec *lruvec = get_lruvec(memcg, nid);
mm/vmscan.c
4425
bool recheck_lru_gen_max_memcg(struct mem_cgroup *memcg, int nid)
mm/vmscan.c
4427
struct lruvec *lruvec = get_lruvec(memcg, nid);
mm/vmscan.c
4438
static void try_to_inc_max_seq_nowalk(struct mem_cgroup *memcg,
mm/vmscan.c
4441
struct lru_gen_mm_list *mm_list = get_mm_list(memcg);
mm/vmscan.c
4443
int swappiness = mem_cgroup_swappiness(memcg);
mm/vmscan.c
4472
void max_lru_gen_memcg(struct mem_cgroup *memcg, int nid)
mm/vmscan.c
4474
struct lruvec *lruvec = get_lruvec(memcg, nid);
mm/vmscan.c
4479
try_to_inc_max_seq_nowalk(memcg, lruvec);
mm/vmscan.c
4544
void lru_gen_reparent_memcg(struct mem_cgroup *memcg, struct mem_cgroup *parent, int nid)
mm/vmscan.c
4551
child_lruvec = get_lruvec(memcg, nid);
mm/vmscan.c
4814
struct mem_cgroup *memcg = lruvec_memcg(lruvec);
mm/vmscan.c
4834
reclaimed = shrink_folio_list(&list, pgdat, sc, &stat, false, memcg);
mm/vmscan.c
4908
struct mem_cgroup *memcg, int swappiness)
mm/vmscan.c
4915
if (!mem_cgroup_online(memcg))
mm/vmscan.c
4918
nr_to_scan = apply_proportional_protection(memcg, sc, evictable);
mm/vmscan.c
4964
struct mem_cgroup *memcg = lruvec_memcg(lruvec);
mm/vmscan.c
4966
nr_to_scan = get_nr_to_scan(lruvec, sc, memcg, swappiness);
mm/vmscan.c
4971
if (mem_cgroup_below_min(sc->target_mem_cgroup, memcg)) {
mm/vmscan.c
5009
struct mem_cgroup *memcg = lruvec_memcg(lruvec);
mm/vmscan.c
5013
if (mem_cgroup_below_min(NULL, memcg))
mm/vmscan.c
5016
if (mem_cgroup_below_low(NULL, memcg)) {
mm/vmscan.c
5021
memcg_memory_event(memcg, MEMCG_LOW);
mm/vmscan.c
5026
shrink_slab(sc->gfp_mask, pgdat->node_id, memcg, sc->priority);
mm/vmscan.c
5029
vmpressure(sc->gfp_mask, sc->order, memcg, false,
mm/vmscan.c
5034
if (need_rotate && mem_cgroup_online(memcg))
mm/vmscan.c
5053
struct mem_cgroup *memcg;
mm/vmscan.c
5060
memcg = NULL;
mm/vmscan.c
5070
mem_cgroup_put(memcg);
mm/vmscan.c
5071
memcg = NULL;
mm/vmscan.c
5077
memcg = lruvec_memcg(lruvec);
mm/vmscan.c
5079
if (!mem_cgroup_tryget(memcg)) {
mm/vmscan.c
5080
lru_gen_release_memcg(memcg);
mm/vmscan.c
5081
memcg = NULL;
mm/vmscan.c
5100
mem_cgroup_put(memcg);
mm/vmscan.c
5269
struct mem_cgroup *memcg;
mm/vmscan.c
5286
memcg = mem_cgroup_iter(NULL, NULL, NULL);
mm/vmscan.c
5291
struct lruvec *lruvec = get_lruvec(memcg, nid);
mm/vmscan.c
5310
} while ((memcg = mem_cgroup_iter(NULL, memcg, NULL)));
mm/vmscan.c
5409
struct mem_cgroup *memcg;
mm/vmscan.c
5416
memcg = mem_cgroup_iter(NULL, NULL, NULL);
mm/vmscan.c
5422
return get_lruvec(memcg, nid);
mm/vmscan.c
5424
} while ((memcg = mem_cgroup_iter(NULL, memcg, NULL)));
mm/vmscan.c
5441
struct mem_cgroup *memcg = lruvec_memcg(v);
mm/vmscan.c
5447
memcg = mem_cgroup_iter(NULL, memcg, NULL);
mm/vmscan.c
5448
if (!memcg)
mm/vmscan.c
5454
return get_lruvec(memcg, nid);
mm/vmscan.c
5519
struct mem_cgroup *memcg = lruvec_memcg(lruvec);
mm/vmscan.c
5524
const char *path = memcg ? m->private : "";
mm/vmscan.c
5527
if (memcg)
mm/vmscan.c
5528
cgroup_path(memcg->css.cgroup, m->private, PATH_MAX);
mm/vmscan.c
5530
seq_printf(m, "memcg %llu %s\n", mem_cgroup_id(memcg), path);
mm/vmscan.c
5621
struct mem_cgroup *memcg = NULL;
mm/vmscan.c
5627
memcg = mem_cgroup_get_from_id(memcg_id);
mm/vmscan.c
5628
if (!memcg)
mm/vmscan.c
5632
if (memcg_id != mem_cgroup_id(memcg))
mm/vmscan.c
5635
sc->target_mem_cgroup = memcg;
mm/vmscan.c
5636
lruvec = get_lruvec(memcg, nid);
mm/vmscan.c
5652
mem_cgroup_put(memcg);
mm/vmscan.c
5800
void lru_gen_init_memcg(struct mem_cgroup *memcg)
mm/vmscan.c
5802
struct lru_gen_mm_list *mm_list = get_mm_list(memcg);
mm/vmscan.c
5811
void lru_gen_exit_memcg(struct mem_cgroup *memcg)
mm/vmscan.c
5815
struct lru_gen_mm_list *mm_list = get_mm_list(memcg);
mm/vmscan.c
5820
struct lruvec *lruvec = get_lruvec(memcg, nid);
mm/vmscan.c
6074
struct mem_cgroup *memcg;
mm/vmscan.c
6088
memcg = mem_cgroup_iter(target_memcg, NULL, partial);
mm/vmscan.c
6090
struct lruvec *lruvec = mem_cgroup_lruvec(memcg, pgdat);
mm/vmscan.c
6102
mem_cgroup_calculate_protection(target_memcg, memcg);
mm/vmscan.c
6104
if (mem_cgroup_below_min(target_memcg, memcg)) {
mm/vmscan.c
6110
} else if (mem_cgroup_below_low(target_memcg, memcg)) {
mm/vmscan.c
6121
memcg_memory_event(memcg, MEMCG_LOW);
mm/vmscan.c
6129
shrink_slab(sc->gfp_mask, pgdat->node_id, memcg,
mm/vmscan.c
6134
vmpressure(sc->gfp_mask, sc->order, memcg, false,
mm/vmscan.c
6140
mem_cgroup_iter_break(target_memcg, memcg);
mm/vmscan.c
6143
} while ((memcg = mem_cgroup_iter(target_memcg, memcg, partial)));
mm/vmscan.c
6722
unsigned long mem_cgroup_shrink_node(struct mem_cgroup *memcg,
mm/vmscan.c
6727
struct lruvec *lruvec = mem_cgroup_lruvec(memcg, pgdat);
mm/vmscan.c
6730
.target_mem_cgroup = memcg,
mm/vmscan.c
6744
memcg);
mm/vmscan.c
6755
trace_mm_vmscan_memcg_softlimit_reclaim_end(sc.nr_reclaimed, memcg);
mm/vmscan.c
6762
unsigned long try_to_free_mem_cgroup_pages(struct mem_cgroup *memcg,
mm/vmscan.c
6776
.target_mem_cgroup = memcg,
mm/vmscan.c
6791
trace_mm_vmscan_memcg_reclaim_begin(sc.gfp_mask, 0, memcg);
mm/vmscan.c
6797
trace_mm_vmscan_memcg_reclaim_end(nr_reclaimed, memcg);
mm/vmscan.c
6803
unsigned long try_to_free_mem_cgroup_pages(struct mem_cgroup *memcg,
mm/vmscan.c
6815
struct mem_cgroup *memcg;
mm/vmscan.c
6833
memcg = mem_cgroup_iter(NULL, NULL, NULL);
mm/vmscan.c
6835
lruvec = mem_cgroup_lruvec(memcg, pgdat);
mm/vmscan.c
6838
memcg = mem_cgroup_iter(NULL, memcg, NULL);
mm/vmscan.c
6839
} while (memcg);
mm/vmscan.c
7867
struct mem_cgroup *memcg, pg_data_t *pgdat)
mm/vmscan.c
7876
if (!buf || (!memcg && !pgdat) || (memcg && pgdat))
mm/vmscan.c
7929
if (memcg) {
mm/vmscan.c
7934
reclaimed = try_to_free_mem_cgroup_pages(memcg,
mm/vmscan.c
995
struct mem_cgroup *memcg)
mm/workingset.c
247
struct mem_cgroup *memcg;
mm/workingset.c
255
memcg = folio_memcg(folio);
mm/workingset.c
256
lruvec = mem_cgroup_lruvec(memcg, pgdat);
mm/workingset.c
263
memcg_id = mem_cgroup_private_id(memcg);
mm/workingset.c
278
struct mem_cgroup *memcg;
mm/workingset.c
283
memcg = mem_cgroup_from_private_id(memcg_id);
mm/workingset.c
284
*lruvec = mem_cgroup_lruvec(memcg, pgdat);
mm/workingset.c
551
struct mem_cgroup *memcg;
mm/workingset.c
573
memcg = get_mem_cgroup_from_folio(folio);
mm/workingset.c
574
lruvec = mem_cgroup_lruvec(memcg, folio_pgdat(folio));
mm/workingset.c
595
mem_cgroup_put(memcg);
mm/workingset.c
690
if (sc->memcg) {
mm/workingset.c
694
mem_cgroup_flush_stats_ratelimited(sc->memcg);
mm/workingset.c
695
lruvec = mem_cgroup_lruvec(sc->memcg, NODE_DATA(sc->nid));
mm/zswap.c
1176
!mem_cgroup_zswap_writeback_enabled(sc->memcg)) {
mm/zswap.c
1193
struct mem_cgroup *memcg = sc->memcg;
mm/zswap.c
1194
struct lruvec *lruvec = mem_cgroup_lruvec(memcg, NODE_DATA(sc->nid));
mm/zswap.c
1200
if (!zswap_shrinker_enabled || !mem_cgroup_zswap_writeback_enabled(memcg))
mm/zswap.c
1220
mem_cgroup_flush_stats(memcg);
mm/zswap.c
1221
nr_backing = memcg_page_state(memcg, MEMCG_ZSWAP_B) >> PAGE_SHIFT;
mm/zswap.c
1222
nr_stored = memcg_page_state(memcg, MEMCG_ZSWAPPED);
mm/zswap.c
1278
static int shrink_memcg(struct mem_cgroup *memcg)
mm/zswap.c
1282
if (!mem_cgroup_zswap_writeback_enabled(memcg))
mm/zswap.c
1289
if (memcg && !mem_cgroup_online(memcg))
mm/zswap.c
1295
shrunk += list_lru_walk_one(&zswap_list_lru, nid, memcg,
mm/zswap.c
1308
struct mem_cgroup *memcg;
mm/zswap.c
1354
memcg = mem_cgroup_iter(NULL, zswap_next_shrink, NULL);
mm/zswap.c
1355
zswap_next_shrink = memcg;
mm/zswap.c
1356
} while (memcg && !mem_cgroup_tryget_online(memcg));
mm/zswap.c
1359
if (!memcg) {
mm/zswap.c
1371
ret = shrink_memcg(memcg);
mm/zswap.c
1373
mem_cgroup_put(memcg);
mm/zswap.c
1481
struct mem_cgroup *memcg = NULL;
mm/zswap.c
1494
memcg = get_mem_cgroup_from_objcg(objcg);
mm/zswap.c
1495
if (shrink_memcg(memcg)) {
mm/zswap.c
1496
mem_cgroup_put(memcg);
mm/zswap.c
1499
mem_cgroup_put(memcg);
mm/zswap.c
1510
memcg = get_mem_cgroup_from_objcg(objcg);
mm/zswap.c
1511
if (memcg_list_lru_alloc(memcg, &zswap_list_lru, GFP_KERNEL)) {
mm/zswap.c
1512
mem_cgroup_put(memcg);
mm/zswap.c
1515
mem_cgroup_put(memcg);
mm/zswap.c
671
struct mem_cgroup *memcg;
mm/zswap.c
685
memcg = mem_cgroup_from_entry(entry);
mm/zswap.c
687
list_lru_add(list_lru, &entry->lru, nid, memcg);
mm/zswap.c
694
struct mem_cgroup *memcg;
mm/zswap.c
697
memcg = mem_cgroup_from_entry(entry);
mm/zswap.c
699
list_lru_del(list_lru, &entry->lru, nid, memcg);
mm/zswap.c
730
void zswap_memcg_offline_cleanup(struct mem_cgroup *memcg)
mm/zswap.c
734
if (zswap_next_shrink == memcg) {
tools/testing/selftests/bpf/progs/cgroup_iter_memcg.c
17
struct mem_cgroup *memcg;
tools/testing/selftests/bpf/progs/cgroup_iter_memcg.c
23
memcg = bpf_get_mem_cgroup(css);
tools/testing/selftests/bpf/progs/cgroup_iter_memcg.c
24
if (!memcg)
tools/testing/selftests/bpf/progs/cgroup_iter_memcg.c
27
bpf_mem_cgroup_flush_stats(memcg);
tools/testing/selftests/bpf/progs/cgroup_iter_memcg.c
30
memcg,
tools/testing/selftests/bpf/progs/cgroup_iter_memcg.c
33
memcg, bpf_core_enum_value(enum node_stat_item, NR_SHMEM));
tools/testing/selftests/bpf/progs/cgroup_iter_memcg.c
35
memcg, bpf_core_enum_value(enum node_stat_item, NR_FILE_PAGES));
tools/testing/selftests/bpf/progs/cgroup_iter_memcg.c
37
memcg,
tools/testing/selftests/bpf/progs/cgroup_iter_memcg.c
40
memcg, bpf_core_enum_value(enum vm_event_item, PGFAULT));
tools/testing/selftests/bpf/progs/cgroup_iter_memcg.c
42
bpf_put_mem_cgroup(memcg);
tools/testing/selftests/cgroup/test_memcontrol.c
1031
char *memcg;
tools/testing/selftests/cgroup/test_memcontrol.c
1042
memcg = cg_name(root, "memcg_test");
tools/testing/selftests/cgroup/test_memcontrol.c
1043
if (!memcg)
tools/testing/selftests/cgroup/test_memcontrol.c
1046
if (cg_create(memcg))
tools/testing/selftests/cgroup/test_memcontrol.c
1049
if (cg_read_long(memcg, "memory.swap.current")) {
tools/testing/selftests/cgroup/test_memcontrol.c
1054
swap_peak_fd = cg_open(memcg, "memory.swap.peak",
tools/testing/selftests/cgroup/test_memcontrol.c
1076
mem_peak_fd = cg_open(memcg, "memory.peak", O_RDWR | O_APPEND | O_CLOEXEC);
tools/testing/selftests/cgroup/test_memcontrol.c
1081
if (cg_read_long(memcg, "memory.swap.peak"))
tools/testing/selftests/cgroup/test_memcontrol.c
1096
if (cg_read_long(memcg, "memory.peak"))
tools/testing/selftests/cgroup/test_memcontrol.c
1109
if (cg_read_strcmp(memcg, "memory.max", "max\n"))
tools/testing/selftests/cgroup/test_memcontrol.c
1112
if (cg_read_strcmp(memcg, "memory.swap.max", "max\n"))
tools/testing/selftests/cgroup/test_memcontrol.c
1115
if (cg_write(memcg, "memory.swap.max", "30M"))
tools/testing/selftests/cgroup/test_memcontrol.c
1118
if (cg_write(memcg, "memory.max", "30M"))
tools/testing/selftests/cgroup/test_memcontrol.c
1122
if (!cg_run(memcg, alloc_anon, (void *)MB(100)))
tools/testing/selftests/cgroup/test_memcontrol.c
1125
if (cg_read_key_long(memcg, "memory.events", "oom ") != 1)
tools/testing/selftests/cgroup/test_memcontrol.c
1128
if (cg_read_key_long(memcg, "memory.events", "oom_kill ") != 1)
tools/testing/selftests/cgroup/test_memcontrol.c
1131
peak = cg_read_long(memcg, "memory.peak");
tools/testing/selftests/cgroup/test_memcontrol.c
1135
peak = cg_read_long(memcg, "memory.swap.peak");
tools/testing/selftests/cgroup/test_memcontrol.c
1151
peak_reset = cg_write(memcg, "memory.swap.peak", (char *)reset_string);
tools/testing/selftests/cgroup/test_memcontrol.c
1155
peak_reset = cg_write(memcg, "memory.peak", (char *)reset_string);
tools/testing/selftests/cgroup/test_memcontrol.c
1180
if (cg_read_long(memcg, "memory.peak") < MB(29))
tools/testing/selftests/cgroup/test_memcontrol.c
1183
if (cg_read_long(memcg, "memory.swap.peak") < MB(29))
tools/testing/selftests/cgroup/test_memcontrol.c
1186
if (cg_run(memcg, alloc_anon_50M_check_swap, (void *)MB(30)))
tools/testing/selftests/cgroup/test_memcontrol.c
1189
max = cg_read_key_long(memcg, "memory.events", "max ");
tools/testing/selftests/cgroup/test_memcontrol.c
1193
peak = cg_read_long(memcg, "memory.peak");
tools/testing/selftests/cgroup/test_memcontrol.c
1197
peak = cg_read_long(memcg, "memory.swap.peak");
tools/testing/selftests/cgroup/test_memcontrol.c
1216
cg_destroy(memcg);
tools/testing/selftests/cgroup/test_memcontrol.c
1217
free(memcg);
tools/testing/selftests/cgroup/test_memcontrol.c
1230
char *memcg;
tools/testing/selftests/cgroup/test_memcontrol.c
1232
memcg = cg_name(root, "memcg_test");
tools/testing/selftests/cgroup/test_memcontrol.c
1233
if (!memcg)
tools/testing/selftests/cgroup/test_memcontrol.c
1236
if (cg_create(memcg))
tools/testing/selftests/cgroup/test_memcontrol.c
1239
if (cg_write(memcg, "memory.max", "30M"))
tools/testing/selftests/cgroup/test_memcontrol.c
1242
if (cg_write(memcg, "memory.swap.max", "0"))
tools/testing/selftests/cgroup/test_memcontrol.c
1245
if (!cg_run(memcg, alloc_anon, (void *)MB(100)))
tools/testing/selftests/cgroup/test_memcontrol.c
1248
if (cg_read_strcmp(memcg, "cgroup.procs", ""))
tools/testing/selftests/cgroup/test_memcontrol.c
1251
if (cg_read_key_long(memcg, "memory.events", "oom ") != 1)
tools/testing/selftests/cgroup/test_memcontrol.c
1254
if (cg_read_key_long(memcg, "memory.events", "oom_kill ") != 1)
tools/testing/selftests/cgroup/test_memcontrol.c
1260
cg_destroy(memcg);
tools/testing/selftests/cgroup/test_memcontrol.c
1261
free(memcg);
tools/testing/selftests/cgroup/test_memcontrol.c
1394
char *memcg;
tools/testing/selftests/cgroup/test_memcontrol.c
1397
memcg = cg_name(root, "memcg_test");
tools/testing/selftests/cgroup/test_memcontrol.c
1398
if (!memcg)
tools/testing/selftests/cgroup/test_memcontrol.c
1401
if (cg_create(memcg))
tools/testing/selftests/cgroup/test_memcontrol.c
1412
pid = cg_run_nowait(memcg, tcp_server, &args);
tools/testing/selftests/cgroup/test_memcontrol.c
1440
if (tcp_client(memcg, port) != KSFT_PASS)
tools/testing/selftests/cgroup/test_memcontrol.c
1447
if (cg_read_long(memcg, "memory.current") < 0)
tools/testing/selftests/cgroup/test_memcontrol.c
1462
sock_post = cg_read_key_long_poll(memcg, "memory.stat", "sock ", 0,
tools/testing/selftests/cgroup/test_memcontrol.c
1471
cg_destroy(memcg);
tools/testing/selftests/cgroup/test_memcontrol.c
1472
free(memcg);
tools/testing/selftests/cgroup/test_memcontrol.c
1614
char *memcg;
tools/testing/selftests/cgroup/test_memcontrol.c
1617
memcg = cg_name(root, "memcg_test_0");
tools/testing/selftests/cgroup/test_memcontrol.c
1619
if (!memcg)
tools/testing/selftests/cgroup/test_memcontrol.c
1622
if (cg_create(memcg))
tools/testing/selftests/cgroup/test_memcontrol.c
1625
if (cg_write(memcg, "memory.max", "50M"))
tools/testing/selftests/cgroup/test_memcontrol.c
1628
if (cg_write(memcg, "memory.swap.max", "0"))
tools/testing/selftests/cgroup/test_memcontrol.c
1631
if (cg_write(memcg, "memory.oom.group", "1"))
tools/testing/selftests/cgroup/test_memcontrol.c
1634
safe_pid = cg_run_nowait(memcg, alloc_anon_noexit, (void *) MB(1));
tools/testing/selftests/cgroup/test_memcontrol.c
1638
cg_run_nowait(memcg, alloc_anon_noexit, (void *) MB(1));
tools/testing/selftests/cgroup/test_memcontrol.c
1639
if (!cg_run(memcg, alloc_anon, (void *)MB(100)))
tools/testing/selftests/cgroup/test_memcontrol.c
1642
if (cg_read_key_long(memcg, "memory.events", "oom_kill ") != 3)
tools/testing/selftests/cgroup/test_memcontrol.c
1651
if (memcg)
tools/testing/selftests/cgroup/test_memcontrol.c
1652
cg_destroy(memcg);
tools/testing/selftests/cgroup/test_memcontrol.c
1653
free(memcg);
tools/testing/selftests/cgroup/test_memcontrol.c
1680
char *memcg = NULL;
tools/testing/selftests/cgroup/test_memcontrol.c
1683
memcg = cg_name(root, "memcg_test_0");
tools/testing/selftests/cgroup/test_memcontrol.c
1685
if (!memcg)
tools/testing/selftests/cgroup/test_memcontrol.c
1688
if (cg_create(memcg))
tools/testing/selftests/cgroup/test_memcontrol.c
1695
wd = inotify_add_watch(fd, cg_control(memcg, "memory.events"), IN_DELETE_SELF);
tools/testing/selftests/cgroup/test_memcontrol.c
1699
if (cg_destroy(memcg))
tools/testing/selftests/cgroup/test_memcontrol.c
1701
free(memcg);
tools/testing/selftests/cgroup/test_memcontrol.c
1702
memcg = NULL;
tools/testing/selftests/cgroup/test_memcontrol.c
1715
if (memcg)
tools/testing/selftests/cgroup/test_memcontrol.c
1716
cg_destroy(memcg);
tools/testing/selftests/cgroup/test_memcontrol.c
1717
free(memcg);
tools/testing/selftests/cgroup/test_memcontrol.c
1725
char *memcg = NULL;
tools/testing/selftests/cgroup/test_memcontrol.c
1728
memcg = cg_name(root, "memcg_test_0");
tools/testing/selftests/cgroup/test_memcontrol.c
1730
if (!memcg)
tools/testing/selftests/cgroup/test_memcontrol.c
1733
if (cg_create(memcg))
tools/testing/selftests/cgroup/test_memcontrol.c
1740
wd = inotify_add_watch(fd, memcg, IN_DELETE_SELF);
tools/testing/selftests/cgroup/test_memcontrol.c
1744
if (cg_destroy(memcg))
tools/testing/selftests/cgroup/test_memcontrol.c
1746
free(memcg);
tools/testing/selftests/cgroup/test_memcontrol.c
1747
memcg = NULL;
tools/testing/selftests/cgroup/test_memcontrol.c
1760
if (memcg)
tools/testing/selftests/cgroup/test_memcontrol.c
1761
cg_destroy(memcg);
tools/testing/selftests/cgroup/test_memcontrol.c
1762
free(memcg);
tools/testing/selftests/cgroup/test_memcontrol.c
263
char *memcg;
tools/testing/selftests/cgroup/test_memcontrol.c
268
memcg = cg_name(root, "memcg_test");
tools/testing/selftests/cgroup/test_memcontrol.c
269
if (!memcg)
tools/testing/selftests/cgroup/test_memcontrol.c
272
if (cg_create(memcg))
tools/testing/selftests/cgroup/test_memcontrol.c
275
current = cg_read_long(memcg, "memory.current");
tools/testing/selftests/cgroup/test_memcontrol.c
279
peak = cg_read_long(memcg, "memory.peak");
tools/testing/selftests/cgroup/test_memcontrol.c
283
if (cg_run(memcg, alloc_anon_50M_check, NULL))
tools/testing/selftests/cgroup/test_memcontrol.c
286
peak = cg_read_long(memcg, "memory.peak");
tools/testing/selftests/cgroup/test_memcontrol.c
295
peak_fd = cg_open(memcg, "memory.peak", O_RDWR | O_APPEND | O_CLOEXEC);
tools/testing/selftests/cgroup/test_memcontrol.c
316
peak_fd2 = cg_open(memcg, "memory.peak", O_RDWR | O_APPEND | O_CLOEXEC);
tools/testing/selftests/cgroup/test_memcontrol.c
321
peak_fd3 = cg_open(memcg, "memory.peak", O_RDWR | O_APPEND | O_CLOEXEC);
tools/testing/selftests/cgroup/test_memcontrol.c
342
peak = cg_read_long(memcg, "memory.peak");
tools/testing/selftests/cgroup/test_memcontrol.c
350
peak_fd4 = cg_open(memcg, "memory.peak", O_RDWR | O_APPEND | O_CLOEXEC);
tools/testing/selftests/cgroup/test_memcontrol.c
363
if (cg_run(memcg, alloc_pagecache_50M_check, NULL))
tools/testing/selftests/cgroup/test_memcontrol.c
366
peak = cg_read_long(memcg, "memory.peak");
tools/testing/selftests/cgroup/test_memcontrol.c
397
cg_destroy(memcg);
tools/testing/selftests/cgroup/test_memcontrol.c
398
free(memcg);
tools/testing/selftests/cgroup/test_memcontrol.c
451
static bool reclaim_until(const char *memcg, long goal);
tools/testing/selftests/cgroup/test_memcontrol.c
713
char *memcg;
tools/testing/selftests/cgroup/test_memcontrol.c
716
memcg = cg_name(root, "memcg_test");
tools/testing/selftests/cgroup/test_memcontrol.c
717
if (!memcg)
tools/testing/selftests/cgroup/test_memcontrol.c
720
if (cg_create(memcg))
tools/testing/selftests/cgroup/test_memcontrol.c
723
if (cg_read_strcmp(memcg, "memory.high", "max\n"))
tools/testing/selftests/cgroup/test_memcontrol.c
726
if (cg_write(memcg, "memory.swap.max", "0"))
tools/testing/selftests/cgroup/test_memcontrol.c
729
if (cg_write(memcg, "memory.high", "30M"))
tools/testing/selftests/cgroup/test_memcontrol.c
732
if (cg_run(memcg, alloc_anon, (void *)MB(31)))
tools/testing/selftests/cgroup/test_memcontrol.c
735
if (!cg_run(memcg, alloc_pagecache_50M_check, NULL))
tools/testing/selftests/cgroup/test_memcontrol.c
738
if (cg_run(memcg, alloc_pagecache_max_30M, NULL))
tools/testing/selftests/cgroup/test_memcontrol.c
741
high = cg_read_key_long(memcg, "memory.events", "high ");
tools/testing/selftests/cgroup/test_memcontrol.c
748
cg_destroy(memcg);
tools/testing/selftests/cgroup/test_memcontrol.c
749
free(memcg);
tools/testing/selftests/cgroup/test_memcontrol.c
776
char *memcg;
tools/testing/selftests/cgroup/test_memcontrol.c
780
memcg = cg_name(root, "memcg_test");
tools/testing/selftests/cgroup/test_memcontrol.c
781
if (!memcg)
tools/testing/selftests/cgroup/test_memcontrol.c
784
if (cg_create(memcg))
tools/testing/selftests/cgroup/test_memcontrol.c
787
pre_high = cg_read_key_long(memcg, "memory.events", "high ");
tools/testing/selftests/cgroup/test_memcontrol.c
788
pre_max = cg_read_key_long(memcg, "memory.events", "max ");
tools/testing/selftests/cgroup/test_memcontrol.c
792
if (cg_write(memcg, "memory.swap.max", "0"))
tools/testing/selftests/cgroup/test_memcontrol.c
795
if (cg_write(memcg, "memory.high", "30M"))
tools/testing/selftests/cgroup/test_memcontrol.c
798
if (cg_write(memcg, "memory.max", "140M"))
tools/testing/selftests/cgroup/test_memcontrol.c
801
fd = memcg_prepare_for_wait(memcg);
tools/testing/selftests/cgroup/test_memcontrol.c
805
pid = cg_run_nowait(memcg, alloc_anon_mlock, (void *)MB(200));
tools/testing/selftests/cgroup/test_memcontrol.c
811
post_high = cg_read_key_long(memcg, "memory.events", "high ");
tools/testing/selftests/cgroup/test_memcontrol.c
812
post_max = cg_read_key_long(memcg, "memory.events", "max ");
tools/testing/selftests/cgroup/test_memcontrol.c
824
cg_destroy(memcg);
tools/testing/selftests/cgroup/test_memcontrol.c
825
free(memcg);
tools/testing/selftests/cgroup/test_memcontrol.c
838
char *memcg;
tools/testing/selftests/cgroup/test_memcontrol.c
841
memcg = cg_name(root, "memcg_test");
tools/testing/selftests/cgroup/test_memcontrol.c
842
if (!memcg)
tools/testing/selftests/cgroup/test_memcontrol.c
845
if (cg_create(memcg))
tools/testing/selftests/cgroup/test_memcontrol.c
848
if (cg_read_strcmp(memcg, "memory.max", "max\n"))
tools/testing/selftests/cgroup/test_memcontrol.c
851
if (cg_write(memcg, "memory.swap.max", "0"))
tools/testing/selftests/cgroup/test_memcontrol.c
854
if (cg_write(memcg, "memory.max", "30M"))
tools/testing/selftests/cgroup/test_memcontrol.c
858
if (!cg_run(memcg, alloc_anon, (void *)MB(100)))
tools/testing/selftests/cgroup/test_memcontrol.c
861
if (cg_run(memcg, alloc_pagecache_max_30M, NULL))
tools/testing/selftests/cgroup/test_memcontrol.c
864
current = cg_read_long(memcg, "memory.current");
tools/testing/selftests/cgroup/test_memcontrol.c
868
max = cg_read_key_long(memcg, "memory.events", "max ");
tools/testing/selftests/cgroup/test_memcontrol.c
875
cg_destroy(memcg);
tools/testing/selftests/cgroup/test_memcontrol.c
876
free(memcg);
tools/testing/selftests/cgroup/test_memcontrol.c
896
static bool reclaim_until(const char *memcg, long goal)
tools/testing/selftests/cgroup/test_memcontrol.c
904
current = cg_read_long(memcg, "memory.current");
tools/testing/selftests/cgroup/test_memcontrol.c
914
err = cg_write(memcg, "memory.reclaim", buf);
tools/testing/selftests/cgroup/test_memcontrol.c
932
char *memcg;
tools/testing/selftests/cgroup/test_memcontrol.c
935
memcg = cg_name(root, "memcg_test");
tools/testing/selftests/cgroup/test_memcontrol.c
936
if (!memcg)
tools/testing/selftests/cgroup/test_memcontrol.c
939
if (cg_create(memcg))
tools/testing/selftests/cgroup/test_memcontrol.c
942
current = cg_read_long(memcg, "memory.current");
tools/testing/selftests/cgroup/test_memcontrol.c
950
cg_run_nowait(memcg, alloc_pagecache_50M_noexit, (void *)(long)fd);
tools/testing/selftests/cgroup/test_memcontrol.c
957
cg_run_nowait(memcg, alloc_anon_noexit, (void *) MB(50));
tools/testing/selftests/cgroup/test_memcontrol.c
967
while (!values_close(cg_read_long(memcg, "memory.current"),
tools/testing/selftests/cgroup/test_memcontrol.c
984
if (!reclaim_until(memcg, MB(30)))
tools/testing/selftests/cgroup/test_memcontrol.c
989
cg_destroy(memcg);
tools/testing/selftests/cgroup/test_memcontrol.c
990
free(memcg);
tools/testing/selftests/kvm/include/lru_gen_util.h
43
void lru_gen_read_memcg_stats(struct memcg_stats *stats, const char *memcg);
tools/testing/selftests/kvm/include/lru_gen_util.h
46
void lru_gen_do_aging(struct memcg_stats *stats, const char *memcg);
tools/testing/selftests/kvm/lib/lru_gen_util.c
201
void lru_gen_read_memcg_stats(struct memcg_stats *stats, const char *memcg)
tools/testing/selftests/kvm/lib/lru_gen_util.c
209
.name = memcg,
tools/testing/selftests/kvm/lib/lru_gen_util.c
232
memcg);
tools/testing/selftests/kvm/lib/lru_gen_util.c
237
print_memcg_stats(stats, memcg);
tools/testing/selftests/kvm/lib/lru_gen_util.c
302
void lru_gen_do_aging(struct memcg_stats *stats, const char *memcg)
tools/testing/selftests/kvm/lib/lru_gen_util.c
309
lru_gen_read_memcg_stats(stats, memcg);
tools/testing/selftests/kvm/lib/lru_gen_util.c
325
lru_gen_read_memcg_stats(stats, memcg);