Re: [PATCH v4 4/4] mm/page_owner: Record task command name

From: Waiman Long
Date: Thu Feb 03 2022 - 13:53:55 EST


On 2/3/22 07:10, Vlastimil Babka wrote:
On 2/2/22 17:53, Waiman Long wrote:
On 2/1/22 10:28, Michal Hocko wrote:
Cc Vlastimil

On Mon 31-01-22 17:03:28, Waiman Long wrote:
The page_owner information currently includes the pid of the calling
task. That is useful as long as the task is still running. Otherwise,
the number is meaningless. To have more information about the allocating
tasks that had exited by the time the page_owner information is
retrieved, we need to store the command name of the task.

Add a new comm field into page_owner structure to store the command name
and display it when the page_owner information is retrieved.
I completely agree that pid is effectivelly useless (if not misleading)
but is comm really telling all that much to compensate for the
additional storage required for _each_ page in the system?
Yes, it does add an extra 16 bytes per page overhead. The command name can
be useful if one want to find out which userspace command is responsible for
a problematic page allocation. Maybe we can remove pid from page_owner to
save 8 bytes as you also agree that this number is not that useful.
Pid could be used to correlate command instances (not perfectly if reuse
happens), but command name could have a higher chance to be useful. In my
experience the most useful were the stacktraces and gfp/order etc. anyway.
So I wouldn't be opposed replacing pid with comm. The mild size increase
should be acceptable, this is an opt-in feature for debugging sessions with
known tradeoff for memory and cpu overhead for the extra info.

Thanks for the information.

I floated around dropping pid just as a possible way to reduce overall memory overhead. I did not do that in my patch and I am not planning to post any patch unless everybody agree.

Cheer,
Longman