Re: [PATCH mm-unstable] mm/page_owner: record single timestamp value for high order allocations

From: Vlastimil Babka
Date: Wed Feb 08 2023 - 12:02:54 EST


On 1/21/23 17:50, Hyeonggon Yoo wrote:
> When allocating a high-order page, separate allocation timestamp is
> recorded for each sub-page resulting in different timestamp values between
> them.
>
> This behavior is not consistent with the behavior when recording free
> timestamp and caused confusion when analyzing memory dumps. Record single
> timestamp for the entire allocation, aligning with the behavior for
> free timestamps.
>
> Signed-off-by: Hyeonggon Yoo <42.hyeyoo@xxxxxxxxx>

Acked-by: Vlastimil Babka <vbabka@xxxxxxx>

> ---
> mm/page_owner.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/mm/page_owner.c b/mm/page_owner.c
> index f0553bedb39d..80dc8f4050fa 100644
> --- a/mm/page_owner.c
> +++ b/mm/page_owner.c
> @@ -163,6 +163,7 @@ static inline void __set_page_owner_handle(struct page_ext *page_ext,
> {
> struct page_owner *page_owner;
> int i;
> + u64 ts_nsec = local_clock();
>
> for (i = 0; i < (1 << order); i++) {
> page_owner = get_page_owner(page_ext);
> @@ -172,7 +173,7 @@ static inline void __set_page_owner_handle(struct page_ext *page_ext,
> page_owner->last_migrate_reason = -1;
> page_owner->pid = current->pid;
> page_owner->tgid = current->tgid;
> - page_owner->ts_nsec = local_clock();
> + page_owner->ts_nsec = ts_nsec;
> strscpy(page_owner->comm, current->comm,
> sizeof(page_owner->comm));
> __set_bit(PAGE_EXT_OWNER, &page_ext->flags);