From mboxrd@z Thu Jan 1 00:00:00 1970 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 29F3AC83F1D for ; Tue, 15 Jul 2025 07:01:25 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id B9C968D0002; Tue, 15 Jul 2025 03:01:24 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id B72A28D0001; Tue, 15 Jul 2025 03:01:24 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id AAF4E8D0002; Tue, 15 Jul 2025 03:01:24 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id 9C6668D0001 for ; Tue, 15 Jul 2025 03:01:24 -0400 (EDT) Received: from smtpin20.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id 1B54B1A03D1 for ; Tue, 15 Jul 2025 07:01:24 +0000 (UTC) X-FDA: 83665602888.20.446EF4A Received: from mail-internal.sh.cz (mail-internal.sh.cz [95.168.196.40]) by imf03.hostedemail.com (Postfix) with ESMTP id EB54020013 for ; Tue, 15 Jul 2025 07:01:21 +0000 (UTC) Authentication-Results: imf03.hostedemail.com; dkim=pass header.d=cdn77.com header.s=dkim2019 header.b=be1IOfdj; dmarc=pass (policy=quarantine) header.from=cdn77.com; spf=pass (imf03.hostedemail.com: domain of daniel.sedlak@cdn77.com designates 95.168.196.40 as permitted sender) smtp.mailfrom=daniel.sedlak@cdn77.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1752562882; 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:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=jnqC9yKLQ2Y78KFCIs80rSm9Z70HqexDU7UQ8kaOjM8=; b=D5OjgMiovRkBY6DoxM22WcZT7ctKiTvY8RBvwkJ1t9AFEG5x85ndwfhEG3Wa8XcwJONeBZ o31h5D33PqdFfybI3fYnGcpcnyKnJ5SvQFr3fWn9ecqt0UQjZh3Z4dVm8/RkZ9s9iNBBtf /LjYB4dpqErl3RvaLwkUNhmXMIpI/pg= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1752562882; a=rsa-sha256; cv=none; b=He+r8qT+JLZ+lfZTUHXaW+kBRAOlCfdKUv6Tsk1oMOGcmg4lo+Tbwmzc8ckMrGNlRyCpX/ id4XPzGncCN7P3Y6pYj/C/NJWR44XN0Y4NR2xFodQMZsIF0DP2/qaH0HJS+wwxb0IZm8Fc A8kIV6ErMdQ4IBLgL6RIS1vO4uVyYT8= ARC-Authentication-Results: i=1; imf03.hostedemail.com; dkim=pass header.d=cdn77.com header.s=dkim2019 header.b=be1IOfdj; dmarc=pass (policy=quarantine) header.from=cdn77.com; spf=pass (imf03.hostedemail.com: domain of daniel.sedlak@cdn77.com designates 95.168.196.40 as permitted sender) smtp.mailfrom=daniel.sedlak@cdn77.com DKIM-Signature: a=rsa-sha256; t=1752562879; x=1753167679; s=dkim2019; d=cdn77.com; c=relaxed/relaxed; v=1; bh=jnqC9yKLQ2Y78KFCIs80rSm9Z70HqexDU7UQ8kaOjM8=; h=From:Subject:Date:Message-ID:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding:In-Reply-To:References; b=be1IOfdjGAzP+kD7y8Cso6J7NJjNDI/jBjkPI8vQRwpBhqEzVt00XZm3Y07RMXngyPfC0B/NTb7qpFfYuOlmgQchrikp/5DYL+qqjaiR9gX8tpfqUVwHn6Ipj4cLUR+4pstFAwBUvPyvesROoOtWIkJUIF3SeYAiEvI4Vsx8O6Q= Received: from [10.0.5.28] ([95.168.203.222]) by mail.sh.cz (14.1.0 build 16 ) with ASMTP (SSL) id 202507150901160877; Tue, 15 Jul 2025 09:01:16 +0200 Message-ID: <8a7cea99-0ab5-4dba-bc89-62d4819531eb@cdn77.com> Date: Tue, 15 Jul 2025 09:01:15 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v2 net-next 2/2] mm/vmpressure: add tracepoint for socket pressure detection To: Kuniyuki Iwashima Cc: "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , Jonathan Corbet , Neal Cardwell , David Ahern , Andrew Morton , Shakeel Butt , Yosry Ahmed , linux-mm@kvack.org, netdev@vger.kernel.org, Matyas Hurtik , Daniel Sedlak References: <20250714143613.42184-1-daniel.sedlak@cdn77.com> <20250714143613.42184-3-daniel.sedlak@cdn77.com> Content-Language: en-US From: Daniel Sedlak In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-CTCH: RefID="str=0001.0A006378.6875FCDE.0019,ss=1,re=0.000,recu=0.000,reip=0.000,cl=1,cld=1,fgs=0"; Spam="Unknown"; VOD="Unknown" X-Rspamd-Queue-Id: EB54020013 X-Stat-Signature: nfnzwr1qu1qyfpjfm7o3dfqobopjh3uq X-Rspam-User: X-Rspamd-Server: rspam11 X-HE-Tag: 1752562881-212910 X-HE-Meta: U2FsdGVkX18p6FHAmLMvcvIpLHoTaYc99A7P1JSZcaUczS6fsEo5t/5o8BICS17g0pycI+p9PuQlZUYxmpH9iaEhrPc2MTHNTO9WpK95rB3up1Mm50Utvz4LavAjm4kW/EGY8sndncbhDwhUwjqKXxn73z13uqc3WRbDDy8qUIyJvHsqbWCMslbaoaamwlxnBPMUaf3v3l1XfJgFvx0BV73b49sfLfWBCE23Ep/A48CXiaYh672SXq9UaDNb+e1ZqEKF6nzLckwwQDbpMsdGqq+aWgmVeLF37BZdi5pwebxj1kulLvEhlBeKTiSkQdLVSnKkDYBQkF0EkZ6wGHbrUEw96n9b9MB6r9dSbIB+NKGF1d4Mxjs8PIgTps6r3koByNPnrk8y+hK+iEhEDhV4wfx1mmeuzijvvhy3Af9F3Yn7BhveyKd2OLv5vc/OP74SmePx0RS388kRqXuOn4ifFTyiu4l1m1Arz68oiBet283ZdD2I44Uj7lwUjUZPNWVox8nDi/91XiZtFRGCnJphvQmNE/6PZo8jIikGbV5e2NwudBJEyFzOK2VGt5FkvjVoesZIbgTL8ZFrVYv+wE4/ddQF/Ut39oRgDJfy67l3vOz7YI1MxZcQFaFpu0dhgbBVPmxdPFxUL7rOgVlxVSi9CAXlYPi+pNKj6KekjNaBAz71TMVKs/KvuSTvjwbN0Z7jyoDhonINsjBJ903W/s6htUifB7r7eb6v6j122xiLSzte9Dorkzy3/r8djuShWWIKZATNPe3diYgRfLUU95tUobAsIdwGWy5/g4Fep1pIecRjlXKlmi9z/7fBlvX70uPkTa6DH087Hsj3tJR23vtw2nYp83q4/VhcYBFDbO2C5LNZGkSz7vJUFEvey6mc8a0R2lczoHWZ5Fk= 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: Hi Kuniyuki, On 7/14/25 8:02 PM, Kuniyuki Iwashima wrote: >> +TRACE_EVENT(memcg_socket_under_pressure, >> + >> + TP_PROTO(const struct mem_cgroup *memcg, unsigned long scanned, >> + unsigned long reclaimed), >> + >> + TP_ARGS(memcg, scanned, reclaimed), >> + >> + TP_STRUCT__entry( >> + __field(u64, id) >> + __field(unsigned long, scanned) >> + __field(unsigned long, reclaimed) >> + ), >> + >> + TP_fast_assign( >> + __entry->id = cgroup_id(memcg->css.cgroup); >> + __entry->scanned = scanned; >> + __entry->reclaimed = reclaimed; >> + ), >> + >> + TP_printk("memcg_id=%llu scanned=%lu reclaimed=%lu", >> + __entry->id, > > Maybe a noob question: How can we translate the memcg ID > to the /sys/fs/cgroup/... path ? IMO this should be really named `cgroup_id` instead of `memcg_id`, but we kept the latter to keep consistency with the rest of the file. To find cgroup path you can use: - find /sys/fs/cgroup/ -inum `memcg_id`, and it will print "path" to the affected cgroup. - or you can use bpftrace tracepoint hooks and there is a helper function [1]. Or we can put the cgroup_path to the tracepoint instead of that ID, but I feel it can be too much overhead, the paths can be pretty long. Link: https://bpftrace.org/docs/latest#functions-cgroup_path [1] > It would be nice to place this patch first and the description of > patch 2 has how to use the new stat with this tracepoint. Sure, can do that. However, I am unsure how a good idea is to cross-reference commits, since each may go through a different tree because each commit is for a different subsystem. They would have to go through one tree, right? >> + __entry->scanned, >> + __entry->reclaimed) >> +); >> + >> #endif /* _TRACE_MEMCG_H */ >> >> /* This part must be outside protection */ >> diff --git a/mm/vmpressure.c b/mm/vmpressure.c >> index bd5183dfd879..aa9583066731 100644 >> --- a/mm/vmpressure.c >> +++ b/mm/vmpressure.c >> @@ -21,6 +21,8 @@ >> #include >> #include >> >> +#include >> + >> /* >> * The window size (vmpressure_win) is the number of scanned pages before >> * we try to analyze scanned/reclaimed ratio. So the window is used as a >> @@ -317,6 +319,7 @@ void vmpressure(gfp_t gfp, struct mem_cgroup *memcg, bool tree, >> * pressure events can occur. >> */ >> WRITE_ONCE(memcg->socket_pressure, jiffies + HZ); >> + trace_memcg_socket_under_pressure(memcg, scanned, reclaimed); > > This is triggered only when we enter the memory pressure state > and not when we leave the state, right ? Is it possible to issue > such an event ? AFAIK, the currently used API in the vmpressure function does not have anything like enter or leave the socket memory pressure state. It only periodically re-arms the socket pressure for a specific duration. So the current tracepoint is called when the socket pressure is re-armed. I am not sure how feasible it is to rewrite it so we have enter and leave logic. I am not that familiar with those code paths. Thanks! Daniel