| /linux-6.15/mm/ |
| H A D | memcontrol.c | 274 memcg = parent_mem_cgroup(memcg); in page_cgroup_ino() 743 memcg = pn->memcg; in __mod_memcg_lruvec_state() 1649 .memcg = memcg, in mem_cgroup_out_of_memory() 1736 for (; memcg; memcg = parent_mem_cgroup(memcg)) { in mem_cgroup_get_oom_group() 3173 objcg->memcg = memcg; in memcg_online_kmem() 3180 memcg->kmemcg_id = memcg->id.id; in memcg_online_kmem() 3488 memcg = parent_mem_cgroup(memcg); in mem_cgroup_id_get_online() 3559 pn->memcg = memcg; in alloc_mem_cgroup_per_node_info() 4741 if (ug->memcg != memcg) { in uncharge_folio() 4746 ug->memcg = memcg; in uncharge_folio() [all …]
|
| H A D | memcontrol-v1.h | 29 unsigned long memcg_events(struct mem_cgroup *memcg, int event); 48 bool memcg1_alloc_events(struct mem_cgroup *memcg); 49 void memcg1_free_events(struct mem_cgroup *memcg); 51 void memcg1_memcg_init(struct mem_cgroup *memcg); 52 void memcg1_remove_from_trees(struct mem_cgroup *memcg); 56 WRITE_ONCE(memcg->soft_limit, PAGE_COUNTER_MAX); in memcg1_soft_limit_reset() 60 void memcg1_css_offline(struct mem_cgroup *memcg); 72 void memcg1_oom_recover(struct mem_cgroup *memcg); 83 return memcg->tcpmem_active; in memcg1_tcpmem_active() 89 page_counter_uncharge(&memcg->tcpmem, nr_pages); in memcg1_uncharge_skmem() [all …]
|
| H A D | memcontrol-v1.c | 56 struct mem_cgroup *memcg; member 198 for (; memcg; memcg = parent_mem_cgroup(memcg)) { in memcg1_update_tree() 483 while (memcg) { in mem_cgroup_threshold() 488 memcg = parent_mem_cgroup(memcg); in mem_cgroup_threshold() 608 if (!memcg) in memcg1_swapout() 983 struct mem_cgroup *memcg = event->memcg; in memcg_event_remove() local 1007 struct mem_cgroup *memcg = event->memcg; in memcg_event_wake() local 1094 event->memcg = memcg; in memcg_write_event_control() 1330 if (memcg && memcg->under_oom) in memcg1_oom_recover() 1358 if (!memcg) in mem_cgroup_oom_synchronize() [all …]
|
| H A D | shrinker.c | 69 pn = memcg->nodeinfo[nid]; in free_shrinker_info() 102 free_shrinker_info(memcg); in alloc_shrinker_info() 155 struct mem_cgroup *memcg; in expand_shrinker_info() local 173 } while ((memcg = mem_cgroup_iter(NULL, memcg, NULL)) != NULL); in expand_shrinker_info() 198 if (shrinker_id >= 0 && memcg && !mem_cgroup_is_root(memcg)) { in set_shrinker_bit() 344 if (sc->memcg && in xchg_nr_deferred() 347 sc->memcg); in xchg_nr_deferred() 361 if (sc->memcg && in add_nr_deferred() 364 sc->memcg); in add_nr_deferred() 531 .memcg = memcg, in shrink_slab_memcg() [all …]
|
| H A D | shrinker_debug.c | 19 struct mem_cgroup *memcg, in shrinker_count_objects() argument 30 .memcg = memcg, in shrinker_count_objects() 51 struct mem_cgroup *memcg; in shrinker_debugfs_count_show() local 66 if (memcg && !mem_cgroup_online(memcg)) in shrinker_debugfs_count_show() 89 } while ((memcg = mem_cgroup_iter(NULL, memcg, NULL)) != NULL); in shrinker_debugfs_count_show() 113 struct mem_cgroup *memcg = NULL; in shrinker_debugfs_scan_write() local 133 if (!memcg || IS_ERR(memcg)) in shrinker_debugfs_scan_write() 136 if (!mem_cgroup_online(memcg)) { in shrinker_debugfs_scan_write() 137 mem_cgroup_put(memcg); in shrinker_debugfs_scan_write() 145 sc.memcg = memcg; in shrinker_debugfs_scan_write() [all …]
|
| H A D | list_lru.c | 96 VM_WARN_ON(!css_is_dying(&memcg->css)); in lock_list_lru_of_memcg() 97 memcg = parent_mem_cgroup(memcg); in lock_list_lru_of_memcg() 158 struct mem_cgroup *memcg) in list_lru_add() argument 198 struct mem_cgroup *memcg) in list_lru_del() argument 249 int nid, struct mem_cgroup *memcg) in list_lru_count_one() argument 363 struct mem_cgroup *memcg; in list_lru_walk_node() local 368 memcg = mem_cgroup_from_id(index); in list_lru_walk_node() 369 if (!mem_cgroup_tryget(memcg)) { in list_lru_walk_node() 377 mem_cgroup_put(memcg); in list_lru_walk_node() 504 int idx = memcg->kmemcg_id; in memcg_list_lru_allocated() [all …]
|
| H A D | vmpressure.c | 77 struct mem_cgroup *memcg = vmpressure_to_memcg(vmpr); in vmpressure_parent() local 79 memcg = parent_mem_cgroup(memcg); in vmpressure_parent() 80 if (!memcg) in vmpressure_parent() 82 return memcg_to_vmpressure(memcg); in vmpressure_parent() 255 vmpr = memcg_to_vmpressure(memcg); in vmpressure() 295 if (!memcg || mem_cgroup_is_root(memcg)) in vmpressure() 319 WRITE_ONCE(memcg->socket_pressure, jiffies + HZ); in vmpressure() 351 vmpressure(gfp, memcg, true, vmpressure_win, 0); in vmpressure_prio() 374 int vmpressure_register_event(struct mem_cgroup *memcg, in vmpressure_register_event() argument 377 struct vmpressure *vmpr = memcg_to_vmpressure(memcg); in vmpressure_register_event() [all …]
|
| H A D | vmscan.c | 2712 if (memcg) { in get_lruvec() 2869 if (memcg) in get_mm_list() 2909 mm->lru_gen.memcg = memcg; in lru_gen_add_mm() 2937 memcg = mm->lru_gen.memcg; in lru_gen_del_mm() 2986 if (memcg == mm->lru_gen.memcg) in lru_gen_migrate_mm() 4156 } while ((memcg = mem_cgroup_iter(NULL, memcg, NULL))); in lru_gen_age_node() 5188 } while ((memcg = mem_cgroup_iter(NULL, memcg, NULL))); in lru_gen_change_state() 5299 } while ((memcg = mem_cgroup_iter(NULL, memcg, NULL))); in lru_gen_seq_start() 5322 memcg = mem_cgroup_iter(NULL, memcg, NULL); in lru_gen_seq_next() 5402 if (memcg) in lru_gen_seq_show() [all …]
|
| H A D | zswap.c | 713 struct mem_cgroup *memcg; in zswap_lru_add() local 736 struct mem_cgroup *memcg; in zswap_lru_del() local 1278 struct mem_cgroup *memcg = sc->memcg; in zswap_shrinker_count() local 1374 if (memcg && !mem_cgroup_online(memcg)) in shrink_memcg() 1441 } while (memcg && !mem_cgroup_tryget_online(memcg)); in shrink_worker() 1444 if (!memcg) { in shrink_worker() 1458 mem_cgroup_put(memcg); in shrink_worker() 1579 mem_cgroup_put(memcg); in zswap_store() 1582 mem_cgroup_put(memcg); in zswap_store() 1595 mem_cgroup_put(memcg); in zswap_store() [all …]
|
| H A D | workingset.c | 244 struct mem_cgroup *memcg = folio_memcg(folio); in lru_gen_eviction() local 249 lruvec = mem_cgroup_lruvec(memcg, pgdat); in lru_gen_eviction() 269 struct mem_cgroup *memcg; in lru_gen_test_recent() local 274 memcg = mem_cgroup_from_id(memcg_id); in lru_gen_test_recent() 275 *lruvec = mem_cgroup_lruvec(memcg, pgdat); in lru_gen_test_recent() 538 struct mem_cgroup *memcg; in workingset_refault() local 560 memcg = folio_memcg(folio); in workingset_refault() 562 lruvec = mem_cgroup_lruvec(memcg, pgdat); in workingset_refault() 676 if (sc->memcg) { in count_shadow_nodes() 680 mem_cgroup_flush_stats_ratelimited(sc->memcg); in count_shadow_nodes() [all …]
|
| H A D | oom_kill.c | 74 return oc->memcg != NULL; in is_memcg_oom() 261 oc->totalpages = mem_cgroup_get_max(oc->memcg) ?: 1; in constrained_alloc() 370 mem_cgroup_scan_tasks(oc->memcg, oom_evaluate_task, oc); in select_bad_process() 431 mem_cgroup_scan_tasks(oc->memcg, dump_task, oc); in dump_tasks() 454 mem_cgroup_print_oom_context(oc->memcg, victim); in dump_oom_victim() 469 mem_cgroup_print_oom_meminfo(oc->memcg); in dump_header() 1049 oom_group = mem_cgroup_get_oom_group(victim, oc->memcg); in oom_kill_process()
|
| /linux-6.15/include/linux/ |
| H A D | memcontrol.h | 696 if (!memcg) in mem_cgroup_lruvec() 777 return !memcg || css_tryget(&memcg->css); in mem_cgroup_tryget() 782 return !memcg || css_tryget_online(&memcg->css); in mem_cgroup_tryget_online() 787 if (memcg) in mem_cgroup_put() 813 return memcg ? cgroup_ino(memcg->css.cgroup) : 0; in mem_cgroup_ino() 930 if (memcg) in mod_memcg_page_state() 974 if (memcg) in count_memcg_folio_events() 1020 } while ((memcg = parent_mem_cgroup(memcg)) && in memcg_memory_event() 1507 memcg = parent_mem_cgroup(memcg); in parent_lruvec() 1634 } while ((memcg = parent_mem_cgroup(memcg))); in mem_cgroup_under_socket_pressure() [all …]
|
| H A D | vmpressure.h | 33 extern void vmpressure(gfp_t gfp, struct mem_cgroup *memcg, bool tree, 35 extern void vmpressure_prio(gfp_t gfp, struct mem_cgroup *memcg, int prio); 39 extern struct vmpressure *memcg_to_vmpressure(struct mem_cgroup *memcg); 41 extern int vmpressure_register_event(struct mem_cgroup *memcg, 44 extern void vmpressure_unregister_event(struct mem_cgroup *memcg, 47 static inline void vmpressure(gfp_t gfp, struct mem_cgroup *memcg, bool tree, in vmpressure() argument 49 static inline void vmpressure_prio(gfp_t gfp, struct mem_cgroup *memcg, in vmpressure_prio() argument
|
| H A D | list_lru.h | 82 int memcg_list_lru_alloc(struct mem_cgroup *memcg, struct list_lru *lru, 84 void memcg_reparent_list_lrus(struct mem_cgroup *memcg, struct mem_cgroup *parent); 116 struct mem_cgroup *memcg); 156 struct mem_cgroup *memcg); 184 int nid, struct mem_cgroup *memcg); 190 return list_lru_count_one(lru, sc->nid, sc->memcg); in list_lru_shrink_count() 234 int nid, struct mem_cgroup *memcg, 251 int nid, struct mem_cgroup *memcg, 262 return list_lru_walk_one(lru, sc->nid, sc->memcg, isolate, cb_arg, in list_lru_shrink_walk() 270 return list_lru_walk_one_irq(lru, sc->nid, sc->memcg, isolate, cb_arg, in list_lru_shrink_walk_irq()
|
| H A D | zswap.h | 33 void zswap_memcg_offline_cleanup(struct mem_cgroup *memcg); 58 static inline void zswap_memcg_offline_cleanup(struct mem_cgroup *memcg) {} in zswap_memcg_offline_cleanup() argument
|
| H A D | swap.h | 417 extern unsigned long try_to_free_mem_cgroup_pages(struct mem_cgroup *memcg, 609 static inline int mem_cgroup_swappiness(struct mem_cgroup *memcg) in mem_cgroup_swappiness() argument 616 if (mem_cgroup_disabled() || mem_cgroup_is_root(memcg)) in mem_cgroup_swappiness() 619 return READ_ONCE(memcg->swappiness); in mem_cgroup_swappiness() 660 extern long mem_cgroup_get_nr_swap_pages(struct mem_cgroup *memcg); 674 static inline long mem_cgroup_get_nr_swap_pages(struct mem_cgroup *memcg) in mem_cgroup_get_nr_swap_pages() argument
|
| H A D | mmzone.h | 587 void lru_gen_init_memcg(struct mem_cgroup *memcg); 588 void lru_gen_exit_memcg(struct mem_cgroup *memcg); 589 void lru_gen_online_memcg(struct mem_cgroup *memcg); 590 void lru_gen_offline_memcg(struct mem_cgroup *memcg); 591 void lru_gen_release_memcg(struct mem_cgroup *memcg); 592 void lru_gen_soft_reclaim(struct mem_cgroup *memcg, int nid); 609 static inline void lru_gen_init_memcg(struct mem_cgroup *memcg) in lru_gen_init_memcg() argument 613 static inline void lru_gen_exit_memcg(struct mem_cgroup *memcg) in lru_gen_exit_memcg() argument 617 static inline void lru_gen_online_memcg(struct mem_cgroup *memcg) in lru_gen_online_memcg() argument 621 static inline void lru_gen_offline_memcg(struct mem_cgroup *memcg) in lru_gen_offline_memcg() argument [all …]
|
| /linux-6.15/tools/testing/selftests/cgroup/ |
| H A D | test_memcontrol.c | 170 char *memcg; in test_memcg_current_peak() local 176 if (!memcg) in test_memcg_current_peak() 305 free(memcg); in test_memcg_current_peak() 619 if (!memcg) in test_memcg_high() 683 if (!memcg) in test_memcg_high_sync() 744 if (!memcg) in test_memcg_max() 838 if (!memcg) in test_memcg_reclaim() 950 if (!memcg) in test_memcg_swap_max_peak() 1140 if (!memcg) in test_memcg_oom_events() 1301 if (!memcg) in test_memcg_sock() [all …]
|
| /linux-6.15/include/trace/events/ |
| H A D | memcg.h | 3 #define TRACE_SYSTEM memcg 14 TP_PROTO(struct mem_cgroup *memcg, int item, int val), 16 TP_ARGS(memcg, item, val), 25 __entry->id = cgroup_id(memcg->css.cgroup); 38 TP_ARGS(memcg, item, val) 45 TP_ARGS(memcg, item, val) 52 TP_ARGS(memcg, item, val), 61 __entry->id = cgroup_id(memcg->css.cgroup); 74 TP_ARGS(memcg, item, val) 82 TP_ARGS(memcg, stats_updates, force, needs_flush), [all …]
|
| /linux-6.15/tools/cgroup/ |
| H A D | memcg_slabinfo.py | 42 memcg = container_of(css, 'struct mem_cgroup', 'css') 43 MEMCGS[css.cgroup.kn.id.value_()] = memcg 170 memcg = MEMCGS[cgroup_id] 186 obj_cgroups.add(memcg.objcg.value_()) 188 memcg.objcg_list.address_of_(), 220 memcg.kmem_caches.address_of_(),
|
| /linux-6.15/Documentation/admin-guide/cgroup-v1/ |
| H A D | memcg_test.rst | 9 Because VM is getting complex (one of reasons is memcg...), memcg's behavior 10 is complex. This is a document for memcg's internal behavior. 61 At commit(), the page is associated with the memcg. 114 But brief explanation of the behavior of memcg around shmem will be 136 Each memcg has its own vector of LRUs (inactive anon, active anon, 138 each LRU handled under a single lru_lock for that memcg and node. 145 9.1 Small limit to memcg. 248 Besides management of swap is one of complicated parts of memcg, 275 Out-of-memory caused by memcg's limit will kill tasks under 276 the memcg. When hierarchy is used, a task under hierarchy [all …]
|
| /linux-6.15/include/linux/sched/ |
| H A D | mm.h | 489 set_active_memcg(struct mem_cgroup *memcg) in set_active_memcg() argument 495 this_cpu_write(int_active_memcg, memcg); in set_active_memcg() 498 current->active_memcg = memcg; in set_active_memcg() 505 set_active_memcg(struct mem_cgroup *memcg) in set_active_memcg() argument
|
| /linux-6.15/Documentation/translations/zh_CN/mm/ |
| H A D | hwpoison.rst | 119 corrupt-filter-memcg 120 限制注入到memgroup拥有的页面。由memcg的inode号指定。 130 echo $memcg_ino > /debug/hwpoison/corrupt-filter-memcg
|
| /linux-6.15/Documentation/admin-guide/mm/ |
| H A D | shrinker_debugfs.rst | 14 trigger *count_objects()* and *scan_objects()* callbacks for each memcg and 59 If the shrinker is not memcg-aware or CONFIG_MEMCG is off, 0 is printed 112 For a non-memcg-aware shrinker or on a system with no memory
|
| /linux-6.15/kernel/bpf/ |
| H A D | memalloc.c | 207 struct mem_cgroup *memcg = NULL, *old_memcg; in alloc_bulk() local 238 memcg = get_memcg(c); in alloc_bulk() 239 old_memcg = set_active_memcg(memcg); in alloc_bulk() 252 mem_cgroup_put(memcg); in alloc_bulk() 994 struct mem_cgroup *memcg, *old_memcg; in bpf_mem_cache_alloc_flags() local 996 memcg = get_memcg(c); in bpf_mem_cache_alloc_flags() 997 old_memcg = set_active_memcg(memcg); in bpf_mem_cache_alloc_flags() 1002 mem_cgroup_put(memcg); in bpf_mem_cache_alloc_flags()
|