mirror of
https://github.com/Fishwaldo/linux-bl808.git
synced 2025-06-17 20:25:19 +00:00
mm: memcontrol: re-use global VM event enum
The current duplication is a high-maintenance mess, and it's painful to add new items. This increases the size of the event array, but we'll eventually want most of the VM events tracked on a per-cgroup basis anyway. Link: http://lkml.kernel.org/r/20170404220148.28338-2-hannes@cmpxchg.org Signed-off-by: Johannes Weiner <hannes@cmpxchg.org> Acked-by: Vladimir Davydov <vdavydov.dev@gmail.com> Cc: Michal Hocko <mhocko@suse.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
31176c7815
commit
df0e53d061
2 changed files with 42 additions and 56 deletions
|
@ -69,20 +69,6 @@ struct mem_cgroup_reclaim_cookie {
|
|||
unsigned int generation;
|
||||
};
|
||||
|
||||
enum mem_cgroup_events_index {
|
||||
MEM_CGROUP_EVENTS_PGPGIN, /* # of pages paged in */
|
||||
MEM_CGROUP_EVENTS_PGPGOUT, /* # of pages paged out */
|
||||
MEM_CGROUP_EVENTS_PGFAULT, /* # of page-faults */
|
||||
MEM_CGROUP_EVENTS_PGMAJFAULT, /* # of major page-faults */
|
||||
MEM_CGROUP_EVENTS_NSTATS,
|
||||
/* default hierarchy events */
|
||||
MEMCG_LOW = MEM_CGROUP_EVENTS_NSTATS,
|
||||
MEMCG_HIGH,
|
||||
MEMCG_MAX,
|
||||
MEMCG_OOM,
|
||||
MEMCG_NR_EVENTS,
|
||||
};
|
||||
|
||||
/*
|
||||
* Per memcg event counter is incremented at every pagein/pageout. With THP,
|
||||
* it will be incremated by the number of pages. This counter is used for
|
||||
|
@ -106,6 +92,15 @@ struct mem_cgroup_id {
|
|||
atomic_t ref;
|
||||
};
|
||||
|
||||
/* Cgroup-specific events, on top of universal VM events */
|
||||
enum memcg_event_item {
|
||||
MEMCG_LOW = NR_VM_EVENT_ITEMS,
|
||||
MEMCG_HIGH,
|
||||
MEMCG_MAX,
|
||||
MEMCG_OOM,
|
||||
MEMCG_NR_EVENTS,
|
||||
};
|
||||
|
||||
struct mem_cgroup_stat_cpu {
|
||||
long count[MEMCG_NR_STAT];
|
||||
unsigned long events[MEMCG_NR_EVENTS];
|
||||
|
@ -288,9 +283,9 @@ static inline bool mem_cgroup_disabled(void)
|
|||
}
|
||||
|
||||
static inline void mem_cgroup_event(struct mem_cgroup *memcg,
|
||||
enum mem_cgroup_events_index idx)
|
||||
enum memcg_event_item event)
|
||||
{
|
||||
this_cpu_inc(memcg->stat->events[idx]);
|
||||
this_cpu_inc(memcg->stat->events[event]);
|
||||
cgroup_file_notify(&memcg->events_file);
|
||||
}
|
||||
|
||||
|
@ -575,20 +570,8 @@ static inline void mem_cgroup_count_vm_event(struct mm_struct *mm,
|
|||
|
||||
rcu_read_lock();
|
||||
memcg = mem_cgroup_from_task(rcu_dereference(mm->owner));
|
||||
if (unlikely(!memcg))
|
||||
goto out;
|
||||
|
||||
switch (idx) {
|
||||
case PGFAULT:
|
||||
this_cpu_inc(memcg->stat->events[MEM_CGROUP_EVENTS_PGFAULT]);
|
||||
break;
|
||||
case PGMAJFAULT:
|
||||
this_cpu_inc(memcg->stat->events[MEM_CGROUP_EVENTS_PGMAJFAULT]);
|
||||
break;
|
||||
default:
|
||||
BUG();
|
||||
}
|
||||
out:
|
||||
if (likely(memcg))
|
||||
this_cpu_inc(memcg->stat->events[idx]);
|
||||
rcu_read_unlock();
|
||||
}
|
||||
#ifdef CONFIG_TRANSPARENT_HUGEPAGE
|
||||
|
@ -608,7 +591,7 @@ static inline bool mem_cgroup_disabled(void)
|
|||
}
|
||||
|
||||
static inline void mem_cgroup_event(struct mem_cgroup *memcg,
|
||||
enum mem_cgroup_events_index idx)
|
||||
enum memcg_event_item event)
|
||||
{
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue