|
@@ -132,6 +132,7 @@ struct mem_cgroup {
|
|
*/
|
|
*/
|
|
spinlock_t lru_lock;
|
|
spinlock_t lru_lock;
|
|
unsigned long control_type; /* control RSS or RSS+Pagecache */
|
|
unsigned long control_type; /* control RSS or RSS+Pagecache */
|
|
|
|
+ int prev_priority; /* for recording reclaim priority */
|
|
/*
|
|
/*
|
|
* statistics.
|
|
* statistics.
|
|
*/
|
|
*/
|
|
@@ -451,6 +452,25 @@ long mem_cgroup_reclaim_imbalance(struct mem_cgroup *mem)
|
|
return (long) (active / (inactive + 1));
|
|
return (long) (active / (inactive + 1));
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+/*
|
|
|
|
+ * prev_priority control...this will be used in memory reclaim path.
|
|
|
|
+ */
|
|
|
|
+int mem_cgroup_get_reclaim_priority(struct mem_cgroup *mem)
|
|
|
|
+{
|
|
|
|
+ return mem->prev_priority;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+void mem_cgroup_note_reclaim_priority(struct mem_cgroup *mem, int priority)
|
|
|
|
+{
|
|
|
|
+ if (priority < mem->prev_priority)
|
|
|
|
+ mem->prev_priority = priority;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+void mem_cgroup_record_reclaim_priority(struct mem_cgroup *mem, int priority)
|
|
|
|
+{
|
|
|
|
+ mem->prev_priority = priority;
|
|
|
|
+}
|
|
|
|
+
|
|
unsigned long mem_cgroup_isolate_pages(unsigned long nr_to_scan,
|
|
unsigned long mem_cgroup_isolate_pages(unsigned long nr_to_scan,
|
|
struct list_head *dst,
|
|
struct list_head *dst,
|
|
unsigned long *scanned, int order,
|
|
unsigned long *scanned, int order,
|