Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 232015
b: refs/heads/master
c: e401f17
h: refs/heads/master
i:
  232013: 25a2440
  232011: 4650d39
  232007: d096969
  231999: 0625514
v: v3
  • Loading branch information
KAMEZAWA Hiroyuki authored and Linus Torvalds committed Jan 21, 2011
1 parent 5fca70e commit d0f66b6
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 14 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 20d9600cb407b0b55fef6ee814b60345c6f58264
refs/heads/master: e401f1761c0b01966e36e41e2c385d455a7b44ee
25 changes: 12 additions & 13 deletions trunk/mm/memcontrol.c
Original file line number Diff line number Diff line change
Expand Up @@ -600,23 +600,22 @@ static void mem_cgroup_swap_statistics(struct mem_cgroup *mem,
}

static void mem_cgroup_charge_statistics(struct mem_cgroup *mem,
struct page_cgroup *pc,
bool charge)
bool file, int nr_pages)
{
int val = (charge) ? 1 : -1;

preempt_disable();

if (PageCgroupCache(pc))
__this_cpu_add(mem->stat->count[MEM_CGROUP_STAT_CACHE], val);
if (file)
__this_cpu_add(mem->stat->count[MEM_CGROUP_STAT_CACHE], nr_pages);
else
__this_cpu_add(mem->stat->count[MEM_CGROUP_STAT_RSS], val);
__this_cpu_add(mem->stat->count[MEM_CGROUP_STAT_RSS], nr_pages);

if (charge)
/* pagein of a big page is an event. So, ignore page size */
if (nr_pages > 0)
__this_cpu_inc(mem->stat->count[MEM_CGROUP_STAT_PGPGIN_COUNT]);
else
__this_cpu_inc(mem->stat->count[MEM_CGROUP_STAT_PGPGOUT_COUNT]);
__this_cpu_inc(mem->stat->count[MEM_CGROUP_EVENTS]);

__this_cpu_add(mem->stat->count[MEM_CGROUP_EVENTS], nr_pages);

preempt_enable();
}
Expand Down Expand Up @@ -2115,7 +2114,7 @@ static void ____mem_cgroup_commit_charge(struct mem_cgroup *mem,
break;
}

mem_cgroup_charge_statistics(mem, pc, true);
mem_cgroup_charge_statistics(mem, PageCgroupCache(pc), 1);
}

static void __mem_cgroup_commit_charge(struct mem_cgroup *mem,
Expand Down Expand Up @@ -2186,14 +2185,14 @@ static void __mem_cgroup_move_account(struct page_cgroup *pc,
__this_cpu_inc(to->stat->count[MEM_CGROUP_STAT_FILE_MAPPED]);
preempt_enable();
}
mem_cgroup_charge_statistics(from, pc, false);
mem_cgroup_charge_statistics(from, PageCgroupCache(pc), -1);
if (uncharge)
/* This is not "cancel", but cancel_charge does all we need. */
mem_cgroup_cancel_charge(from, PAGE_SIZE);

/* caller should have done css_get */
pc->mem_cgroup = to;
mem_cgroup_charge_statistics(to, pc, true);
mem_cgroup_charge_statistics(to, PageCgroupCache(pc), 1);
/*
* We charges against "to" which may not have any tasks. Then, "to"
* can be under rmdir(). But in current implementation, caller of
Expand Down Expand Up @@ -2597,7 +2596,7 @@ __mem_cgroup_uncharge_common(struct page *page, enum charge_type ctype)
}

for (i = 0; i < count; i++)
mem_cgroup_charge_statistics(mem, pc + i, false);
mem_cgroup_charge_statistics(mem, PageCgroupCache(pc), -1);

ClearPageCgroupUsed(pc);
/*
Expand Down

0 comments on commit d0f66b6

Please sign in to comment.