Lines Matching refs:pgdat
2635 static bool pfmemalloc_watermark_ok(pg_data_t *pgdat) in pfmemalloc_watermark_ok() argument
2644 zone = &pgdat->node_zones[i]; in pfmemalloc_watermark_ok()
2659 if (!wmark_ok && waitqueue_active(&pgdat->kswapd_wait)) { in pfmemalloc_watermark_ok()
2660 pgdat->classzone_idx = min(pgdat->classzone_idx, in pfmemalloc_watermark_ok()
2662 wake_up_interruptible(&pgdat->kswapd_wait); in pfmemalloc_watermark_ok()
2682 pg_data_t *pgdat = NULL; in throttle_direct_reclaim() local
2721 pgdat = zone->zone_pgdat; in throttle_direct_reclaim()
2722 if (pfmemalloc_watermark_ok(pgdat)) in throttle_direct_reclaim()
2728 if (!pgdat) in throttle_direct_reclaim()
2743 wait_event_interruptible_timeout(pgdat->pfmemalloc_wait, in throttle_direct_reclaim()
2744 pfmemalloc_watermark_ok(pgdat), HZ); in throttle_direct_reclaim()
2751 pfmemalloc_watermark_ok(pgdat)); in throttle_direct_reclaim()
2928 static bool pgdat_balanced(pg_data_t *pgdat, int order, int classzone_idx) in pgdat_balanced() argument
2936 struct zone *zone = pgdat->node_zones + i; in pgdat_balanced()
2973 static bool prepare_kswapd_sleep(pg_data_t *pgdat, int order, long remaining, in prepare_kswapd_sleep() argument
2993 if (waitqueue_active(&pgdat->pfmemalloc_wait)) in prepare_kswapd_sleep()
2994 wake_up_all(&pgdat->pfmemalloc_wait); in prepare_kswapd_sleep()
2996 return pgdat_balanced(pgdat, order, classzone_idx); in prepare_kswapd_sleep()
3091 static unsigned long balance_pgdat(pg_data_t *pgdat, int order, in balance_pgdat() argument
3119 for (i = pgdat->nr_zones - 1; i >= 0; i--) { in balance_pgdat()
3120 struct zone *zone = pgdat->node_zones + i; in balance_pgdat()
3163 struct zone *zone = pgdat->node_zones + i; in balance_pgdat()
3197 struct zone *zone = pgdat->node_zones + i; in balance_pgdat()
3233 if (waitqueue_active(&pgdat->pfmemalloc_wait) && in balance_pgdat()
3234 pfmemalloc_watermark_ok(pgdat)) in balance_pgdat()
3235 wake_up_all(&pgdat->pfmemalloc_wait); in balance_pgdat()
3257 compact_pgdat(pgdat, order); in balance_pgdat()
3266 !pgdat_balanced(pgdat, order, *classzone_idx)); in balance_pgdat()
3279 static void kswapd_try_to_sleep(pg_data_t *pgdat, int order, int classzone_idx) in kswapd_try_to_sleep() argument
3287 prepare_to_wait(&pgdat->kswapd_wait, &wait, TASK_INTERRUPTIBLE); in kswapd_try_to_sleep()
3290 if (prepare_kswapd_sleep(pgdat, order, remaining, classzone_idx)) { in kswapd_try_to_sleep()
3292 finish_wait(&pgdat->kswapd_wait, &wait); in kswapd_try_to_sleep()
3293 prepare_to_wait(&pgdat->kswapd_wait, &wait, TASK_INTERRUPTIBLE); in kswapd_try_to_sleep()
3300 if (prepare_kswapd_sleep(pgdat, order, remaining, classzone_idx)) { in kswapd_try_to_sleep()
3301 trace_mm_vmscan_kswapd_sleep(pgdat->node_id); in kswapd_try_to_sleep()
3311 set_pgdat_percpu_threshold(pgdat, calculate_normal_threshold); in kswapd_try_to_sleep()
3319 reset_isolation_suitable(pgdat); in kswapd_try_to_sleep()
3324 set_pgdat_percpu_threshold(pgdat, calculate_pressure_threshold); in kswapd_try_to_sleep()
3331 finish_wait(&pgdat->kswapd_wait, &wait); in kswapd_try_to_sleep()
3353 pg_data_t *pgdat = (pg_data_t*)p; in kswapd() local
3359 const struct cpumask *cpumask = cpumask_of_node(pgdat->node_id); in kswapd()
3384 classzone_idx = new_classzone_idx = pgdat->nr_zones - 1; in kswapd()
3396 new_order = pgdat->kswapd_max_order; in kswapd()
3397 new_classzone_idx = pgdat->classzone_idx; in kswapd()
3398 pgdat->kswapd_max_order = 0; in kswapd()
3399 pgdat->classzone_idx = pgdat->nr_zones - 1; in kswapd()
3410 kswapd_try_to_sleep(pgdat, balanced_order, in kswapd()
3412 order = pgdat->kswapd_max_order; in kswapd()
3413 classzone_idx = pgdat->classzone_idx; in kswapd()
3416 pgdat->kswapd_max_order = 0; in kswapd()
3417 pgdat->classzone_idx = pgdat->nr_zones - 1; in kswapd()
3429 trace_mm_vmscan_kswapd_wake(pgdat->node_id, order); in kswapd()
3431 balanced_order = balance_pgdat(pgdat, order, in kswapd()
3448 pg_data_t *pgdat; in wakeup_kswapd() local
3455 pgdat = zone->zone_pgdat; in wakeup_kswapd()
3456 if (pgdat->kswapd_max_order < order) { in wakeup_kswapd()
3457 pgdat->kswapd_max_order = order; in wakeup_kswapd()
3458 pgdat->classzone_idx = min(pgdat->classzone_idx, classzone_idx); in wakeup_kswapd()
3460 if (!waitqueue_active(&pgdat->kswapd_wait)) in wakeup_kswapd()
3465 trace_mm_vmscan_wakeup_kswapd(pgdat->node_id, zone_idx(zone), order); in wakeup_kswapd()
3466 wake_up_interruptible(&pgdat->kswapd_wait); in wakeup_kswapd()
3520 pg_data_t *pgdat = NODE_DATA(nid); in cpu_callback() local
3523 mask = cpumask_of_node(pgdat->node_id); in cpu_callback()
3527 set_cpus_allowed_ptr(pgdat->kswapd, mask); in cpu_callback()
3539 pg_data_t *pgdat = NODE_DATA(nid); in kswapd_run() local
3542 if (pgdat->kswapd) in kswapd_run()
3545 pgdat->kswapd = kthread_run(kswapd, pgdat, "kswapd%d", nid); in kswapd_run()
3546 if (IS_ERR(pgdat->kswapd)) { in kswapd_run()
3550 ret = PTR_ERR(pgdat->kswapd); in kswapd_run()
3551 pgdat->kswapd = NULL; in kswapd_run()