MM: deferred zero cleaning on Linux CPUs
Change-Id: Icdb8ac807688533be7a95b7101edfd904250cd02
This commit is contained in:
committed by
Masamichi Takagi
parent
e7b8aeb4f7
commit
41f5c0bdde
@@ -55,6 +55,8 @@ typedef unsigned long ihk_mc_ap_flag;
|
||||
|
||||
#define IHK_MC_AP_BANDWIDTH 0x010000
|
||||
#define IHK_MC_AP_LATENCY 0x020000
|
||||
/* Only allocate from the closest NUMA node */
|
||||
#define IHK_MC_AP_NUMA_STRICT 0x040000
|
||||
|
||||
#define IHK_MC_PG_KERNEL 0
|
||||
#define IHK_MC_PG_USER 1
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
#define __HEADER_GENERIC_IHK_PAGE_ALLOC
|
||||
|
||||
#include <list.h>
|
||||
#include <llist.h>
|
||||
#include <rbtree.h>
|
||||
|
||||
/* XXX: Physical memory management shouldn't be part of IHK */
|
||||
@@ -31,9 +32,11 @@ struct node_distance {
|
||||
struct free_chunk {
|
||||
unsigned long addr, size;
|
||||
struct rb_node node;
|
||||
struct llist_node list;
|
||||
};
|
||||
#endif
|
||||
|
||||
|
||||
struct ihk_mc_numa_node {
|
||||
int id;
|
||||
int linux_numa_id;
|
||||
@@ -41,17 +44,17 @@ struct ihk_mc_numa_node {
|
||||
struct list_head allocators;
|
||||
struct node_distance *nodes_by_distance;
|
||||
#ifdef IHK_RBTREE_ALLOCATOR
|
||||
struct rb_root zeroed_chunks;
|
||||
ihk_atomic_t zeroing_workers;
|
||||
ihk_atomic_t nr_to_zero_pages;
|
||||
struct llist_head zeroed_list;
|
||||
struct llist_head to_zero_list;
|
||||
struct rb_root free_chunks;
|
||||
mcs_lock_node_t lock;
|
||||
|
||||
unsigned long nr_pages;
|
||||
/*
|
||||
* nr_free_pages: all freed pages
|
||||
* nr_zeroed_pages: zeroed free pages
|
||||
* Invariant: nr_zeroed_pages <= nr_free_pages
|
||||
* nr_free_pages: all freed pages, zeroed if zero_at_free
|
||||
*/
|
||||
unsigned long nr_zeroed_pages;
|
||||
unsigned long nr_free_pages;
|
||||
unsigned long min_addr;
|
||||
unsigned long max_addr;
|
||||
|
||||
Reference in New Issue
Block a user