Lines Matching full:tier
151 /* Always discard instead of demoting to lower tier memory */
1565 * Reclaiming directly from top tier nodes is not often desired in shrink_folio_list()
1567 * should be reclaimed from lower tier nodes and demoted from in shrink_folio_list()
1568 * top tier nodes. in shrink_folio_list()
1570 * However, disabling reclaim from top tier nodes entirely in shrink_folio_list()
1571 * would cause ooms in edge scenarios where lower tier memory in shrink_folio_list()
1574 * from top tier nodes in proactive reclaim though as that is in shrink_folio_list()
3096 * The P term is refaulted/(evicted+protected) from a tier in the generation
3101 * The setpoint (SP) is always the first tier of one type; the process variable
3102 * (PV) is either any tier of the other type or any other tier of the same
3118 static void read_ctrl_pos(struct lruvec *lruvec, int type, int tier, int gain, in read_ctrl_pos() argument
3128 for (i = tier % MAX_NR_TIERS; i <= min(tier, MAX_NR_TIERS - 1); i++) { in read_ctrl_pos()
3139 int hist, tier; in reset_ctrl_pos() local
3151 for (tier = 0; tier < MAX_NR_TIERS; tier++) { in reset_ctrl_pos()
3155 sum = lrugen->avg_refaulted[type][tier] + in reset_ctrl_pos()
3156 atomic_long_read(&lrugen->refaulted[hist][type][tier]); in reset_ctrl_pos()
3157 WRITE_ONCE(lrugen->avg_refaulted[type][tier], sum / 2); in reset_ctrl_pos()
3159 sum = lrugen->avg_total[type][tier] + in reset_ctrl_pos()
3160 lrugen->protected[hist][type][tier] + in reset_ctrl_pos()
3161 atomic_long_read(&lrugen->evicted[hist][type][tier]); in reset_ctrl_pos()
3162 WRITE_ONCE(lrugen->avg_total[type][tier], sum / 2); in reset_ctrl_pos()
3166 atomic_long_set(&lrugen->refaulted[hist][type][tier], 0); in reset_ctrl_pos()
3167 atomic_long_set(&lrugen->evicted[hist][type][tier], 0); in reset_ctrl_pos()
3168 WRITE_ONCE(lrugen->protected[hist][type][tier], 0); in reset_ctrl_pos()
3837 int tier = lru_tier_from_refs(refs, workingset); in inc_min_seq() local
3840 WRITE_ONCE(lrugen->protected[hist][type][tier], in inc_min_seq()
3841 lrugen->protected[hist][type][tier] + delta); in inc_min_seq()
4392 int tier = lru_tier_from_refs(refs, workingset); in sort_folio() local
4414 if (tier > tier_idx || refs + workingset == BIT(LRU_REFS_WIDTH) + 1) { in sort_folio()
4422 WRITE_ONCE(lrugen->protected[hist][type][tier], in sort_folio()
4423 lrugen->protected[hist][type][tier] + delta); in sort_folio()
4487 int type, int tier, struct list_head *list) in scan_folios() argument
4524 if (sort_folio(lruvec, folio, sc, tier)) in scan_folios()
4570 int tier; in get_tier_idx() local
4575 * This value is chosen because any other tier would have at least twice in get_tier_idx()
4576 * as many refaults as the first tier. in get_tier_idx()
4579 for (tier = 1; tier < MAX_NR_TIERS; tier++) { in get_tier_idx()
4580 read_ctrl_pos(lruvec, type, tier, 3, &pv); in get_tier_idx()
4585 return tier - 1; in get_tier_idx()
4615 int tier = get_tier_idx(lruvec, type); in isolate_folios() local
4619 scanned = scan_folios(lruvec, sc, type, tier, list); in isolate_folios()
5299 int type, tier; in lru_gen_seq_show_full() local
5304 for (tier = 0; tier < MAX_NR_TIERS; tier++) { in lru_gen_seq_show_full()
5305 seq_printf(m, " %10d", tier); in lru_gen_seq_show_full()
5312 n[0] = READ_ONCE(lrugen->avg_refaulted[type][tier]); in lru_gen_seq_show_full()
5313 n[1] = READ_ONCE(lrugen->avg_total[type][tier]); in lru_gen_seq_show_full()
5316 n[0] = atomic_long_read(&lrugen->refaulted[hist][type][tier]); in lru_gen_seq_show_full()
5317 n[1] = atomic_long_read(&lrugen->evicted[hist][type][tier]); in lru_gen_seq_show_full()
5318 n[2] = READ_ONCE(lrugen->protected[hist][type][tier]); in lru_gen_seq_show_full()