Lines Matching refs:sc
16 static inline bool is_swap_not_allowed(struct scan_control *sc, int swappiness) in is_swap_not_allowed() argument
18 return !sc->may_swap || !swappiness || !get_nr_swap_pages(); in is_swap_not_allowed()
32 struct scan_control *sc, unsigned long *nr, in get_scan_count_hyperhold() argument
49 if (cgroup_reclaim(sc) && !swappiness) { in get_scan_count_hyperhold()
59 if (!sc->priority && swappiness) { in get_scan_count_hyperhold()
64 if (!cgroup_reclaim(sc)) { in get_scan_count_hyperhold()
86 sc->reclaim_idx) >> in get_scan_count_hyperhold()
87 (unsigned int)sc->priority)) { in get_scan_count_hyperhold()
106 lruvec_lru_size(lruvec, LRU_INACTIVE_FILE, sc->reclaim_idx) >> sc->priority) { in get_scan_count_hyperhold()
128 total_cost = sc->anon_cost + sc->file_cost; in get_scan_count_hyperhold()
129 anon_cost = total_cost + sc->anon_cost; in get_scan_count_hyperhold()
130 file_cost = total_cost + sc->file_cost; in get_scan_count_hyperhold()
150 lruvec_size = lruvec_lru_size(lruvec, lru, sc->reclaim_idx); in get_scan_count_hyperhold()
153 scan >>= sc->priority; in get_scan_count_hyperhold()
187 struct mem_cgroup *memcg, struct scan_control *sc, in shrink_anon_memcg() argument
205 lruvec, sc); in shrink_anon_memcg()
208 if (sc->nr_reclaimed >= sc->nr_to_reclaim || in shrink_anon_memcg()
209 (sc->isolate_count > ISOLATE_LIMIT_CNT && in shrink_anon_memcg()
210 sc->invoker == DIRECT_RECLAIM)) in shrink_anon_memcg()
214 sc->nr_reclaimed += nr_reclaimed; in shrink_anon_memcg()
215 sc->nr_reclaimed_anon += nr_reclaimed; in shrink_anon_memcg()
234 struct scan_control *sc, unsigned long *nr) in shrink_anon() argument
239 struct mem_cgroup *target_memcg = sc->target_mem_cgroup; in shrink_anon()
254 reclaimed = sc->nr_reclaimed; in shrink_anon()
255 scanned = sc->nr_scanned; in shrink_anon()
289 if (!sc->memcg_low_reclaim) { in shrink_anon()
290 sc->memcg_low_skipped = 1; in shrink_anon()
296 shrink_anon_memcg(pgdat, memcg, sc, nr_memcg); in shrink_anon()
297 shrink_slab(sc->gfp_mask, pgdat->node_id, memcg, in shrink_anon()
298 sc->priority); in shrink_anon()
300 vmpressure(sc->gfp_mask, memcg, false, in shrink_anon()
301 sc->nr_scanned - scanned, in shrink_anon()
302 sc->nr_reclaimed - reclaimed); in shrink_anon()
304 if (sc->nr_reclaimed >= sc->nr_to_reclaim || in shrink_anon()
305 (sc->isolate_count > ISOLATE_LIMIT_CNT && in shrink_anon()
306 sc->invoker == DIRECT_RECLAIM)) { in shrink_anon()
314 struct scan_control *sc, unsigned long *nr) in shrink_file() argument
332 lruvec, sc); in shrink_file()
337 sc->nr_reclaimed += nr_reclaimed; in shrink_file()
338 sc->nr_reclaimed_file += nr_reclaimed; in shrink_file()
341 bool shrink_node_hyperhold(struct pglist_data *pgdat, struct scan_control *sc) in shrink_node_hyperhold() argument
348 target_lruvec = mem_cgroup_lruvec(sc->target_mem_cgroup, pgdat); in shrink_node_hyperhold()
354 memset(&sc->nr, 0, sizeof(sc->nr)); in shrink_node_hyperhold()
355 nr_reclaimed = sc->nr_reclaimed; in shrink_node_hyperhold()
361 sc->anon_cost = mem_cgroup_lruvec(NULL, pgdat)->anon_cost; in shrink_node_hyperhold()
362 sc->file_cost = node_lruvec(pgdat)->file_cost; in shrink_node_hyperhold()
369 if (!sc->force_deactivate) { in shrink_node_hyperhold()
376 sc->may_deactivate |= DEACTIVATE_ANON; in shrink_node_hyperhold()
378 sc->may_deactivate &= ~DEACTIVATE_ANON; in shrink_node_hyperhold()
390 sc->may_deactivate |= DEACTIVATE_FILE; in shrink_node_hyperhold()
396 sc->may_deactivate |= DEACTIVATE_FILE; in shrink_node_hyperhold()
399 sc->may_deactivate &= ~DEACTIVATE_FILE; in shrink_node_hyperhold()
401 sc->may_deactivate = DEACTIVATE_ANON | DEACTIVATE_FILE; in shrink_node_hyperhold()
413 if (file >> sc->priority && !(sc->may_deactivate & DEACTIVATE_FILE)) in shrink_node_hyperhold()
414 sc->cache_trim_mode = 1; in shrink_node_hyperhold()
416 sc->cache_trim_mode = 0; in shrink_node_hyperhold()
427 if (!cgroup_reclaim(sc)) { in shrink_node_hyperhold()
452 sc->file_is_tiny = in shrink_node_hyperhold()
454 !(sc->may_deactivate & DEACTIVATE_ANON) && in shrink_node_hyperhold()
455 anon >> sc->priority; in shrink_node_hyperhold()
458 get_scan_count_hyperhold(pgdat, sc, nr, &node_lru_pages); in shrink_node_hyperhold()
460 if (!cgroup_reclaim(sc)) { in shrink_node_hyperhold()
462 shrink_file(pgdat, sc, nr); in shrink_node_hyperhold()
466 shrink_anon(pgdat, sc, nr); in shrink_node_hyperhold()
468 if (sc->nr_reclaimed - nr_reclaimed) in shrink_node_hyperhold()
489 if (sc->nr.writeback && sc->nr.writeback == sc->nr.taken) in shrink_node_hyperhold()
493 if (sc->nr.unqueued_dirty == sc->nr.file_taken) in shrink_node_hyperhold()
502 if (sc->nr.immediate) in shrink_node_hyperhold()
510 (cgroup_reclaim(sc) && writeback_throttling_sane(sc))) && in shrink_node_hyperhold()
511 sc->nr.dirty && sc->nr.dirty == sc->nr.congested) in shrink_node_hyperhold()
521 !sc->hibernation_mode && in shrink_node_hyperhold()
525 } while (should_continue_reclaim(pgdat, sc->nr_reclaimed - nr_reclaimed, in shrink_node_hyperhold()
526 sc)); in shrink_node_hyperhold()