| /linux/mm/ |
| H A D | folio.c | 67 static void __page_cache_release(struct folio *folio, struct lruvec **lruvecp, in __page_cache_release() 83 struct lruvec *lruvec = NULL; in page_cache_release() local 86 __page_cache_release(folio, &lruvec, &flags); in page_cache_release() 87 if (lruvec) in page_cache_release() 88 lruvec_unlock_irqrestore(lruvec, flags); in page_cache_release() 110 typedef void (*move_fn_t)(struct lruvec *lruvec, struct folio *folio); 112 static void lru_add(struct lruvec *lruvec, struct folio *folio) in lru_add() argument 148 lruvec_add_folio(lruvec, folio); in lru_add() 155 struct lruvec *lruvec = NULL; in folio_batch_move_lru() local 193 folio_lruvec_relock_irqsave(folio, &lruvec, &flags); in folio_batch_move_lru() [all …]
|
| H A D | vmscan.c | 394 unsigned long lruvec_lru_size(struct lruvec *lruvec, enum lru_list lru, int zone_idx) in lruvec_lru_size() argument 400 for_each_managed_zone_pgdat(zone, lruvec_pgdat(lruvec), zid, zone_idx) { in lruvec_lru_size() 402 size += mem_cgroup_get_zone_lru_size(lruvec, lru, zid); in lruvec_lru_size() 1644 static __always_inline void update_lru_sizes(struct lruvec *lruvec, in update_lru_sizes() argument 1653 update_lru_size(lruvec, lru, zid, -nr_zone_taken[zid]); in update_lru_sizes() 1680 struct lruvec *lruvec, struct list_head *dst, in isolate_lru_folios() argument 1684 struct list_head *src = &lruvec->lists[lru]; in isolate_lru_folios() 1769 update_lru_sizes(lruvec, lru, nr_zone_taken); in isolate_lru_folios() 1803 struct lruvec *lruvec; in folio_isolate_lru() local 1806 lruvec = folio_lruvec_lock_irq(folio); in folio_isolate_lru() [all …]
|
| H A D | workingset.c | 240 struct lruvec *lruvec; in lru_gen_eviction() local 256 lruvec = mem_cgroup_lruvec(memcg, pgdat); in lru_gen_eviction() 257 lrugen = &lruvec->lrugen; in lru_gen_eviction() 273 static bool lru_gen_test_recent(void *shadow, struct lruvec **lruvec, in lru_gen_test_recent() argument 284 *lruvec = mem_cgroup_lruvec(memcg, pgdat); in lru_gen_test_recent() 286 max_seq = READ_ONCE((*lruvec)->lrugen.max_seq); in lru_gen_test_recent() 298 struct lruvec *lruvec; in lru_gen_refault() local 305 recent = lru_gen_test_recent(shadow, &lruvec, &token, &workingset, type); in lru_gen_refault() 306 if (lruvec != folio_lruvec(folio)) in lru_gen_refault() 309 mod_lruvec_state(lruvec, WORKINGSET_REFAULT_BASE + type, delta); in lru_gen_refault() [all …]
|
| H A D | mlock.c | 61 static struct lruvec *__mlock_folio(struct folio *folio, struct lruvec *lruvec) in __mlock_folio() argument 65 return lruvec; in __mlock_folio() 67 lruvec = folio_lruvec_relock_irq(folio, lruvec); in __mlock_folio() 76 lruvec_del_folio(lruvec, folio); in __mlock_folio() 78 lruvec_add_folio(lruvec, folio); in __mlock_folio() 92 lruvec_del_folio(lruvec, folio); in __mlock_folio() 96 lruvec_add_folio(lruvec, folio); in __mlock_folio() 100 return lruvec; in __mlock_folio() 103 static struct lruvec *__mlock_new_folio(struct folio *folio, struct lruvec *lruvec) in __mlock_new_folio() argument 107 lruvec = folio_lruvec_relock_irq(folio, lruvec); in __mlock_new_folio() [all …]
|
| H A D | mmzone.c | 76 void lruvec_init(struct lruvec *lruvec) in lruvec_init() argument 80 memset(lruvec, 0, sizeof(struct lruvec)); in lruvec_init() 81 spin_lock_init(&lruvec->lru_lock); in lruvec_init() 82 spin_lock_init(&lruvec->cost_lock); in lruvec_init() 83 zswap_lruvec_state_init(lruvec); in lruvec_init() 86 INIT_LIST_HEAD(&lruvec->lists[lru]); in lruvec_init() 93 list_del(&lruvec->lists[LRU_UNEVICTABLE]); in lruvec_init() 95 lru_gen_init_lruvec(lruvec); in lruvec_init()
|
| H A D | memcontrol.c | 492 unsigned long lruvec_page_state(struct lruvec *lruvec, enum node_stat_item idx) in lruvec_page_state() argument 499 return node_page_state(lruvec_pgdat(lruvec), idx); in lruvec_page_state() 505 pn = container_of(lruvec, struct mem_cgroup_per_node, lruvec); in lruvec_page_state() 533 unsigned long lruvec_page_state_monotonic(struct lruvec *lruvec, in lruvec_page_state_monotonic() argument 540 return node_page_state_monotonic(lruvec_pgdat(lruvec), idx); in lruvec_page_state_monotonic() 546 pn = container_of(lruvec, struct mem_cgroup_per_node, lruvec); in lruvec_page_state_monotonic() 550 unsigned long lruvec_page_state_local(struct lruvec *lruvec, in lruvec_page_state_local() argument 558 return node_page_state(lruvec_pgdat(lruvec), idx); in lruvec_page_state_local() 564 pn = container_of(lruvec, struct mem_cgroup_per_node, lruvec); in lruvec_page_state_local() 583 struct lruvec *child_lruvec = mem_cgroup_lruvec(memcg, NODE_DATA(nid)); in reparent_memcg_lruvec_state_local() [all …]
|
| H A D | zswap.c | 703 void zswap_lruvec_state_init(struct lruvec *lruvec) in zswap_lruvec_state_init() argument 705 atomic_long_set(&lruvec->zswap_lruvec_state.nr_disk_swapins, 0); in zswap_lruvec_state_init() 710 struct lruvec *lruvec; in zswap_folio_swapin() local 714 lruvec = folio_lruvec(folio); in zswap_folio_swapin() 715 atomic_long_inc(&lruvec->zswap_lruvec_state.nr_disk_swapins); in zswap_folio_swapin() 1196 struct lruvec *lruvec = mem_cgroup_lruvec(memcg, NODE_DATA(sc->nid)); in zswap_shrinker_count() local 1198 &lruvec->zswap_lruvec_state.nr_disk_swapins; in zswap_shrinker_count()
|
| H A D | internal.h | 37 void workingset_age_nonresident(struct lruvec *lruvec, unsigned long nr_pages); 72 unsigned long lruvec_lru_size(struct lruvec *lruvec, enum lru_list lru,
|
| H A D | memcontrol-v1.c | 2094 struct lruvec *lruvec = mem_cgroup_lruvec(memcg, NODE_DATA(nid)); in mem_cgroup_node_nr_lru_pages() local 2104 nr += lruvec_page_state(lruvec, NR_LRU_BASE + lru); in mem_cgroup_node_nr_lru_pages() 2106 nr += lruvec_page_state_local(lruvec, NR_LRU_BASE + lru); in mem_cgroup_node_nr_lru_pages() 2300 anon_cost += mz->lruvec.cost[WORKINGSET_ANON].count; in memcg1_stat_format() 2301 file_cost += mz->lruvec.cost[WORKINGSET_FILE].count; in memcg1_stat_format()
|
| H A D | migrate.c | 685 struct lruvec *old_lruvec, *new_lruvec; in __folio_migrate_mapping() 2762 struct lruvec *lruvec = mem_cgroup_lruvec(memcg, pgdat); in migrate_misplaced_folio() local 2776 mod_lruvec_state(lruvec, PGPROMOTE_SUCCESS, nr_succeeded); in migrate_misplaced_folio()
|
| H A D | huge_memory.c | 3649 struct lruvec *lruvec, struct list_head *list) in lru_add_split_folio() argument 3652 lockdep_assert_held(&lruvec->lru_lock); in lru_add_split_folio() 4001 struct lruvec *lruvec; in __folio_freeze_and_split_unmapped() local 4041 lruvec = folio_lruvec_lock(folio); in __folio_freeze_and_split_unmapped() 4066 lru_add_split_folio(folio, new_folio, lruvec, list); in __folio_freeze_and_split_unmapped() 4109 lruvec_unlock(lruvec); in __folio_freeze_and_split_unmapped()
|
| /linux/include/linux/ |
| H A D | memcontrol.h | 114 struct lruvec lruvec; member 705 static inline struct lruvec *mem_cgroup_lruvec(struct mem_cgroup *memcg, in mem_cgroup_lruvec() 709 struct lruvec *lruvec; in mem_cgroup_lruvec() local 712 lruvec = &pgdat->__lruvec; in mem_cgroup_lruvec() 720 lruvec = &mz->lruvec; in mem_cgroup_lruvec() 727 if (unlikely(lruvec->pgdat != pgdat)) in mem_cgroup_lruvec() 728 lruvec->pgdat = pgdat; in mem_cgroup_lruvec() 729 return lruvec; in mem_cgroup_lruvec() 746 static inline struct lruvec *folio_lruvec(struct folio *folio) in folio_lruvec() 762 struct lruvec *folio_lruvec_lock(struct folio *folio); [all …]
|
| H A D | mmzone.h | 524 struct lruvec; 619 struct lruvec *lruvec; member 691 void lru_gen_init_lruvec(struct lruvec *lruvec); 710 static inline void lru_gen_init_lruvec(struct lruvec *lruvec) in lru_gen_init_lruvec() argument 766 struct lruvec { struct 1592 struct lruvec __lruvec; 1663 extern void lruvec_init(struct lruvec *lruvec); 1665 static inline struct pglist_data *lruvec_pgdat(struct lruvec *lruvec) in lruvec_pgdat() argument 1668 return lruvec->pgdat; in lruvec_pgdat() 1670 return container_of(lruvec, struct pglist_data, __lruvec); in lruvec_pgdat()
|
| H A D | vmstat.h | 534 void mod_lruvec_state(struct lruvec *lruvec, enum node_stat_item idx, 548 static inline void mod_lruvec_state(struct lruvec *lruvec, in mod_lruvec_state() argument 551 mod_node_page_state(lruvec_pgdat(lruvec), idx, val); in mod_lruvec_state()
|
| /linux/Documentation/mm/ |
| H A D | multigen_lru.rst | 83 ``lruvec``. The youngest generation number is stored in 114 The aging produces young generations. Given an ``lruvec``, it 130 The eviction consumes old generations. Given an ``lruvec``, it 148 set, an ``lruvec`` is protected from the eviction when its oldest
|
| /linux/mm/damon/ |
| H A D | core.c | 2832 struct lruvec *lruvec; in damos_get_node_memcg_used_bp() local 2852 lruvec = mem_cgroup_lruvec(memcg, NODE_DATA(goal->nid)); in damos_get_node_memcg_used_bp() 2853 used_pages = lruvec_page_state(lruvec, NR_ACTIVE_ANON); in damos_get_node_memcg_used_bp() 2854 used_pages += lruvec_page_state(lruvec, NR_INACTIVE_ANON); in damos_get_node_memcg_used_bp() 2855 used_pages += lruvec_page_state(lruvec, NR_ACTIVE_FILE); in damos_get_node_memcg_used_bp() 2856 used_pages += lruvec_page_state(lruvec, NR_INACTIVE_FILE); in damos_get_node_memcg_used_bp()
|
| /linux/Documentation/trace/ |
| H A D | events-kmem.rst | 72 contention on the lruvec->lru_lock.
|
| /linux/Documentation/admin-guide/cgroup-v1/ |
| H A D | memory.rst | 313 lruvec->lru_lock. 316 lruvec->lru_lock; the folio LRU flag is cleared before 317 isolating a page from its LRU under lruvec->lru_lock.
|