| From: David Hildenbrand <david@redhat.com> |
| Subject: trace/events/page_ref: trace the raw page mapcount value |
| Date: Tue, 9 Apr 2024 21:22:58 +0200 |
| |
| We want to limit the use of page_mapcount() to the places where it is |
| absolutely necessary. We already trace raw page->refcount, raw |
| page->flags and raw page->mapping, and don't involve any folios. Let's |
| also trace the raw mapcount value that does not consider the entire |
| mapcount of large folios, and we don't add "1" to it. |
| |
| When dealing with typed folios, this makes a lot more sense. ... and |
| it's for debugging purposes only either way. |
| |
| Link: https://lkml.kernel.org/r/20240409192301.907377-16-david@redhat.com |
| Signed-off-by: David Hildenbrand <david@redhat.com> |
| Cc: Chris Zankel <chris@zankel.net> |
| Cc: Hugh Dickins <hughd@google.com> |
| Cc: John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de> |
| Cc: Jonathan Corbet <corbet@lwn.net> |
| Cc: Matthew Wilcox (Oracle) <willy@infradead.org> |
| Cc: Max Filippov <jcmvbkbc@gmail.com> |
| Cc: Miaohe Lin <linmiaohe@huawei.com> |
| Cc: Muchun Song <muchun.song@linux.dev> |
| Cc: Naoya Horiguchi <nao.horiguchi@gmail.com> |
| Cc: Peter Xu <peterx@redhat.com> |
| Cc: Richard Chang <richardycc@google.com> |
| Cc: Rich Felker <dalias@libc.org> |
| Cc: Ryan Roberts <ryan.roberts@arm.com> |
| Cc: Yang Shi <shy828301@gmail.com> |
| Cc: Yin Fengwei <fengwei.yin@intel.com> |
| Cc: Yoshinori Sato <ysato@users.sourceforge.jp> |
| Cc: Zi Yan <ziy@nvidia.com> |
| Signed-off-by: Andrew Morton <akpm@linux-foundation.org> |
| --- |
| |
| include/trace/events/page_ref.h | 4 ++-- |
| 1 file changed, 2 insertions(+), 2 deletions(-) |
| |
| --- a/include/trace/events/page_ref.h~trace-events-page_ref-trace-the-raw-page-mapcount-value |
| +++ a/include/trace/events/page_ref.h |
| @@ -30,7 +30,7 @@ DECLARE_EVENT_CLASS(page_ref_mod_templat |
| __entry->pfn = page_to_pfn(page); |
| __entry->flags = page->flags; |
| __entry->count = page_ref_count(page); |
| - __entry->mapcount = page_mapcount(page); |
| + __entry->mapcount = atomic_read(&page->_mapcount); |
| __entry->mapping = page->mapping; |
| __entry->mt = get_pageblock_migratetype(page); |
| __entry->val = v; |
| @@ -79,7 +79,7 @@ DECLARE_EVENT_CLASS(page_ref_mod_and_tes |
| __entry->pfn = page_to_pfn(page); |
| __entry->flags = page->flags; |
| __entry->count = page_ref_count(page); |
| - __entry->mapcount = page_mapcount(page); |
| + __entry->mapcount = atomic_read(&page->_mapcount); |
| __entry->mapping = page->mapping; |
| __entry->mt = get_pageblock_migratetype(page); |
| __entry->val = v; |
| _ |