mirror of
https://github.com/torvalds/linux.git
synced 2026-07-28 01:55:51 +02:00
mm/damon/core: introduce DAMON_FILTER_TYPE_MEMCG
Belonging memory cgoup is another data attribute that can be useful to monitor. Introduce a new DAMON filter type, namely DAMON_FILTER_TYPE_MEMCG, for monitoring of this attribute. Link: https://lore.kernel.org/20260518234119.97569-23-sj@kernel.org Signed-off-by: SeongJae Park <sj@kernel.org> Cc: David Hildenbrand <david@kernel.org> Cc: Jonathan Corbet <corbet@lwn.net> Cc: Liam R. Howlett <liam@infradead.org> Cc: Lorenzo Stoakes <ljs@kernel.org> Cc: "Masami Hiramatsu (Google)" <mhiramat@kernel.org> Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> Cc: Michal Hocko <mhocko@suse.com> Cc: Mike Rapoport <rppt@kernel.org> Cc: Shuah Khan <shuah@kernel.org> Cc: Steven Rostedt <rostedt@goodmis.org> Cc: Suren Baghdasaryan <surenb@google.com> Cc: Vlastimil Babka <vbabka@kernel.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
parent
69a7435201
commit
d9f23f2f82
|
|
@ -742,9 +742,11 @@ struct damon_intervals_goal {
|
|||
* enum damon_filter_type - Type of &struct damon_filter
|
||||
*
|
||||
* @DAMON_FILTER_TYPE_ANON: Anonymous pages.
|
||||
* @DAMON_FILTER_TYPE_MEMCG: Specific memcg's pages.
|
||||
*/
|
||||
enum damon_filter_type {
|
||||
DAMON_FILTER_TYPE_ANON,
|
||||
DAMON_FILTER_TYPE_MEMCG,
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
@ -753,12 +755,16 @@ enum damon_filter_type {
|
|||
* @type: Type of the region.
|
||||
* @matching: Whether this filter is for the type-matching ones.
|
||||
* @allow: Whether the @type-@matching ones should pass this filter.
|
||||
* @memcg_id: Memcg id of the question if @type is DAMON_FILTER_MEMCG.
|
||||
* @list: Siblings list.
|
||||
*/
|
||||
struct damon_filter {
|
||||
enum damon_filter_type type;
|
||||
bool matching;
|
||||
bool allow;
|
||||
union {
|
||||
u64 memcg_id;
|
||||
};
|
||||
struct list_head list;
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -1430,6 +1430,13 @@ static void damon_commit_filter(struct damon_filter *dst,
|
|||
dst->type = src->type;
|
||||
dst->matching = src->matching;
|
||||
dst->allow = src->allow;
|
||||
switch (dst->type) {
|
||||
case DAMON_FILTER_TYPE_MEMCG:
|
||||
dst->memcg_id = src->memcg_id;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static int damon_commit_filters(struct damon_probe *dst,
|
||||
|
|
@ -1454,6 +1461,13 @@ static int damon_commit_filters(struct damon_probe *dst,
|
|||
src_filter->matching, src_filter->allow);
|
||||
if (!new_filter)
|
||||
return -ENOMEM;
|
||||
switch (src_filter->type) {
|
||||
case DAMON_FILTER_TYPE_MEMCG:
|
||||
new_filter->memcg_id = src_filter->memcg_id;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
damon_add_filter(dst, new_filter);
|
||||
}
|
||||
return 0;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user