mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-28 18:51:56 -04:00
memcg: make memcg's file mapped consistent with global VM
In global VM, FILE_MAPPED is used but memcg uses MAPPED_FILE. This makes grep difficult. Replace memcg's MAPPED_FILE with FILE_MAPPED And in global VM, mapped shared memory is accounted into FILE_MAPPED. But memcg doesn't. fix it. Note: page_is_file_cache() just checks SwapBacked or not. So, we need to check PageAnon. Cc: Balbir Singh <[email protected]> Reviewed-by: Daisuke Nishimura <[email protected]> Signed-off-by: KAMEZAWA Hiroyuki <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
This commit is contained in:
parent
cdec2e4265
commit
d8046582d5
3 changed files with 13 additions and 16 deletions
|
|
@ -67,7 +67,7 @@ enum mem_cgroup_stat_index {
|
|||
*/
|
||||
MEM_CGROUP_STAT_CACHE, /* # of pages charged as cache */
|
||||
MEM_CGROUP_STAT_RSS, /* # of pages charged as anon rss */
|
||||
MEM_CGROUP_STAT_MAPPED_FILE, /* # of pages charged as file rss */
|
||||
MEM_CGROUP_STAT_FILE_MAPPED, /* # of pages charged as file rss */
|
||||
MEM_CGROUP_STAT_PGPGIN_COUNT, /* # of pages paged in */
|
||||
MEM_CGROUP_STAT_PGPGOUT_COUNT, /* # of pages paged out */
|
||||
MEM_CGROUP_STAT_EVENTS, /* sum of pagein + pageout for internal use */
|
||||
|
|
@ -1227,7 +1227,7 @@ static void record_last_oom(struct mem_cgroup *mem)
|
|||
* Currently used to update mapped file statistics, but the routine can be
|
||||
* generalized to update other statistics as well.
|
||||
*/
|
||||
void mem_cgroup_update_mapped_file_stat(struct page *page, int val)
|
||||
void mem_cgroup_update_file_mapped(struct page *page, int val)
|
||||
{
|
||||
struct mem_cgroup *mem;
|
||||
struct mem_cgroup_stat *stat;
|
||||
|
|
@ -1235,9 +1235,6 @@ void mem_cgroup_update_mapped_file_stat(struct page *page, int val)
|
|||
int cpu;
|
||||
struct page_cgroup *pc;
|
||||
|
||||
if (!page_is_file_cache(page))
|
||||
return;
|
||||
|
||||
pc = lookup_page_cgroup(page);
|
||||
if (unlikely(!pc))
|
||||
return;
|
||||
|
|
@ -1257,7 +1254,7 @@ void mem_cgroup_update_mapped_file_stat(struct page *page, int val)
|
|||
stat = &mem->stat;
|
||||
cpustat = &stat->cpustat[cpu];
|
||||
|
||||
__mem_cgroup_stat_add_safe(cpustat, MEM_CGROUP_STAT_MAPPED_FILE, val);
|
||||
__mem_cgroup_stat_add_safe(cpustat, MEM_CGROUP_STAT_FILE_MAPPED, val);
|
||||
done:
|
||||
unlock_page_cgroup(pc);
|
||||
}
|
||||
|
|
@ -1654,18 +1651,18 @@ static int mem_cgroup_move_account(struct page_cgroup *pc,
|
|||
mem_cgroup_charge_statistics(from, pc, false);
|
||||
|
||||
page = pc->page;
|
||||
if (page_is_file_cache(page) && page_mapped(page)) {
|
||||
if (page_mapped(page) && !PageAnon(page)) {
|
||||
cpu = smp_processor_id();
|
||||
/* Update mapped_file data for mem_cgroup "from" */
|
||||
stat = &from->stat;
|
||||
cpustat = &stat->cpustat[cpu];
|
||||
__mem_cgroup_stat_add_safe(cpustat, MEM_CGROUP_STAT_MAPPED_FILE,
|
||||
__mem_cgroup_stat_add_safe(cpustat, MEM_CGROUP_STAT_FILE_MAPPED,
|
||||
-1);
|
||||
|
||||
/* Update mapped_file data for mem_cgroup "to" */
|
||||
stat = &to->stat;
|
||||
cpustat = &stat->cpustat[cpu];
|
||||
__mem_cgroup_stat_add_safe(cpustat, MEM_CGROUP_STAT_MAPPED_FILE,
|
||||
__mem_cgroup_stat_add_safe(cpustat, MEM_CGROUP_STAT_FILE_MAPPED,
|
||||
1);
|
||||
}
|
||||
|
||||
|
|
@ -2889,7 +2886,7 @@ static int mem_cgroup_reset(struct cgroup *cont, unsigned int event)
|
|||
enum {
|
||||
MCS_CACHE,
|
||||
MCS_RSS,
|
||||
MCS_MAPPED_FILE,
|
||||
MCS_FILE_MAPPED,
|
||||
MCS_PGPGIN,
|
||||
MCS_PGPGOUT,
|
||||
MCS_SWAP,
|
||||
|
|
@ -2933,8 +2930,8 @@ static int mem_cgroup_get_local_stat(struct mem_cgroup *mem, void *data)
|
|||
s->stat[MCS_CACHE] += val * PAGE_SIZE;
|
||||
val = mem_cgroup_read_stat(&mem->stat, MEM_CGROUP_STAT_RSS);
|
||||
s->stat[MCS_RSS] += val * PAGE_SIZE;
|
||||
val = mem_cgroup_read_stat(&mem->stat, MEM_CGROUP_STAT_MAPPED_FILE);
|
||||
s->stat[MCS_MAPPED_FILE] += val * PAGE_SIZE;
|
||||
val = mem_cgroup_read_stat(&mem->stat, MEM_CGROUP_STAT_FILE_MAPPED);
|
||||
s->stat[MCS_FILE_MAPPED] += val * PAGE_SIZE;
|
||||
val = mem_cgroup_read_stat(&mem->stat, MEM_CGROUP_STAT_PGPGIN_COUNT);
|
||||
s->stat[MCS_PGPGIN] += val;
|
||||
val = mem_cgroup_read_stat(&mem->stat, MEM_CGROUP_STAT_PGPGOUT_COUNT);
|
||||
|
|
|
|||
Loading…
Reference in a new issue