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 A4AB4C6FD1C for ; Thu, 23 Mar 2023 04:32:57 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 36A026B0072; Thu, 23 Mar 2023 00:32:57 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 319FE6B0074; Thu, 23 Mar 2023 00:32:57 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 1E1FA6B0075; Thu, 23 Mar 2023 00:32:57 -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 0F6856B0072 for ; Thu, 23 Mar 2023 00:32:57 -0400 (EDT) Received: from smtpin15.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id DA77540261 for ; Thu, 23 Mar 2023 04:32:56 +0000 (UTC) X-FDA: 80598892752.15.A61FF4A Received: from mail-yb1-f182.google.com (mail-yb1-f182.google.com [209.85.219.182]) by imf19.hostedemail.com (Postfix) with ESMTP id 275B41A0009 for ; Thu, 23 Mar 2023 04:32:54 +0000 (UTC) Authentication-Results: imf19.hostedemail.com; dkim=pass header.d=google.com header.s=20210112 header.b=FIzImCYR; spf=pass (imf19.hostedemail.com: domain of shakeelb@google.com designates 209.85.219.182 as permitted sender) smtp.mailfrom=shakeelb@google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1679545975; 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=wrIDK0fVrbx7cxzc4APSQQIB8Tdld7ibFj4Oysy8xfU=; b=Xmyy4IHEUq2cdgNSENlvr3+GBEjkDgJjaJMsltphQk7oNvxc0FMqoZbT6UDZDwvB5T2z/+ us7nrrPdYpkKnZlAmd88RwdMd35V09wG/9Z6qybP6U0YAb99mI4ML9SDy47BM3dAb6eLb1 14ugaeZNVIXBGio3fJBrPqk12v3WkOI= ARC-Authentication-Results: i=1; imf19.hostedemail.com; dkim=pass header.d=google.com header.s=20210112 header.b=FIzImCYR; spf=pass (imf19.hostedemail.com: domain of shakeelb@google.com designates 209.85.219.182 as permitted sender) smtp.mailfrom=shakeelb@google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1679545975; a=rsa-sha256; cv=none; b=lPhavqJVldClCYhocKgreHnHSTZHV33S/gBSsYoJ9ldnHnbLqIQ2Kc+KolM9LFx2gJziC7 tXUuQJuVsnML1WvTrnA5q0wlMH36b/zHSPjPziPV4eRr3s5Z7ohVR8paDrYVjHSSmgDb3D m4w1EspqGnKpBGCXzMsX0izM+/GsQ6E= Received: by mail-yb1-f182.google.com with SMTP id p204so12342832ybc.12 for ; Wed, 22 Mar 2023 21:32:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; t=1679545974; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=wrIDK0fVrbx7cxzc4APSQQIB8Tdld7ibFj4Oysy8xfU=; b=FIzImCYRhfKjUT9pnu01dLLA4HDQ3BXtcjgTBHFJpnBLcGZGoGO939DvVsE0ACCLBD HAUrEyMh7dQYQpfiSzh1z2T4aoliQXDY2PtH8zUgWHZJ+Wlzj09Hc57J7+LzbWPLwJ30 QPFFiP3KO6t2VwC9VgJYqd0EckGB6umtsMwnb3yJ2JSFju2Dm4jDvh5VHkd965tUFaZj W+NjP9qTR3O5ZH/o08OwnNf2A5eKq4nOVV2mM+FZmrLAYG0SehoQ+EDazL9xDG8TNlTx kCxHR0bIyEU/UZVe+dMYjlb9si4q45Gfnc1KLNTqhs8UX7jHYv+TWSPptwMfEaiMEV+x pf/g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1679545974; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=wrIDK0fVrbx7cxzc4APSQQIB8Tdld7ibFj4Oysy8xfU=; b=G9DNKkyMa7cLtDdXd8PfmF33O3Pop2mZgGet/w8GjbeDa6Q/qq/JS3kz+gNYlsyiaM wH8o7lFCgGlgMlRc38NCbw0cnIcFKGFLRRQVpW5OydJnCxK5T1TstCwsSZderFnKxzz1 GHWWD/6bKGrgzI3ysCzgAX28SaCPPE6mhVUbLCXrE53uGm8uUluzna0+OG5aHaBUZyyL K9/DQN6VV85N/CbObnh7LcfzCLUH/viu6dqwQ/jj58rfNziuSb/6IqHqOfM3drZcjZQY L2ysh18Yo+NTyPwJhiDIKthdUDotU3Yz8BfPVjdHkcuwFy+p5Jj145mazsSMLIDRqeFS wMTw== X-Gm-Message-State: AAQBX9cm7E2b+2VrWi8HXJLzRbty9PWUdmrG5eSEi3DGOCE71ddxMTQ5 A8xbBnbjTY/R510qhMRACegKzvvWFBd2Rs/1jz2qTg== X-Google-Smtp-Source: AKy350bBapFtyhRnakDaJ98q33qTvbSPFQRHJsMpzHiU7Bnmsr7y712jIsm3XTxYLrqYW8o05V+X9pbP9RgpV7J2f94= X-Received: by 2002:a25:800d:0:b0:b3b:6576:b22b with SMTP id m13-20020a25800d000000b00b3b6576b22bmr1372177ybk.12.1679545974133; Wed, 22 Mar 2023 21:32:54 -0700 (PDT) MIME-Version: 1.0 References: <20230323040037.2389095-1-yosryahmed@google.com> <20230323040037.2389095-3-yosryahmed@google.com> In-Reply-To: <20230323040037.2389095-3-yosryahmed@google.com> From: Shakeel Butt Date: Wed, 22 Mar 2023 21:32:42 -0700 Message-ID: Subject: Re: [RFC PATCH 2/7] memcg: do not disable interrupts when holding stats_flush_lock To: Yosry Ahmed Cc: Tejun Heo , Josef Bacik , Jens Axboe , Zefan Li , Johannes Weiner , Michal Hocko , Roman Gushchin , Muchun Song , Andrew Morton , Vasily Averin , cgroups@vger.kernel.org, linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, bpf@vger.kernel.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspam-User: X-Rspamd-Server: rspam04 X-Rspamd-Queue-Id: 275B41A0009 X-Stat-Signature: coajo7s4z6iq4uzt4r7tcfkcqpg9rzxe X-HE-Tag: 1679545974-526651 X-HE-Meta: U2FsdGVkX19ZVEiqf36kjZ7Mlj2EDjc+BxikKJ2/x90e9IybuQEyOqrjTVhoMTpgu/GTwCyYxN1o6UmefO65SRU/72Xbt5lkD7ZdXqeVL+013BjvE7S40hHE0mWmXTsfxXLn+sARHSmwhOTA8fZOjBN10m+RKYxVMXfZgvjmylhU1PCnuhccX3YFvG3NJTttlQ70lbKLyPW4zAeygOhggWJmhLV5Oc/RRZX/4bRs/JPmPtI4TTixkfieA45+uUcjaQM/JnY7Lie2FcUdUe2YEBeMOuv8EAAPUe3+DqAI79OQOa+gQ4H0+5pk5sY83PnSGS6qTEts8gEG698s3nJQCv/GUZIofJbaASiPnTCxqgXo60ERHHlNdf++l6JDqmVQ1rM3LEXGd5ZmJQoSa0yx/o55o+1p0k6U/EoRernWh4A2SIg5FlRXoHqTwnNiixQ1o35Lgcpvyc4LkzZ4Wq/rvVP9zP/n4gj+o56OeUikhb92oYMBJ9NZtyFxq/NMcfxZK2GnieH1kZZiwKTyYI9I51CCZ9gZ75SxW0DVVw4PAntXTkX7eOJmjeNCUawfZzZseEXnGR8nnwwTdicg67hWjW90bzrlZKR6lrDKy/cn/RkxcOOtlKaCubM9rHKqReYjO58HeqUHDDcxzJ6YSt4AwuZQb69nTqpHAxK7mzrcHHKeiBij7xMrUKiIt5xgbcml45s2IKQfQn4SmYbaop4YLPh31GGbdZYSykf5AJPsQQmGCvRSsb2i9e/dO8H5TNaRHERmv9aeLXF9DaTQmd6bC/Qtlzchp+a+IoF39lzukWG1fA13qoux5sVvkAd4El76nuvWUlmN1mlKAzJuehkF8g+q4sATVmILFgTC8DR9yOujHHGO93BTc1l9SkXrL/ekYzR7DjBOByWdhdV4udgpudupmnm8cx6uW5IZCR3sPy3bDYkozvPwRhV9720b0eR5EyfigY41NtQT65rzFgh 3MS/CYRf 8It5RSuMii69sAm7f6wb1sPgobjYv3Q24cqxGIlObNatLDn5m1H1S/LVv39HhjKYJ/CVUOsKN1nH8RbQxfdDRbLmt8ZZ8Ap3SC1T2BL4NCe9uxjVbIeC2Ad/VXbnOIkPeIiA90k8aiHweTj+hLGbzJJQol2VjNi2K5nCLkmD0BQqLh6WMQ4ubR9Um3Inj2VrIoMIA+tVJuxS/PXvb1pCNQB1bKxCFup+BeaWKgxjtyJhdOSxrkrfWZay/LK2dqG0LpcPdHi0d7+Wzye6aOVEIfMwZzyvwsdxx+nvog7IprNkJZlMVAQfuKbOlQobSmJdu+p6t 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: On Wed, Mar 22, 2023 at 9:00=E2=80=AFPM Yosry Ahmed = wrote: > > The rstat flushing code was modified so that we do not disable interrupts > when we hold the global rstat lock. Do the same for stats_flush_lock on > the memcg side to avoid unnecessarily disabling interrupts throughout > flushing. > > Since the code exclusively uses trylock to acquire this lock, it should > be fine to hold from interrupt contexts or normal contexts without > disabling interrupts as a deadlock cannot occur. For interrupt contexts > we will return immediately without flushing anyway. > > Signed-off-by: Yosry Ahmed > --- > mm/memcontrol.c | 10 ++++++---- > 1 file changed, 6 insertions(+), 4 deletions(-) > > diff --git a/mm/memcontrol.c b/mm/memcontrol.c > index 5abffe6f8389..e0e92b38fa51 100644 > --- a/mm/memcontrol.c > +++ b/mm/memcontrol.c > @@ -636,15 +636,17 @@ static inline void memcg_rstat_updated(struct mem_c= group *memcg, int val) > > static void __mem_cgroup_flush_stats(void) > { > - unsigned long flag; > - > - if (!spin_trylock_irqsave(&stats_flush_lock, flag)) > + /* > + * This lock can be acquired from interrupt context, How? What's the code path? > but we only acquire > + * using trylock so it should be fine as we cannot cause a deadlo= ck. > + */ > + if (!spin_trylock(&stats_flush_lock)) > return; > > flush_next_time =3D jiffies_64 + 2*FLUSH_TIME; > cgroup_rstat_flush_irqsafe(root_mem_cgroup->css.cgroup); > atomic_set(&stats_flush_threshold, 0); > - spin_unlock_irqrestore(&stats_flush_lock, flag); > + spin_unlock(&stats_flush_lock); > } > > void mem_cgroup_flush_stats(void) > -- > 2.40.0.rc1.284.g88254d51c5-goog >