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 --- |