| /linux/mm/ |
| H A D | memcontrol.c | 115 struct vmpressure *memcg_to_vmpressure(struct mem_cgroup *memcg) in memcg_to_vmpressure() argument 117 if (!memcg) in memcg_to_vmpressure() 118 memcg = root_mem_cgroup; in memcg_to_vmpressure() 119 return &memcg->vmpressure; in memcg_to_vmpressure() 138 static void memcg_uncharge(struct mem_cgroup *memcg, unsigned int nr_pages); 172 struct mem_cgroup *memcg; in obj_cgroup_release() local 174 memcg = get_mem_cgroup_from_objcg(objcg); in obj_cgroup_release() 175 mod_memcg_state(memcg, MEMCG_KMEM, -nr_pages); in obj_cgroup_release() 176 memcg1_account_kmem(memcg, -nr_pages); in obj_cgroup_release() 177 if (!mem_cgroup_is_root(memcg)) in obj_cgroup_release() [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() 239 void vmpressure(gfp_t gfp, struct mem_cgroup *memcg, bool tree, in vmpressure() argument 255 vmpr = memcg_to_vmpressure(memcg); in vmpressure() 295 if (!memcg || mem_cgroup_is_root(memcg)) in vmpressure() 319 mem_cgroup_set_socket_pressure(memcg); in vmpressure() 335 void vmpressure_prio(gfp_t gfp, struct mem_cgroup *memcg, int prio) in vmpressure_prio() argument 351 vmpressure(gfp, memcg, true, vmpressure_win, 0); in vmpressure_prio() [all …]
|
| H A D | zswap.c | 671 struct mem_cgroup *memcg; in zswap_lru_add() local 685 memcg = mem_cgroup_from_entry(entry); in zswap_lru_add() 687 list_lru_add(list_lru, &entry->lru, nid, memcg); in zswap_lru_add() 694 struct mem_cgroup *memcg; in zswap_lru_del() local 697 memcg = mem_cgroup_from_entry(entry); in zswap_lru_del() 699 list_lru_del(list_lru, &entry->lru, nid, memcg); in zswap_lru_del() 730 void zswap_memcg_offline_cleanup(struct mem_cgroup *memcg) in zswap_memcg_offline_cleanup() argument 734 if (zswap_next_shrink == memcg) { in zswap_memcg_offline_cleanup() 1181 !mem_cgroup_zswap_writeback_enabled(sc->memcg)) { in zswap_shrinker_scan() 1198 struct mem_cgroup *memcg = sc->memcg; in zswap_shrinker_count() local [all …]
|
| H A D | huge_memory.c | 1163 static struct deferred_split *memcg_split_queue(int nid, struct mem_cgroup *memcg) in memcg_split_queue() argument 1165 return memcg ? &memcg->deferred_split_queue : split_queue_node(nid); in memcg_split_queue() 1175 static struct deferred_split *memcg_split_queue(int nid, struct mem_cgroup *memcg) in memcg_split_queue() argument 1181 static struct deferred_split *split_queue_lock(int nid, struct mem_cgroup *memcg) in split_queue_lock() argument 1186 queue = memcg_split_queue(nid, memcg); in split_queue_lock() 1193 if (unlikely(memcg_is_dying(memcg))) { in split_queue_lock() 1195 memcg = parent_mem_cgroup(memcg); in split_queue_lock() 1203 split_queue_lock_irqsave(int nid, struct mem_cgroup *memcg, unsigned long *flags) in split_queue_lock_irqsave() argument 1208 queue = memcg_split_queue(nid, memcg); in split_queue_lock_irqsave() 1210 if (unlikely(memcg_is_dying(memcg))) { in split_queue_lock_irqsave() [all …]
|
| H A D | page_owner.c | 516 struct mem_cgroup *memcg; in print_page_owner_memcg() local 529 memcg = page_memcg_check(page); in print_page_owner_memcg() 530 if (!memcg) in print_page_owner_memcg() 533 online = css_is_online(&memcg->css); in print_page_owner_memcg() 534 cgroup_name(memcg->css.cgroup, name, sizeof(name)); in print_page_owner_memcg()
|
| H A D | migrate.c | 673 struct mem_cgroup *memcg; in __folio_migrate_mapping() local 676 memcg = folio_memcg(folio); in __folio_migrate_mapping() 677 old_lruvec = mem_cgroup_lruvec(memcg, oldzone->zone_pgdat); in __folio_migrate_mapping() 678 new_lruvec = mem_cgroup_lruvec(memcg, newzone->zone_pgdat); in __folio_migrate_mapping() 2747 struct mem_cgroup *memcg = get_mem_cgroup_from_folio(folio); in migrate_misplaced_folio() local 2748 struct lruvec *lruvec = mem_cgroup_lruvec(memcg, pgdat); in migrate_misplaced_folio() 2758 count_memcg_events(memcg, NUMA_PAGE_MIGRATE, nr_succeeded); in migrate_misplaced_folio() 2764 mem_cgroup_put(memcg); in migrate_misplaced_folio()
|
| H A D | rmap.c | 911 struct mem_cgroup *memcg; member 1031 struct mem_cgroup *memcg = pra->memcg; in invalid_folio_referenced_vma() local 1046 if (memcg && !mm_match_cgroup(vma->vm_mm, memcg)) in invalid_folio_referenced_vma() 1065 struct mem_cgroup *memcg, vm_flags_t *vm_flags) in folio_referenced() argument 1070 .memcg = memcg, in folio_referenced()
|
| /linux/tools/testing/selftests/cgroup/ |
| H A D | test_memcontrol.c | 251 char *memcg; in test_memcg_current_peak() 256 memcg = cg_name(root, "memcg_test"); in test_memcg_current_peak() 257 if (!memcg) in test_memcg_current_peak() 260 if (cg_create(memcg)) in test_memcg_current_peak() 263 current = cg_read_long(memcg, "memory.current"); in test_memcg_current_peak() 267 peak = cg_read_long(memcg, "memory.peak"); in test_memcg_current_peak() 271 if (cg_run(memcg, alloc_anon_50M_check, NULL)) in test_memcg_current_peak() 274 peak = cg_read_long(memcg, "memory.peak"); in test_memcg_current_peak() 283 peak_fd = cg_open(memcg, "memory.peak", O_RDWR | O_APPEND | O_CLOEXEC); in test_memcg_current_peak() 304 peak_fd2 = cg_open(memcg, "memor in test_memcg_current_peak() 248 char *memcg; test_memcg_current_peak() local 703 char *memcg; test_memcg_high() local 766 char *memcg; test_memcg_high_sync() local 828 char *memcg; test_memcg_max() local 886 reclaim_until(const char * memcg,long goal) reclaim_until() argument 922 char *memcg; test_memcg_reclaim() local 1026 char *memcg; test_memcg_swap_max_peak() local 1225 char *memcg; test_memcg_oom_events() local 1386 char *memcg; test_memcg_sock() local 1584 char *memcg; test_memcg_oom_group_score_events() local [all...] |
| H A D | memcg_protection.m | 5 % This script simulates reclaim protection behavior on a single level of memcg 65 % commit 1bc63fb1272b ("mm, memcg: make scan aggression always exclude protection")
|
| /linux/include/linux/ |
| 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 | oom.h | 36 struct mem_cgroup *memcg; member
|
| H A D | shrinker.h | 55 struct mem_cgroup *memcg; member
|
| /linux/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/include/linux/sched/ |
| H A D | mm.h | 492 set_active_memcg(struct mem_cgroup *memcg) in set_active_memcg() argument 498 this_cpu_write(int_active_memcg, memcg); in set_active_memcg() 501 current->active_memcg = memcg; in set_active_memcg() 508 set_active_memcg(struct mem_cgroup *memcg) in set_active_memcg() argument
|
| /linux/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
|
| H A D | vmalloced-kernel-stacks.rst | 87 进行memcg核算。因此,__vmalloc_node_range被调用时没有__GFP_ACCOUNT。
|
| /linux/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
|
| H A D | multigen_lru.rst | 106 accessed over different time intervals for each memcg and node. 111 memcg memcg_id memcg_path
|
| /linux/Documentation/mm/ |
| H A D | multigen_lru.rst | 162 An ``mm_struct`` list is maintained for each memcg, and an 163 ``mm_struct`` follows its owner task to the new memcg when this task 173 ``mm_struct`` was migrated, pages left in the previous memcg will be 174 ignored when the current memcg is under reclaim. Similarly, page table 225 An memcg LRU is a per-node LRU of memcgs. It is also an LRU of LRUs, 226 since each node and memcg combination has an LRU of folios (see 229 data centers. Note that memcg LRU only applies to global reclaim. 231 The basic structure of an memcg LRU can be understood by an analogy to 238 3. Other events trigger similar operations, e.g., offlining an memcg 243 1. Sharding, which allows each thread to start at a random memcg (in
|
| /linux/kernel/bpf/ |
| H A D | memalloc.c | 209 struct mem_cgroup *memcg = NULL, *old_memcg; in alloc_bulk() local 240 memcg = get_memcg(c); in alloc_bulk() 241 old_memcg = set_active_memcg(memcg); in alloc_bulk() 254 mem_cgroup_put(memcg); in alloc_bulk() 988 struct mem_cgroup *memcg, *old_memcg; in bpf_mem_cache_alloc_flags() local 990 memcg = get_memcg(c); in bpf_mem_cache_alloc_flags() 991 old_memcg = set_active_memcg(memcg); in bpf_mem_cache_alloc_flags() 996 mem_cgroup_put(memcg); in bpf_mem_cache_alloc_flags()
|
| H A D | syscall.c | 528 struct mem_cgroup *memcg, *old_memcg; in bpf_map_kmalloc_node() local 531 bpf_map_memcg_enter(map, &old_memcg, &memcg); in bpf_map_kmalloc_node() 533 bpf_map_memcg_exit(old_memcg, memcg); in bpf_map_kmalloc_node() 541 struct mem_cgroup *memcg, *old_memcg; in bpf_map_kmalloc_nolock() local 544 bpf_map_memcg_enter(map, &old_memcg, &memcg); in bpf_map_kmalloc_nolock() 546 bpf_map_memcg_exit(old_memcg, memcg); in bpf_map_kmalloc_nolock() 553 struct mem_cgroup *memcg, *old_memcg; in bpf_map_kzalloc() local 556 bpf_map_memcg_enter(map, &old_memcg, &memcg); in bpf_map_kzalloc() 558 bpf_map_memcg_exit(old_memcg, memcg); in bpf_map_kzalloc() 566 struct mem_cgroup *memcg, *old_memcg; in bpf_map_kvcalloc() local [all …]
|
| /linux/fs/notify/ |
| H A D | group.c | 27 mem_cgroup_put(group->memcg); in fsnotify_final_destroy_group()
|
| /linux/mm/damon/ |
| H A D | sysfs-schemes.c | 2565 static bool damon_sysfs_memcg_path_eq(struct mem_cgroup *memcg, in damon_sysfs_memcg_path_eq() argument 2569 cgroup_path(memcg->css.cgroup, memcg_path_buf, PATH_MAX); in damon_sysfs_memcg_path_eq() 2578 struct mem_cgroup *memcg; in damon_sysfs_memcg_path_to_id() local 2589 for (memcg = mem_cgroup_iter(NULL, NULL, NULL); memcg; in damon_sysfs_memcg_path_to_id() 2590 memcg = mem_cgroup_iter(NULL, memcg, NULL)) { in damon_sysfs_memcg_path_to_id() 2592 if (!mem_cgroup_online(memcg)) in damon_sysfs_memcg_path_to_id() 2594 if (damon_sysfs_memcg_path_eq(memcg, path, memcg_path)) { in damon_sysfs_memcg_path_to_id() 2595 *id = mem_cgroup_id(memcg); in damon_sysfs_memcg_path_to_id()
|
| H A D | core.c | 2254 struct mem_cgroup *memcg; in damos_get_node_memcg_used_bp() local 2266 memcg = mem_cgroup_get_from_id(goal->memcg_id); in damos_get_node_memcg_used_bp() 2267 if (!memcg) { in damos_get_node_memcg_used_bp() 2274 mem_cgroup_flush_stats(memcg); in damos_get_node_memcg_used_bp() 2275 lruvec = mem_cgroup_lruvec(memcg, NODE_DATA(goal->nid)); in damos_get_node_memcg_used_bp() 2281 mem_cgroup_put(memcg); in damos_get_node_memcg_used_bp()
|
| /linux/fs/notify/inotify/ |
| H A D | inotify_fsnotify.c | 95 old_memcg = set_active_memcg(group->memcg); in inotify_handle_inode_event()
|