* [PATCH V1 0/2] mm/damon: Do some small changes @ 2021-11-10 12:13 Xin Hao 2021-11-10 12:13 ` [PATCH V1 1/2] mm/damon: Unified access_check function naming rules Xin Hao 2021-11-10 12:13 ` [PATCH V1 2/2] mm/damon: Add 'age' of region tracepoint support Xin Hao 0 siblings, 2 replies; 5+ messages in thread From: Xin Hao @ 2021-11-10 12:13 UTC (permalink / raw) To: sjpark; +Cc: xhao, akpm, linux-mm, linux-kernel These two patches are mainly to do some small changes. Xin Hao (2): mm/damon: Unified access_check function naming rules mm/damon: Add 'age' of region tracepoint support include/trace/events/damon.h | 7 +++++-- mm/damon/vaddr.c | 8 ++++---- 2 files changed, 9 insertions(+), 6 deletions(-) -- 2.31.0 ^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH V1 1/2] mm/damon: Unified access_check function naming rules 2021-11-10 12:13 [PATCH V1 0/2] mm/damon: Do some small changes Xin Hao @ 2021-11-10 12:13 ` Xin Hao 2021-11-10 12:59 ` SeongJae Park 2021-11-10 12:13 ` [PATCH V1 2/2] mm/damon: Add 'age' of region tracepoint support Xin Hao 1 sibling, 1 reply; 5+ messages in thread From: Xin Hao @ 2021-11-10 12:13 UTC (permalink / raw) To: sjpark; +Cc: xhao, akpm, linux-mm, linux-kernel In damon/paddr.c file, two functions names start with underscore, static void __damon_pa_prepare_access_check(struct damon_ctx *ctx, struct damon_region *r) static void __damon_pa_prepare_access_check(struct damon_ctx *ctx, struct damon_region *r) In damon/vaddr.c file, there are also two functions with the same function, static void damon_va_prepare_access_check(struct damon_ctx *ctx, struct mm_struct *mm, struct damon_region *r) static void damon_va_check_access(struct damon_ctx *ctx, struct mm_struct *mm, struct damon_region *r) It makes sense to keep consistent, and it is not easy to be confused with the function that call them. Signed-off-by: Xin Hao <xhao@linux.alibaba.com> --- mm/damon/vaddr.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/mm/damon/vaddr.c b/mm/damon/vaddr.c index 35fe49080ee9..905e0fc8a8ec 100644 --- a/mm/damon/vaddr.c +++ b/mm/damon/vaddr.c @@ -409,7 +409,7 @@ static void damon_va_mkold(struct mm_struct *mm, unsigned long addr) * Functions for the access checking of the regions */ -static void damon_va_prepare_access_check(struct damon_ctx *ctx, +static void __damon_va_prepare_access_check(struct damon_ctx *ctx, struct mm_struct *mm, struct damon_region *r) { r->sampling_addr = damon_rand(r->ar.start, r->ar.end); @@ -428,7 +428,7 @@ void damon_va_prepare_access_checks(struct damon_ctx *ctx) if (!mm) continue; damon_for_each_region(r, t) - damon_va_prepare_access_check(ctx, mm, r); + __damon_va_prepare_access_check(ctx, mm, r); mmput(mm); } } @@ -514,7 +514,7 @@ static bool damon_va_young(struct mm_struct *mm, unsigned long addr, * mm 'mm_struct' for the given virtual address space * r the region to be checked */ -static void damon_va_check_access(struct damon_ctx *ctx, +static void __damon_va_check_access(struct damon_ctx *ctx, struct mm_struct *mm, struct damon_region *r) { static struct mm_struct *last_mm; @@ -550,7 +550,7 @@ unsigned int damon_va_check_accesses(struct damon_ctx *ctx) if (!mm) continue; damon_for_each_region(r, t) { - damon_va_check_access(ctx, mm, r); + __damon_va_check_access(ctx, mm, r); max_nr_accesses = max(r->nr_accesses, max_nr_accesses); } mmput(mm); -- 2.31.0 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH V1 1/2] mm/damon: Unified access_check function naming rules 2021-11-10 12:13 ` [PATCH V1 1/2] mm/damon: Unified access_check function naming rules Xin Hao @ 2021-11-10 12:59 ` SeongJae Park 0 siblings, 0 replies; 5+ messages in thread From: SeongJae Park @ 2021-11-10 12:59 UTC (permalink / raw) To: Xin Hao; +Cc: sjpark, akpm, linux-mm, linux-kernel On Wed, 10 Nov 2021 20:13:13 +0800 Xin Hao <xhao@linux.alibaba.com> wrote: > In damon/paddr.c file, two functions names start with underscore, > static void __damon_pa_prepare_access_check(struct damon_ctx *ctx, > struct damon_region *r) > static void __damon_pa_prepare_access_check(struct damon_ctx *ctx, > struct damon_region *r) > In damon/vaddr.c file, there are also two functions with the same function, > static void damon_va_prepare_access_check(struct damon_ctx *ctx, > struct mm_struct *mm, struct damon_region *r) > static void damon_va_check_access(struct damon_ctx *ctx, > struct mm_struct *mm, struct damon_region *r) > > It makes sense to keep consistent, and it is not easy to be confused with > the function that call them. > > Signed-off-by: Xin Hao <xhao@linux.alibaba.com> Reviewed-by: SeongJae Park <sj@kernel.org> Thanks, SJ [...] ^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH V1 2/2] mm/damon: Add 'age' of region tracepoint support 2021-11-10 12:13 [PATCH V1 0/2] mm/damon: Do some small changes Xin Hao 2021-11-10 12:13 ` [PATCH V1 1/2] mm/damon: Unified access_check function naming rules Xin Hao @ 2021-11-10 12:13 ` Xin Hao 2021-11-10 13:16 ` SeongJae Park 1 sibling, 1 reply; 5+ messages in thread From: Xin Hao @ 2021-11-10 12:13 UTC (permalink / raw) To: sjpark; +Cc: xhao, akpm, linux-mm, linux-kernel In patch "mm/damon: add a tracepoint", it adds a tracepoint for DAMON, it can monitor each region for each aggregation interval, Now the region add a new 'age' variable, some primitive would calculate the priority of each region as a weight, there put it into tracepoint, so we can easily track the change of its value through perf or damon-tools. Signed-off-by: Xin Hao <xhao@linux.alibaba.com> --- include/trace/events/damon.h | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/include/trace/events/damon.h b/include/trace/events/damon.h index 2f422f4f1fb9..99ffa601e351 100644 --- a/include/trace/events/damon.h +++ b/include/trace/events/damon.h @@ -22,6 +22,7 @@ TRACE_EVENT(damon_aggregated, __field(unsigned long, start) __field(unsigned long, end) __field(unsigned int, nr_accesses) + __field(unsigned int, age) ), TP_fast_assign( @@ -30,11 +31,13 @@ TRACE_EVENT(damon_aggregated, __entry->start = r->ar.start; __entry->end = r->ar.end; __entry->nr_accesses = r->nr_accesses; + __entry->age = r->age; ), - TP_printk("target_id=%lu nr_regions=%u %lu-%lu: %u", + TP_printk("target_id=%lu nr_regions=%u %lu-%lu: %u %u", __entry->target_id, __entry->nr_regions, - __entry->start, __entry->end, __entry->nr_accesses) + __entry->start, __entry->end, + __entry->nr_accesses, __entry->age) ); #endif /* _TRACE_DAMON_H */ -- 2.31.0 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH V1 2/2] mm/damon: Add 'age' of region tracepoint support 2021-11-10 12:13 ` [PATCH V1 2/2] mm/damon: Add 'age' of region tracepoint support Xin Hao @ 2021-11-10 13:16 ` SeongJae Park 0 siblings, 0 replies; 5+ messages in thread From: SeongJae Park @ 2021-11-10 13:16 UTC (permalink / raw) To: Xin Hao; +Cc: sjpark, akpm, linux-mm, linux-kernel On Wed, 10 Nov 2021 20:13:14 +0800 Xin Hao <xhao@linux.alibaba.com> wrote: > In patch "mm/damon: add a tracepoint", it adds a > tracepoint for DAMON, it can monitor each region > for each aggregation interval, Now the region add > a new 'age' variable, some primitive would calculate > the priority of each region as a weight, there put it > into tracepoint, so we can easily track the change of > its value through perf or damon-tools. DAMON calculates the age using the address range and nr_accesses of the region, which are already in the tracepoint. In other words, user space can calculate the age on their own. Therefore I thought putting age in the tracepoint as adding unnecessary information, at the moment of the implementation. Of course, I would missing some use cases that need this information in the tracepoint. Furthermore, adding just one more value in the tracepoint wouldn't incur a real issue. But, I'd like to know why this is necessary and how much benefit it provides. Xin, could you please share that? Thanks, SJ > > Signed-off-by: Xin Hao <xhao@linux.alibaba.com> > --- > include/trace/events/damon.h | 7 +++++-- > 1 file changed, 5 insertions(+), 2 deletions(-) > > diff --git a/include/trace/events/damon.h b/include/trace/events/damon.h > index 2f422f4f1fb9..99ffa601e351 100644 > --- a/include/trace/events/damon.h > +++ b/include/trace/events/damon.h > @@ -22,6 +22,7 @@ TRACE_EVENT(damon_aggregated, > __field(unsigned long, start) > __field(unsigned long, end) > __field(unsigned int, nr_accesses) > + __field(unsigned int, age) > ), > > TP_fast_assign( > @@ -30,11 +31,13 @@ TRACE_EVENT(damon_aggregated, > __entry->start = r->ar.start; > __entry->end = r->ar.end; > __entry->nr_accesses = r->nr_accesses; > + __entry->age = r->age; > ), > > - TP_printk("target_id=%lu nr_regions=%u %lu-%lu: %u", > + TP_printk("target_id=%lu nr_regions=%u %lu-%lu: %u %u", > __entry->target_id, __entry->nr_regions, > - __entry->start, __entry->end, __entry->nr_accesses) > + __entry->start, __entry->end, > + __entry->nr_accesses, __entry->age) > ); > > #endif /* _TRACE_DAMON_H */ > -- > 2.31.0 ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2021-11-10 13:16 UTC | newest] Thread overview: 5+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2021-11-10 12:13 [PATCH V1 0/2] mm/damon: Do some small changes Xin Hao 2021-11-10 12:13 ` [PATCH V1 1/2] mm/damon: Unified access_check function naming rules Xin Hao 2021-11-10 12:59 ` SeongJae Park 2021-11-10 12:13 ` [PATCH V1 2/2] mm/damon: Add 'age' of region tracepoint support Xin Hao 2021-11-10 13:16 ` SeongJae Park
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox