workingset.c (a9dd0a83104c01269ea36a9b4ec42b51edf85427) workingset.c (ef8f2327996b5c20f11420f64e439e87c7a01604)
1/*
2 * Workingset detection
3 *
4 * Copyright (C) 2013 Red Hat, Inc., Johannes Weiner
5 */
6
7#include <linux/memcontrol.h>
8#include <linux/writeback.h>

--- 204 unchanged lines hidden (view full) ---

213 unsigned long eviction;
214 struct lruvec *lruvec;
215
216 /* Page is fully exclusive and pins page->mem_cgroup */
217 VM_BUG_ON_PAGE(PageLRU(page), page);
218 VM_BUG_ON_PAGE(page_count(page), page);
219 VM_BUG_ON_PAGE(!PageLocked(page), page);
220
1/*
2 * Workingset detection
3 *
4 * Copyright (C) 2013 Red Hat, Inc., Johannes Weiner
5 */
6
7#include <linux/memcontrol.h>
8#include <linux/writeback.h>

--- 204 unchanged lines hidden (view full) ---

213 unsigned long eviction;
214 struct lruvec *lruvec;
215
216 /* Page is fully exclusive and pins page->mem_cgroup */
217 VM_BUG_ON_PAGE(PageLRU(page), page);
218 VM_BUG_ON_PAGE(page_count(page), page);
219 VM_BUG_ON_PAGE(!PageLocked(page), page);
220
221 lruvec = mem_cgroup_lruvec(zone->zone_pgdat, zone, memcg);
221 lruvec = mem_cgroup_lruvec(zone->zone_pgdat, memcg);
222 eviction = atomic_long_inc_return(&lruvec->inactive_age);
223 return pack_shadow(memcgid, zone, eviction);
224}
225
226/**
227 * workingset_refault - evaluate the refault of a previously evicted page
228 * @shadow: shadow entry of the evicted page
229 *

--- 32 unchanged lines hidden (view full) ---

262 * would be better if the root_mem_cgroup existed in all
263 * configurations instead.
264 */
265 memcg = mem_cgroup_from_id(memcgid);
266 if (!mem_cgroup_disabled() && !memcg) {
267 rcu_read_unlock();
268 return false;
269 }
222 eviction = atomic_long_inc_return(&lruvec->inactive_age);
223 return pack_shadow(memcgid, zone, eviction);
224}
225
226/**
227 * workingset_refault - evaluate the refault of a previously evicted page
228 * @shadow: shadow entry of the evicted page
229 *

--- 32 unchanged lines hidden (view full) ---

262 * would be better if the root_mem_cgroup existed in all
263 * configurations instead.
264 */
265 memcg = mem_cgroup_from_id(memcgid);
266 if (!mem_cgroup_disabled() && !memcg) {
267 rcu_read_unlock();
268 return false;
269 }
270 lruvec = mem_cgroup_lruvec(zone->zone_pgdat, zone, memcg);
270 lruvec = mem_cgroup_lruvec(zone->zone_pgdat, memcg);
271 refault = atomic_long_read(&lruvec->inactive_age);
272 active_file = lruvec_lru_size(lruvec, LRU_ACTIVE_FILE);
273 rcu_read_unlock();
274
275 /*
276 * The unsigned subtraction here gives an accurate distance
277 * across inactive_age overflows in most cases.
278 *

--- 35 unchanged lines hidden (view full) ---

314 * mark_page_accessed() on VDSO pages.
315 *
316 * XXX: See workingset_refault() - this should return
317 * root_mem_cgroup even for !CONFIG_MEMCG.
318 */
319 memcg = page_memcg_rcu(page);
320 if (!mem_cgroup_disabled() && !memcg)
321 goto out;
271 refault = atomic_long_read(&lruvec->inactive_age);
272 active_file = lruvec_lru_size(lruvec, LRU_ACTIVE_FILE);
273 rcu_read_unlock();
274
275 /*
276 * The unsigned subtraction here gives an accurate distance
277 * across inactive_age overflows in most cases.
278 *

--- 35 unchanged lines hidden (view full) ---

314 * mark_page_accessed() on VDSO pages.
315 *
316 * XXX: See workingset_refault() - this should return
317 * root_mem_cgroup even for !CONFIG_MEMCG.
318 */
319 memcg = page_memcg_rcu(page);
320 if (!mem_cgroup_disabled() && !memcg)
321 goto out;
322 lruvec = mem_cgroup_lruvec(page_pgdat(page), page_zone(page), memcg);
322 lruvec = mem_cgroup_lruvec(page_pgdat(page), memcg);
323 atomic_long_inc(&lruvec->inactive_age);
324out:
325 rcu_read_unlock();
326}
327
328/*
329 * Shadow entries reflect the share of the working set that does not
330 * fit into memory, so their number depends on the access pattern of

--- 182 unchanged lines hidden ---
323 atomic_long_inc(&lruvec->inactive_age);
324out:
325 rcu_read_unlock();
326}
327
328/*
329 * Shadow entries reflect the share of the working set that does not
330 * fit into memory, so their number depends on the access pattern of

--- 182 unchanged lines hidden ---