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>
(cherry picked from commit 1cdcf76b1532ca8092bb6601f45d27c1ed19f448)
(cherry picked from commit 7af5027889c760a4e02abf7cbd1b95685af4b233)

Change-Id: Ica1a5409eed86fbd466edd2c7557f94972a40175
Signed-off-by: lvwenhuan <lvwenhuan@oppo.com>
This commit is contained in:
Liujie Xie 2021-07-03 12:09:04 +08:00 committed by Treehugger Robot
parent ed1e17fc4b
commit 032458b9cb
3 changed files with 29 additions and 0 deletions

View file

@ -255,6 +255,11 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_binder_read_done);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_binder_preset);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_alloc_uid);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_free_user);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mem_cgroup_id_remove);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mem_cgroup_css_offline);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mem_cgroup_css_online);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mem_cgroup_free);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mem_cgroup_alloc);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_cpuset_fork);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_binder_alloc_new_buf_locked);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_binder_reply);

View file

@ -103,6 +103,24 @@ DECLARE_RESTRICTED_HOOK(android_rvh_ctl_dirty_rate,
TP_PROTO(void *unused),
TP_ARGS(unused), 1);
struct mem_cgroup;
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));
#endif /* _TRACE_HOOK_MM_H */
/* This part must be outside protection */

View file

@ -72,6 +72,7 @@
#include <linux/uaccess.h>
#include <trace/events/vmscan.h>
#include <trace/hooks/mm.h>
struct cgroup_subsys memory_cgrp_subsys __read_mostly;
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)
{
if (memcg->id.id > 0) {
trace_android_vh_mem_cgroup_id_remove(memcg);
idr_remove(&mem_cgroup_idr, memcg->id.id);
memcg->id.id = 0;
}
@ -5246,6 +5248,7 @@ static void __mem_cgroup_free(struct mem_cgroup *memcg)
{
int node;
trace_android_vh_mem_cgroup_free(memcg);
for_each_node(node)
free_mem_cgroup_per_node_info(memcg, node);
kfree(memcg->vmstats);
@ -5319,6 +5322,7 @@ static struct mem_cgroup *mem_cgroup_alloc(void)
#endif
idr_replace(&mem_cgroup_idr, memcg, memcg->id.id);
lru_gen_init_memcg(memcg);
trace_android_vh_mem_cgroup_alloc(memcg);
return memcg;
fail:
mem_cgroup_id_remove(memcg);
@ -5392,6 +5396,7 @@ static int mem_cgroup_css_online(struct cgroup_subsys_state *css)
queue_delayed_work(system_unbound_wq, &stats_flush_dwork,
2UL*HZ);
lru_gen_online_memcg(memcg);
trace_android_vh_mem_cgroup_css_online(css, memcg);
return 0;
offline_kmem:
memcg_offline_kmem(memcg);
@ -5405,6 +5410,7 @@ static void mem_cgroup_css_offline(struct cgroup_subsys_state *css)
struct mem_cgroup *memcg = mem_cgroup_from_css(css);
struct mem_cgroup_event *event, *tmp;
trace_android_vh_mem_cgroup_css_offline(css, memcg);
/*
* Unregister events and notify userspace.
* Notify userspace about cgroup removing only after rmdir of cgroup