From c4749504ccdae8a7ffeea5bf8a96a55e527132eb Mon Sep 17 00:00:00 2001 From: Andrea Arcangeli Date: Fri, 23 Mar 2012 20:56:34 +0100 Subject: [PATCH] --- yaml --- r: 344803 b: refs/heads/master c: 8177a420ed7c16c171ed3c3aec5b0676db38c247 h: refs/heads/master i: 344801: 7dca63fb9f1ecbb51ef976270afe71e9dadb92cd 344799: 21898f0eaac1eb1e2af597417e680f42b36d96e2 v: v3 --- [refs] | 2 +- trunk/include/linux/mmzone.h | 13 +++++++++++++ trunk/mm/page_alloc.c | 5 +++++ 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index 9cfa305fe619..d291f3b53897 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 9532fec118d485ea37ab6e3ea372d68cd8b4cd0d +refs/heads/master: 8177a420ed7c16c171ed3c3aec5b0676db38c247 diff --git a/trunk/include/linux/mmzone.h b/trunk/include/linux/mmzone.h index a23923ba8263..28601fdfcdb2 100644 --- a/trunk/include/linux/mmzone.h +++ b/trunk/include/linux/mmzone.h @@ -717,6 +717,19 @@ typedef struct pglist_data { struct task_struct *kswapd; /* Protected by lock_memory_hotplug() */ int kswapd_max_order; 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; #define node_present_pages(nid) (NODE_DATA(nid)->node_present_pages) diff --git a/trunk/mm/page_alloc.c b/trunk/mm/page_alloc.c index 5953dc2d196f..ef025e20dbee 100644 --- a/trunk/mm/page_alloc.c +++ b/trunk/mm/page_alloc.c @@ -4449,6 +4449,11 @@ static void __paginginit free_area_init_core(struct pglist_data *pgdat, int ret; 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->pfmemalloc_wait); pgdat_page_cgroup_init(pgdat);