Lines Matching full:tier
2115 * Reclaiming directly from top tier nodes is not often desired in shrink_folio_list()
2117 * should be reclaimed from lower tier nodes and demoted from in shrink_folio_list()
2118 * top tier nodes. in shrink_folio_list()
2120 * However, disabling reclaim from top tier nodes entirely in shrink_folio_list()
2121 * would cause ooms in edge scenarios where lower tier memory in shrink_folio_list()
2124 * from top tier nodes in proactive reclaim though as that is in shrink_folio_list()
3650 * The P term is refaulted/(evicted+protected) from a tier in the generation
3655 * The setpoint (SP) is always the first tier of one type; the process variable
3656 * (PV) is either any tier of the other type or any other tier of the same
3672 static void read_ctrl_pos(struct lruvec *lruvec, int type, int tier, int gain, in read_ctrl_pos() argument
3678 pos->refaulted = lrugen->avg_refaulted[type][tier] + in read_ctrl_pos()
3679 atomic_long_read(&lrugen->refaulted[hist][type][tier]); in read_ctrl_pos()
3680 pos->total = lrugen->avg_total[type][tier] + in read_ctrl_pos()
3681 atomic_long_read(&lrugen->evicted[hist][type][tier]); in read_ctrl_pos()
3682 if (tier) in read_ctrl_pos()
3683 pos->total += lrugen->protected[hist][type][tier - 1]; in read_ctrl_pos()
3689 int hist, tier; in reset_ctrl_pos() local
3701 for (tier = 0; tier < MAX_NR_TIERS; tier++) { in reset_ctrl_pos()
3705 sum = lrugen->avg_refaulted[type][tier] + in reset_ctrl_pos()
3706 atomic_long_read(&lrugen->refaulted[hist][type][tier]); in reset_ctrl_pos()
3707 WRITE_ONCE(lrugen->avg_refaulted[type][tier], sum / 2); in reset_ctrl_pos()
3709 sum = lrugen->avg_total[type][tier] + in reset_ctrl_pos()
3710 atomic_long_read(&lrugen->evicted[hist][type][tier]); in reset_ctrl_pos()
3711 if (tier) in reset_ctrl_pos()
3712 sum += lrugen->protected[hist][type][tier - 1]; in reset_ctrl_pos()
3713 WRITE_ONCE(lrugen->avg_total[type][tier], sum / 2); in reset_ctrl_pos()
3717 atomic_long_set(&lrugen->refaulted[hist][type][tier], 0); in reset_ctrl_pos()
3718 atomic_long_set(&lrugen->evicted[hist][type][tier], 0); in reset_ctrl_pos()
3719 if (tier) in reset_ctrl_pos()
3720 WRITE_ONCE(lrugen->protected[hist][type][tier - 1], 0); in reset_ctrl_pos()
4899 int tier = lru_tier_from_refs(refs); in sort_folio() local
4930 if (tier > tier_idx || refs == BIT(LRU_REFS_WIDTH)) { in sort_folio()
4936 WRITE_ONCE(lrugen->protected[hist][type][tier - 1], in sort_folio()
4937 lrugen->protected[hist][type][tier - 1] + delta); in sort_folio()
4994 int type, int tier, struct list_head *list) in scan_folios() argument
5030 if (sort_folio(lruvec, folio, sc, tier)) in scan_folios()
5071 int tier; in get_tier_idx() local
5076 * This value is chosen because any other tier would have at least twice in get_tier_idx()
5077 * as many refaults as the first tier. in get_tier_idx()
5080 for (tier = 1; tier < MAX_NR_TIERS; tier++) { in get_tier_idx()
5081 read_ctrl_pos(lruvec, type, tier, 2, &pv); in get_tier_idx()
5086 return tier - 1; in get_tier_idx()
5091 int type, tier; in get_type_to_scan() local
5096 * Compare the first tier of anon with that of file to determine which in get_type_to_scan()
5098 * with the first tier of the other type to determine the last tier (of in get_type_to_scan()
5106 for (tier = 1; tier < MAX_NR_TIERS; tier++) { in get_type_to_scan()
5107 read_ctrl_pos(lruvec, type, tier, gain[type], &pv); in get_type_to_scan()
5112 *tier_idx = tier - 1; in get_type_to_scan()
5123 int tier = -1; in isolate_folios() local
5140 type = get_type_to_scan(lruvec, swappiness, &tier); in isolate_folios()
5143 if (tier < 0) in isolate_folios()
5144 tier = get_tier_idx(lruvec, type); in isolate_folios()
5146 scanned = scan_folios(lruvec, sc, type, tier, list); in isolate_folios()
5151 tier = -1; in isolate_folios()
5881 int type, tier; in lru_gen_seq_show_full() local
5885 for (tier = 0; tier < MAX_NR_TIERS; tier++) { in lru_gen_seq_show_full()
5886 seq_printf(m, " %10d", tier); in lru_gen_seq_show_full()
5893 n[0] = READ_ONCE(lrugen->avg_refaulted[type][tier]); in lru_gen_seq_show_full()
5894 n[1] = READ_ONCE(lrugen->avg_total[type][tier]); in lru_gen_seq_show_full()
5897 n[0] = atomic_long_read(&lrugen->refaulted[hist][type][tier]); in lru_gen_seq_show_full()
5898 n[1] = atomic_long_read(&lrugen->evicted[hist][type][tier]); in lru_gen_seq_show_full()
5899 if (tier) in lru_gen_seq_show_full()
5900 n[2] = READ_ONCE(lrugen->protected[hist][type][tier - 1]); in lru_gen_seq_show_full()