Lines Matching refs:pgdat
2699 static bool pfmemalloc_watermark_ok(pg_data_t *pgdat) in pfmemalloc_watermark_ok() argument
2708 zone = &pgdat->node_zones[i]; in pfmemalloc_watermark_ok()
2724 if (!wmark_ok && waitqueue_active(&pgdat->kswapd_wait)) { in pfmemalloc_watermark_ok()
2725 pgdat->classzone_idx = min(pgdat->classzone_idx, in pfmemalloc_watermark_ok()
2727 wake_up_interruptible(&pgdat->kswapd_wait); in pfmemalloc_watermark_ok()
2747 pg_data_t *pgdat = NULL; in throttle_direct_reclaim() local
2786 pgdat = zone->zone_pgdat; in throttle_direct_reclaim()
2787 if (pfmemalloc_watermark_ok(pgdat)) in throttle_direct_reclaim()
2793 if (!pgdat) in throttle_direct_reclaim()
2808 wait_event_interruptible_timeout(pgdat->pfmemalloc_wait, in throttle_direct_reclaim()
2809 pfmemalloc_watermark_ok(pgdat), HZ); in throttle_direct_reclaim()
2816 pfmemalloc_watermark_ok(pgdat)); in throttle_direct_reclaim()
2993 static bool pgdat_balanced(pg_data_t *pgdat, int order, int classzone_idx) in pgdat_balanced() argument
3001 struct zone *zone = pgdat->node_zones + i; in pgdat_balanced()
3038 static bool prepare_kswapd_sleep(pg_data_t *pgdat, int order, long remaining, in prepare_kswapd_sleep() argument
3058 if (waitqueue_active(&pgdat->pfmemalloc_wait)) in prepare_kswapd_sleep()
3059 wake_up_all(&pgdat->pfmemalloc_wait); in prepare_kswapd_sleep()
3061 return pgdat_balanced(pgdat, order, classzone_idx); in prepare_kswapd_sleep()
3156 static unsigned long balance_pgdat(pg_data_t *pgdat, int order, in balance_pgdat() argument
3184 for (i = pgdat->nr_zones - 1; i >= 0; i--) { in balance_pgdat()
3185 struct zone *zone = pgdat->node_zones + i; in balance_pgdat()
3228 struct zone *zone = pgdat->node_zones + i; in balance_pgdat()
3262 struct zone *zone = pgdat->node_zones + i; in balance_pgdat()
3298 if (waitqueue_active(&pgdat->pfmemalloc_wait) && in balance_pgdat()
3299 pfmemalloc_watermark_ok(pgdat)) in balance_pgdat()
3300 wake_up_all(&pgdat->pfmemalloc_wait); in balance_pgdat()
3322 compact_pgdat(pgdat, order); in balance_pgdat()
3331 !pgdat_balanced(pgdat, order, *classzone_idx)); in balance_pgdat()
3344 static void kswapd_try_to_sleep(pg_data_t *pgdat, int order, int classzone_idx) in kswapd_try_to_sleep() argument
3352 prepare_to_wait(&pgdat->kswapd_wait, &wait, TASK_INTERRUPTIBLE); in kswapd_try_to_sleep()
3355 if (prepare_kswapd_sleep(pgdat, order, remaining, classzone_idx)) { in kswapd_try_to_sleep()
3357 finish_wait(&pgdat->kswapd_wait, &wait); in kswapd_try_to_sleep()
3358 prepare_to_wait(&pgdat->kswapd_wait, &wait, TASK_INTERRUPTIBLE); in kswapd_try_to_sleep()
3365 if (prepare_kswapd_sleep(pgdat, order, remaining, classzone_idx)) { in kswapd_try_to_sleep()
3366 trace_mm_vmscan_kswapd_sleep(pgdat->node_id); in kswapd_try_to_sleep()
3376 set_pgdat_percpu_threshold(pgdat, calculate_normal_threshold); in kswapd_try_to_sleep()
3384 reset_isolation_suitable(pgdat); in kswapd_try_to_sleep()
3389 set_pgdat_percpu_threshold(pgdat, calculate_pressure_threshold); in kswapd_try_to_sleep()
3396 finish_wait(&pgdat->kswapd_wait, &wait); in kswapd_try_to_sleep()
3418 pg_data_t *pgdat = (pg_data_t*)p; in kswapd() local
3424 const struct cpumask *cpumask = cpumask_of_node(pgdat->node_id); in kswapd()
3449 classzone_idx = new_classzone_idx = pgdat->nr_zones - 1; in kswapd()
3461 new_order = pgdat->kswapd_max_order; in kswapd()
3462 new_classzone_idx = pgdat->classzone_idx; in kswapd()
3463 pgdat->kswapd_max_order = 0; in kswapd()
3464 pgdat->classzone_idx = pgdat->nr_zones - 1; in kswapd()
3475 kswapd_try_to_sleep(pgdat, balanced_order, in kswapd()
3477 order = pgdat->kswapd_max_order; in kswapd()
3478 classzone_idx = pgdat->classzone_idx; in kswapd()
3481 pgdat->kswapd_max_order = 0; in kswapd()
3482 pgdat->classzone_idx = pgdat->nr_zones - 1; in kswapd()
3494 trace_mm_vmscan_kswapd_wake(pgdat->node_id, order); in kswapd()
3496 balanced_order = balance_pgdat(pgdat, order, in kswapd()
3513 pg_data_t *pgdat; in wakeup_kswapd() local
3520 pgdat = zone->zone_pgdat; in wakeup_kswapd()
3521 if (pgdat->kswapd_max_order < order) { in wakeup_kswapd()
3522 pgdat->kswapd_max_order = order; in wakeup_kswapd()
3523 pgdat->classzone_idx = min(pgdat->classzone_idx, classzone_idx); in wakeup_kswapd()
3525 if (!waitqueue_active(&pgdat->kswapd_wait)) in wakeup_kswapd()
3530 trace_mm_vmscan_wakeup_kswapd(pgdat->node_id, zone_idx(zone), order); in wakeup_kswapd()
3531 wake_up_interruptible(&pgdat->kswapd_wait); in wakeup_kswapd()
3585 pg_data_t *pgdat = NODE_DATA(nid); in cpu_callback() local
3588 mask = cpumask_of_node(pgdat->node_id); in cpu_callback()
3592 set_cpus_allowed_ptr(pgdat->kswapd, mask); in cpu_callback()
3604 pg_data_t *pgdat = NODE_DATA(nid); in kswapd_run() local
3607 if (pgdat->kswapd) in kswapd_run()
3610 pgdat->kswapd = kthread_run(kswapd, pgdat, "kswapd%d", nid); in kswapd_run()
3611 if (IS_ERR(pgdat->kswapd)) { in kswapd_run()
3615 ret = PTR_ERR(pgdat->kswapd); in kswapd_run()
3616 pgdat->kswapd = NULL; in kswapd_run()