ANDROID: vendor_hooks: add hooks in mem_cgroup subsystem
Add hooks to tune memory policy based on mem_cgroup. Bug: 192052083 Signed-off-by: Liujie Xie <xieliujie@oppo.com> Change-Id: Ica1a5409eed86fbd466edd2c7557f94972a40175
This commit is contained in:

committed by
Suren Baghdasaryan

parent
726468dd4a
commit
1cdcf76b15
@@ -101,6 +101,22 @@ struct mem_cgroup;
|
|||||||
DECLARE_HOOK(android_vh_vmpressure,
|
DECLARE_HOOK(android_vh_vmpressure,
|
||||||
TP_PROTO(struct mem_cgroup *memcg, bool *bypass),
|
TP_PROTO(struct mem_cgroup *memcg, bool *bypass),
|
||||||
TP_ARGS(memcg, bypass));
|
TP_ARGS(memcg, bypass));
|
||||||
|
DECLARE_HOOK(android_vh_mem_cgroup_alloc,
|
||||||
|
TP_PROTO(struct mem_cgroup *memcg),
|
||||||
|
TP_ARGS(memcg));
|
||||||
|
DECLARE_HOOK(android_vh_mem_cgroup_free,
|
||||||
|
TP_PROTO(struct mem_cgroup *memcg),
|
||||||
|
TP_ARGS(memcg));
|
||||||
|
DECLARE_HOOK(android_vh_mem_cgroup_id_remove,
|
||||||
|
TP_PROTO(struct mem_cgroup *memcg),
|
||||||
|
TP_ARGS(memcg));
|
||||||
|
struct cgroup_subsys_state;
|
||||||
|
DECLARE_HOOK(android_vh_mem_cgroup_css_online,
|
||||||
|
TP_PROTO(struct cgroup_subsys_state *css, struct mem_cgroup *memcg),
|
||||||
|
TP_ARGS(css, memcg));
|
||||||
|
DECLARE_HOOK(android_vh_mem_cgroup_css_offline,
|
||||||
|
TP_PROTO(struct cgroup_subsys_state *css, struct mem_cgroup *memcg),
|
||||||
|
TP_ARGS(css, memcg));
|
||||||
/* macro versions of hooks are no longer required */
|
/* macro versions of hooks are no longer required */
|
||||||
|
|
||||||
#endif /* _TRACE_HOOK_MM_H */
|
#endif /* _TRACE_HOOK_MM_H */
|
||||||
|
@@ -67,6 +67,7 @@
|
|||||||
#include <linux/uaccess.h>
|
#include <linux/uaccess.h>
|
||||||
|
|
||||||
#include <trace/events/vmscan.h>
|
#include <trace/events/vmscan.h>
|
||||||
|
#include <trace/hooks/mm.h>
|
||||||
|
|
||||||
struct cgroup_subsys memory_cgrp_subsys __read_mostly;
|
struct cgroup_subsys memory_cgrp_subsys __read_mostly;
|
||||||
EXPORT_SYMBOL(memory_cgrp_subsys);
|
EXPORT_SYMBOL(memory_cgrp_subsys);
|
||||||
@@ -5148,6 +5149,7 @@ static DEFINE_IDR(mem_cgroup_idr);
|
|||||||
static void mem_cgroup_id_remove(struct mem_cgroup *memcg)
|
static void mem_cgroup_id_remove(struct mem_cgroup *memcg)
|
||||||
{
|
{
|
||||||
if (memcg->id.id > 0) {
|
if (memcg->id.id > 0) {
|
||||||
|
trace_android_vh_mem_cgroup_id_remove(memcg);
|
||||||
idr_remove(&mem_cgroup_idr, memcg->id.id);
|
idr_remove(&mem_cgroup_idr, memcg->id.id);
|
||||||
memcg->id.id = 0;
|
memcg->id.id = 0;
|
||||||
}
|
}
|
||||||
@@ -5244,6 +5246,7 @@ static void __mem_cgroup_free(struct mem_cgroup *memcg)
|
|||||||
{
|
{
|
||||||
int node;
|
int node;
|
||||||
|
|
||||||
|
trace_android_vh_mem_cgroup_free(memcg);
|
||||||
for_each_node(node)
|
for_each_node(node)
|
||||||
free_mem_cgroup_per_node_info(memcg, node);
|
free_mem_cgroup_per_node_info(memcg, node);
|
||||||
free_percpu(memcg->vmstats_percpu);
|
free_percpu(memcg->vmstats_percpu);
|
||||||
@@ -5327,6 +5330,7 @@ static struct mem_cgroup *mem_cgroup_alloc(void)
|
|||||||
memcg->deferred_split_queue.split_queue_len = 0;
|
memcg->deferred_split_queue.split_queue_len = 0;
|
||||||
#endif
|
#endif
|
||||||
idr_replace(&mem_cgroup_idr, memcg, memcg->id.id);
|
idr_replace(&mem_cgroup_idr, memcg, memcg->id.id);
|
||||||
|
trace_android_vh_mem_cgroup_alloc(memcg);
|
||||||
return memcg;
|
return memcg;
|
||||||
fail:
|
fail:
|
||||||
mem_cgroup_id_remove(memcg);
|
mem_cgroup_id_remove(memcg);
|
||||||
@@ -5416,6 +5420,7 @@ static int mem_cgroup_css_online(struct cgroup_subsys_state *css)
|
|||||||
/* Online state pins memcg ID, memcg ID pins CSS */
|
/* Online state pins memcg ID, memcg ID pins CSS */
|
||||||
refcount_set(&memcg->id.ref, 1);
|
refcount_set(&memcg->id.ref, 1);
|
||||||
css_get(css);
|
css_get(css);
|
||||||
|
trace_android_vh_mem_cgroup_css_online(css, memcg);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -5424,6 +5429,7 @@ static void mem_cgroup_css_offline(struct cgroup_subsys_state *css)
|
|||||||
struct mem_cgroup *memcg = mem_cgroup_from_css(css);
|
struct mem_cgroup *memcg = mem_cgroup_from_css(css);
|
||||||
struct mem_cgroup_event *event, *tmp;
|
struct mem_cgroup_event *event, *tmp;
|
||||||
|
|
||||||
|
trace_android_vh_mem_cgroup_css_offline(css, memcg);
|
||||||
/*
|
/*
|
||||||
* Unregister events and notify userspace.
|
* Unregister events and notify userspace.
|
||||||
* Notify userspace about cgroup removing only after rmdir of cgroup
|
* Notify userspace about cgroup removing only after rmdir of cgroup
|
||||||
|
Reference in New Issue
Block a user