From patchwork Sat Mar 8 03:46:00 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Martin Liu X-Patchwork-Id: 14007402 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 46367C28B25 for ; Sat, 8 Mar 2025 03:46:31 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 21D84280002; Fri, 7 Mar 2025 22:46:30 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 1A49D280001; Fri, 7 Mar 2025 22:46:30 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 02081280002; Fri, 7 Mar 2025 22:46:29 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id D0479280001 for ; Fri, 7 Mar 2025 22:46:29 -0500 (EST) Received: from smtpin23.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id 37AA41C9F01 for ; Sat, 8 Mar 2025 03:46:30 +0000 (UTC) X-FDA: 83196996540.23.9EFC187 Received: from mail-pl1-f202.google.com (mail-pl1-f202.google.com [209.85.214.202]) by imf30.hostedemail.com (Postfix) with ESMTP id 7576A80004 for ; Sat, 8 Mar 2025 03:46:28 +0000 (UTC) Authentication-Results: imf30.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=Fy8QBI3G; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf30.hostedemail.com: domain of 3k73LZwkKCIIro0sgxzotmuumrk.iusrot03-ssq1giq.uxm@flex--liumartin.bounces.google.com designates 209.85.214.202 as permitted sender) smtp.mailfrom=3k73LZwkKCIIro0sgxzotmuumrk.iusrot03-ssq1giq.uxm@flex--liumartin.bounces.google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1741405588; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=kfcaNFAbCYfNTjpD5XRwdqCXVY7RMkDJJWe0/7joWPU=; b=NJf0YAhnw9i5oU5Ncpa2Jw2tg5quIbkaaN+R09etst+7uL/nGNQNN/3jmIcKOMirGwX6uw M8aj3b0JXJQi247v67My+oiWLicf3NhX9GQEh7nCJoWls1hWxkwixLoESSHxJw0iI5K7F8 viCcwXXyTst/upvSwzUtV/+g547TZ6Y= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1741405588; a=rsa-sha256; cv=none; b=pKrEVmUa8Gqer7k/GDowmHIgZB+DexQrC6UMDzJ1wY8k4OIbBK9BsCJ/0WcKJ1mPpzFjyJ QcoOdUDaKy8TJoNe7tcHeICcJUKB5cv6gPu5tWOfOWLe6uc59BTY0GLpAS8GkRbyyPZwp3 EmcuE5atelkUKdMwBO2C2kNlYIz0Dqc= ARC-Authentication-Results: i=1; imf30.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=Fy8QBI3G; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf30.hostedemail.com: domain of 3k73LZwkKCIIro0sgxzotmuumrk.iusrot03-ssq1giq.uxm@flex--liumartin.bounces.google.com designates 209.85.214.202 as permitted sender) smtp.mailfrom=3k73LZwkKCIIro0sgxzotmuumrk.iusrot03-ssq1giq.uxm@flex--liumartin.bounces.google.com Received: by mail-pl1-f202.google.com with SMTP id d9443c01a7336-225107fbdc7so5709415ad.0 for ; Fri, 07 Mar 2025 19:46:28 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1741405587; x=1742010387; darn=kvack.org; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=kfcaNFAbCYfNTjpD5XRwdqCXVY7RMkDJJWe0/7joWPU=; b=Fy8QBI3GPiLvcAsCUXZ7rZr1cZb4PFwQUJOHaXykaUwgrHBW9fDH9qzu7NpZZLzwOl BCVAsMlLyXUE0dQ0eX8mGpLQtpTvPlVGbu3JazUHBFc01cxDYqDjiUse/Q1k8aXDoKoF AiUKRFGWkNhQZWjLcMxuRN943ihPRIPFbqVOtBvgyV0+abqGV8I0XsrluTJ4X70N/ghX o8phN7gz3mQU3fpagcMYvBMB+W0agvWxLOgV8Afn9RPFF3+atrNX3+BBkhByZYtwuNx1 CzGJY4MPaVVcS+8Og2ONqnAPKpUEpATnpySi8tIeJQjpWb0dZcvOrA6adilwwxP8XTDn wkGQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741405587; x=1742010387; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=kfcaNFAbCYfNTjpD5XRwdqCXVY7RMkDJJWe0/7joWPU=; b=tamYM4BB9y3y7U45Zc62YkiZ8Cb+JgVZybcdKrgNRXloZ9bjmQml1NkRKo3kU2YHJH /OgIiSS+DjqCU35N+lhDFZM5YOulYYpZNhm246Ch9X2adGgXw3c5fIYQLVKZsrp/7sQb poEjbzBRzp2ih6NYXI3VSZj+kEgEjRePg4kTWnavgt2rHTYFTuLaJXj8WzAI/1gdfFXM 5nH5ASsVgdprBO1JfHyRuIhDP7ifFNeDUDIz2xQPq/eGV0f4O5DLzIYUto38dNPGJWpQ ra7KNJKJZkTFH1ohEFGJhL7izJCJd88BcLEahdIp1QT2u0+SNfCttCFjkwkiaG2lf3IC JbyQ== X-Forwarded-Encrypted: i=1; AJvYcCWvyNgLOjbhcTG+Qa9OwSWjBpRLyugS1MqfHCOxb5G1HIhs+TE9yCmmz+jxZaIn9tHb2844k2RBeg==@kvack.org X-Gm-Message-State: AOJu0YxV4lMDYM1aO4moutu1HS6+5UZFO0p52C+GpDrVHY0jSQyAtaDK Ox3X1kHzZENcAa5QL6le5vhPM7dGAf/f9Vtc0xquMQ5LSVyRfWYBx9FBGB91bmSSLEiEluk/TQ2 Dq3NECZWfvgdLIQ== X-Google-Smtp-Source: AGHT+IFCL+xm6Fwg3GqZF4t7IcDWhXaeSW59E7l9ZedWtDNW1moTHW3B12u5d+oN/PjxO3PrRmaNltxn/VkJRYw= X-Received: from pfri16.prod.google.com ([2002:aa7:8d90:0:b0:736:46a8:452d]) (user=liumartin job=prod-delivery.src-stubby-dispatcher) by 2002:a05:6a00:2e88:b0:736:3fa8:cf7b with SMTP id d2e1a72fcca58-736aaa229dbmr7080003b3a.13.1741405587197; Fri, 07 Mar 2025 19:46:27 -0800 (PST) Date: Sat, 8 Mar 2025 03:46:00 +0000 In-Reply-To: <20250308034606.2036033-1-liumartin@google.com> Mime-Version: 1.0 References: <20250308034606.2036033-1-liumartin@google.com> X-Mailer: git-send-email 2.49.0.rc0.332.g42c0ae87b1-goog Message-ID: <20250308034606.2036033-2-liumartin@google.com> Subject: [PATCH v2 1/3] mm/page_alloc: Add trace event for per-zone watermark setup From: Martin Liu To: Steven Rostedt , Masami Hiramatsu , Mathieu Desnoyers , Andrew Morton Cc: Martin Liu , linux-kernel@vger.kernel.org, linux-trace-kernel@vger.kernel.org, linux-mm@kvack.org X-Rspam-User: X-Rspamd-Queue-Id: 7576A80004 X-Rspamd-Server: rspam08 X-Stat-Signature: jtr7d4y7yhhpprkwzjbrg83p5pg6tnng X-HE-Tag: 1741405588-725503 X-HE-Meta: U2FsdGVkX184iKh8oPVbP3QqYz3eLozNUqnNkP5BSMm/q8lQ7HpyKT5ouCIBCQpHJqMqUuzssClEhl0Z4q6pIjZEf6DI8jGpW5kh6lyStaDX6nKQQxcilKjLYQ6FmgYxfI6vrlnZH5UHDVcWvyTUZXWQyxidLmLs+hhpyDJFwoeIML/B2DfjFAUckK93A53BLLavU5HeNBkOPkC5vUUC83S9fN+WbM+He4kIXM7qGvmQIEeJHn3ZBqxOmnLSfi0kNIrZlvfHhYSe1extoDZi8nK6/aDjxlNU0sdwBES4EOqbe9t2J6FDiDeTB0ZIjILaB7Uo7XruUm7852hT3f7GCMw9gXnPkMs4iozrb3RLwhFNls+K34L/JWphVuAnD3aMyrLouL+5nlFxH8wSwTNxbuAyqIatA/FWtz3qc3nyt7/Nw/2a4DqoBBi+nlj5OWw4NDsqsY4GCGkY/FpTf3s+svhRwPVi249dR1Q4sUIYiG/duWKEkYUuk5gS8Him8b3pmE0vZKuaYjnaggdS6xjtIrEMuiFStWcEyov+ksUQZ3cZr66pMESIbMJSO60wAPB5pJ75gV6pPOOjwt+P0c1YM3SM1nLD+1cKaZTTc40UYAcJ5CrzdwptRy2WSHGFxhhjUHWXOt6Y9tfvMnAmWLylnoIVd9dOvmo5enYz7C360kQRirWlJsWLZLY3bNusewpKKtCAGsDaObNsVpvEkCAmltzzMHXYwkRES9ZHwJO4DnNVon9IusVLr+XvXzVrz0G6Zx9D9DE3ANtjiJOuZmCv08hNKio9CUElXc4+Lg4nZk4X5WBca0+Si9FV28oD3BGClect8OBzqxf9s+wFx9keR7CmuEYAT6NZAAb3so3Y9X95Sj7gOp8tvUWTugJnPgKFZ3aHm6cmIvNlqtN/hXWnNIHYDVhL51FczQXzMWG9271H32z3V+PlcLUqNEF5ycSkOkVN6AXkyGxY4FK1xYj 92p19+hF yG+Tinrf8STSFu9oJTTAtrF1Koza7i7q6KoMHEz/UJzcjkvJYRgDvg/99FXaPn0SaxdEBxheyOeqkED5k6Id7Wr4GvTqMQjnwqO0TSDTN4HVhJ4Sn/v55cqeDdkErud6Y6QW0+tuTlcA5sHasUhNUIC5W17C1c2rtCgkNXhmU5RI2i+Hqe9rB/LAThfPoyyZMFEQj9tlvCqAk9dKydkU4BRyuYCf6XeqPmIKvSDkv1J3vNa8BqyIWe/PDQfC0zxlQX6U6iVtoRvqNDMq/uQyxjivHas0+QzAKZtKh747BCeE7U50HzyDok1sRSz/IxBo873JbRi6DHUujaJHzPkQ9LKkaqKr0Jk7TJ3NldSyiqZrZdd4MpZx9pYxQNmRZtFe0lUQKkrznkwzje5yujTpqWekDmm27VEYPqVLKUihGHpXdtaFP5aH6Yx70vLtJqGwuVUMov83dQyxyCYtsagSGEa04O8U07kNJPD4LshrVeutb+/XZa7neJYbSSIG0ITkOc7qqevSAWRRABBGXcYvGW5vy880qJ3FjgcAzV6AQgIQyPPe22cQ/7cP1dLNObjNsiRmk4+HsbNOxrvBwmNCozkRtLXnl2yhllETkLWikQHD3+90= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: This commit introduces the `mm_setup_per_zone_wmarks` trace event, which provides detailed insights into the kernel's per-zone watermark configuration, offering precise timing and the ability to correlate watermark changes with specific kernel events. While `/proc/zoneinfo` provides some information about zone watermarks, this trace event offers: 1. The ability to link watermark changes to specific kernel events and logic. 2. The ability to capture rapid or short-lived changes in watermarks that may be missed by user-space polling 3. Diagnosing unexpected kswapd activity or excessive direct reclaim triggered by rapidly changing watermarks. Signed-off-by: Martin Liu Acked-by: David Rientjes --- include/trace/events/kmem.h | 33 +++++++++++++++++++++++++++++++++ mm/page_alloc.c | 1 + 2 files changed, 34 insertions(+) diff --git a/include/trace/events/kmem.h b/include/trace/events/kmem.h index b37eb0a7060f..5fd392dae503 100644 --- a/include/trace/events/kmem.h +++ b/include/trace/events/kmem.h @@ -342,6 +342,39 @@ TRACE_EVENT(mm_alloc_contig_migrate_range_info, __entry->nr_mapped) ); +TRACE_EVENT(mm_setup_per_zone_wmarks, + + TP_PROTO(struct zone *zone), + + TP_ARGS(zone), + + TP_STRUCT__entry( + __field(int, node_id) + __string(name, zone->name) + __field(unsigned long, watermark_min) + __field(unsigned long, watermark_low) + __field(unsigned long, watermark_high) + __field(unsigned long, watermark_promo) + ), + + TP_fast_assign( + __entry->node_id = zone->zone_pgdat->node_id; + __assign_str(name); + __entry->watermark_min = zone->_watermark[WMARK_MIN]; + __entry->watermark_low = zone->_watermark[WMARK_LOW]; + __entry->watermark_high = zone->_watermark[WMARK_HIGH]; + __entry->watermark_promo = zone->_watermark[WMARK_PROMO]; + ), + + TP_printk("node_id=%d zone name=%s watermark min=%lu low=%lu high=%lu promo=%lu", + __entry->node_id, + __get_str(name), + __entry->watermark_min, + __entry->watermark_low, + __entry->watermark_high, + __entry->watermark_promo) +); + /* * Required for uniquely and securely identifying mm in rss_stat tracepoint. */ diff --git a/mm/page_alloc.c b/mm/page_alloc.c index 579789600a3c..50893061db66 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -5920,6 +5920,7 @@ static void __setup_per_zone_wmarks(void) zone->_watermark[WMARK_LOW] = min_wmark_pages(zone) + tmp; zone->_watermark[WMARK_HIGH] = low_wmark_pages(zone) + tmp; zone->_watermark[WMARK_PROMO] = high_wmark_pages(zone) + tmp; + trace_mm_setup_per_zone_wmarks(zone); spin_unlock_irqrestore(&zone->lock, flags); }