mm: numa: Structures for Migrate On Fault per NUMA migration rate limiting
This defines the per-node data used by Migrate On Fault in order to rate limit the migration. The rate limiting is applied independently to each destination node. Signed-off-by: Andrea Arcangeli <aarcange@redhat.com> Signed-off-by: Mel Gorman <mgorman@suse.de>
This commit is contained in:
Родитель
9532fec118
Коммит
8177a420ed
|
@ -717,6 +717,19 @@ typedef struct pglist_data {
|
||||||
struct task_struct *kswapd; /* Protected by lock_memory_hotplug() */
|
struct task_struct *kswapd; /* Protected by lock_memory_hotplug() */
|
||||||
int kswapd_max_order;
|
int kswapd_max_order;
|
||||||
enum zone_type classzone_idx;
|
enum zone_type classzone_idx;
|
||||||
|
#ifdef CONFIG_NUMA_BALANCING
|
||||||
|
/*
|
||||||
|
* Lock serializing the per destination node AutoNUMA memory
|
||||||
|
* migration rate limiting data.
|
||||||
|
*/
|
||||||
|
spinlock_t numabalancing_migrate_lock;
|
||||||
|
|
||||||
|
/* Rate limiting time interval */
|
||||||
|
unsigned long numabalancing_migrate_next_window;
|
||||||
|
|
||||||
|
/* Number of pages migrated during the rate limiting time interval */
|
||||||
|
unsigned long numabalancing_migrate_nr_pages;
|
||||||
|
#endif
|
||||||
} pg_data_t;
|
} pg_data_t;
|
||||||
|
|
||||||
#define node_present_pages(nid) (NODE_DATA(nid)->node_present_pages)
|
#define node_present_pages(nid) (NODE_DATA(nid)->node_present_pages)
|
||||||
|
|
|
@ -4449,6 +4449,11 @@ static void __paginginit free_area_init_core(struct pglist_data *pgdat,
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
pgdat_resize_init(pgdat);
|
pgdat_resize_init(pgdat);
|
||||||
|
#ifdef CONFIG_NUMA_BALANCING
|
||||||
|
spin_lock_init(&pgdat->numabalancing_migrate_lock);
|
||||||
|
pgdat->numabalancing_migrate_nr_pages = 0;
|
||||||
|
pgdat->numabalancing_migrate_next_window = jiffies;
|
||||||
|
#endif
|
||||||
init_waitqueue_head(&pgdat->kswapd_wait);
|
init_waitqueue_head(&pgdat->kswapd_wait);
|
||||||
init_waitqueue_head(&pgdat->pfmemalloc_wait);
|
init_waitqueue_head(&pgdat->pfmemalloc_wait);
|
||||||
pgdat_page_cgroup_init(pgdat);
|
pgdat_page_cgroup_init(pgdat);
|
||||||
|
|
Загрузка…
Ссылка в новой задаче